]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
scsi: qla2xxx: Fix session state stuck in Get Port DB
authorQuinn Tran <quinn.tran@cavium.com>
Thu, 2 Aug 2018 20:16:50 +0000 (13:16 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 2 Aug 2018 20:56:18 +0000 (16:56 -0400)
This patch sets discovery state back to GNL (Get Name List) when session is
stuck at GPDB (Get Port DataBase). This will allow state machine to retry
login and move session state ahead in discovery.

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_init.c

index df55fd4e17164d2c14b8b7dd64a3f93567ee2bc7..bb565f556c2f147ee2ba4a9f7fa21d6809f68f2a 100644 (file)
@@ -1153,9 +1153,12 @@ void qla24xx_handle_gpdb_event(scsi_qla_host_t *vha, struct event_arg *ea)
        case PDS_PLOGI_COMPLETE:
        case PDS_PRLI_PENDING:
        case PDS_PRLI2_PENDING:
-               ql_dbg(ql_dbg_disc, vha, 0x20d5, "%s %d %8phC relogin needed\n",
-                   __func__, __LINE__, fcport->port_name);
-               set_bit(RELOGIN_NEEDED, &vha->dpc_flags);
+               /* Set discovery state back to GNL to Relogin attempt */
+               if (qla_dual_mode_enabled(vha) ||
+                   qla_ini_mode_enabled(vha)) {
+                       fcport->disc_state = DSC_GNL;
+                       set_bit(RELOGIN_NEEDED, &vha->dpc_flags);
+               }
                return;
        case PDS_LOGO_PENDING:
        case PDS_PORT_UNAVAILABLE: