]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
scsi: qla2xxx: Fix Rport and session state getting out of sync
authorQuinn Tran <quinn.tran@cavium.com>
Tue, 1 May 2018 16:01:45 +0000 (09:01 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 8 May 2018 04:46:11 +0000 (00:46 -0400)
This patch fixes rport state and session state getting out of sync.

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_target.c

index 025dc2d3f3de53a4e816486d8bdee12ee2011638..85640707ccebaef057b973a0369f043b53087a1d 100644 (file)
@@ -601,24 +601,18 @@ void qla2x00_async_nack_sp_done(void *s, int res)
 
                        vha->fcport_count++;
 
-                       if (!IS_IIDMA_CAPABLE(vha->hw) ||
-                           !vha->hw->flags.gpsc_supported) {
-                               ql_dbg(ql_dbg_disc, vha, 0x20f3,
-                                   "%s %d %8phC post upd_fcport fcp_cnt %d\n",
-                                   __func__, __LINE__,
-                                   sp->fcport->port_name,
-                                   vha->fcport_count);
-                               sp->fcport->disc_state = DSC_UPD_FCPORT;
-                               qla24xx_post_upd_fcport_work(vha, sp->fcport);
-                       } else {
-                               ql_dbg(ql_dbg_disc, vha, 0x20f5,
-                                   "%s %d %8phC post gpsc fcp_cnt %d\n",
-                                   __func__, __LINE__,
-                                   sp->fcport->port_name,
-                                   vha->fcport_count);
-
-                               qla24xx_post_gpsc_work(vha, sp->fcport);
-                       }
+                       ql_dbg(ql_dbg_disc, vha, 0x20f3,
+                           "%s %d %8phC post upd_fcport fcp_cnt %d\n",
+                           __func__, __LINE__,
+                           sp->fcport->port_name,
+                           vha->fcport_count);
+                       sp->fcport->disc_state = DSC_UPD_FCPORT;
+                       qla24xx_post_upd_fcport_work(vha, sp->fcport);
+               } else {
+                       sp->fcport->login_retry = 0;
+                       sp->fcport->disc_state = DSC_LOGIN_COMPLETE;
+                       sp->fcport->deleted = 0;
+                       sp->fcport->logout_on_delete = 1;
                }
                break;