/* Locking Note: The rport lock is expected to be held before calling this routine  */
static void fc_rport_error_retry(struct fc_rport_priv *, struct fc_frame *)
/* Locking Note: The rport lock is expected to be held before calling this routine  */
static void fc_rport_error_retry(struct fc_rport_priv *, struct fc_frame *)
{
	unsigned long delay = FC_DEF_E_D_TOV;
	if (PTR_ERR(fp) == -FC_EX_CLOSED)
		return fc_rport_error(rdata, fp);
	if (rdata->retries < rdata->local_port->max_rport_retry_count) {
		FC_RPORT_DBG(rdata, "Error %ld in state %s, retrying\n",
			     PTR_ERR(fp), fc_rport_state(rdata));
		rdata->retries++;
		if (PTR_ERR(fp) == -FC_EX_TIMEOUT)
			delay = 0;
		schedule_delayed_work(&rdata->retry_work, delay);
		return;
	}
	return fc_rport_error(rdata, fp);
}