scsi: libfc: send LOGO for PLOGI failure
When running in point-to-multipoint mode PLOGI is done after FLOGI completed. So when the PLOGI fails we should be sending a LOGO to the remote port. [mkp: Applied by hand] Signed-off-by: Hannes Reinecke <hare@suse.com> Reviewed-by: Chad Dupuis <chad.dupuis@qlogic.com> Tested-by: Chad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
166f310b62
commit
d391966a03
@ -547,16 +547,24 @@ static void fc_rport_timeout(struct work_struct *work)
|
||||
*/
|
||||
static void fc_rport_error(struct fc_rport_priv *rdata, struct fc_frame *fp)
|
||||
{
|
||||
struct fc_lport *lport = rdata->local_port;
|
||||
|
||||
FC_RPORT_DBG(rdata, "Error %ld in state %s, retries %d\n",
|
||||
IS_ERR(fp) ? -PTR_ERR(fp) : 0,
|
||||
fc_rport_state(rdata), rdata->retries);
|
||||
|
||||
switch (rdata->rp_state) {
|
||||
case RPORT_ST_FLOGI:
|
||||
case RPORT_ST_PLOGI:
|
||||
rdata->flags &= ~FC_RP_STARTED;
|
||||
fc_rport_enter_delete(rdata, RPORT_EV_FAILED);
|
||||
break;
|
||||
case RPORT_ST_PLOGI:
|
||||
if (lport->point_to_multipoint) {
|
||||
rdata->flags &= ~FC_RP_STARTED;
|
||||
fc_rport_enter_delete(rdata, RPORT_EV_FAILED);
|
||||
} else
|
||||
fc_rport_enter_logo(rdata);
|
||||
break;
|
||||
case RPORT_ST_RTV:
|
||||
fc_rport_enter_ready(rdata);
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user