scsi: qla2xxx: Fix N2N link up fail
authorQuinn Tran <qutran@marvell.com>
Thu, 12 Sep 2019 18:09:10 +0000 (11:09 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 24 Sep 2019 03:09:43 +0000 (23:09 -0400)
During link up/bounce, qla driver would do command flush as part of
cleanup.  In this case, the flush can intefere with FW state.  This patch
allows FW to be in control of link up.

Link: https://lore.kernel.org/r/20190912180918.6436-7-hmadhani@marvell.com
Signed-off-by: Quinn Tran <qutran@marvell.com>
Signed-off-by: Himanshu Madhani <hmadhani@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_mbx.c
drivers/scsi/qla2xxx/qla_os.c

index 6d6e10812b427e961b538b19b5f8630750fbdb26..1cc6913f76c4745242b72cc7aa71e5edaae54519 100644 (file)
@@ -3897,6 +3897,7 @@ qla24xx_report_id_acquisition(scsi_qla_host_t *vha,
                                fcport->dm_login_expire = jiffies + 2*HZ;
                                fcport->scan_state = QLA_FCPORT_FOUND;
                                fcport->n2n_flag = 1;
+                               fcport->keep_nport_handle = 1;
                                if (vha->flags.nvme_enabled)
                                        fcport->fc4f_nvme = 1;
 
@@ -4042,6 +4043,7 @@ qla24xx_report_id_acquisition(scsi_qla_host_t *vha,
                        fcport->login_retry = vha->hw->login_retry_count;
                        fcport->plogi_nack_done_deadline = jiffies + HZ;
                        fcport->scan_state = QLA_FCPORT_FOUND;
+                       fcport->keep_nport_handle = 1;
                        fcport->n2n_flag = 1;
                        fcport->d_id.b.domain =
                                rptid_entry->u.f2.remote_nport_id[2];
index 8411dd5acd439a69e13deef19bc8c1170991d85e..ee47de9fbc05700c3c6f27b806074a67683058e4 100644 (file)
@@ -5135,11 +5135,9 @@ void qla24xx_create_new_sess(struct scsi_qla_host *vha, struct qla_work_evt *e)
                        if (dfcp)
                                qlt_schedule_sess_for_deletion(tfcp);
 
-
-                       if (N2N_TOPO(vha->hw))
-                               fcport->flags &= ~FCF_FABRIC_DEVICE;
-
                        if (N2N_TOPO(vha->hw)) {
+                               fcport->flags &= ~FCF_FABRIC_DEVICE;
+                               fcport->keep_nport_handle = 1;
                                if (vha->flags.nvme_enabled) {
                                        fcport->fc4f_nvme = 1;
                                        fcport->n2n_flag = 1;