scsi: qla2xxx: Consolidate zio threshold setting for both FCP & NVMe
authorQuinn Tran <qutran@marvell.com>
Mon, 29 Mar 2021 08:52:21 +0000 (01:52 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 30 Mar 2021 02:38:58 +0000 (22:38 -0400)
Consolidate zio threshold setting for both FCP & NVMe to prevent one
protocol from clobbering the setting of the other protocol.

Link: https://lore.kernel.org/r/20210329085229.4367-5-njavali@marvell.com
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Quinn Tran <qutran@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_def.h
drivers/scsi/qla2xxx/qla_os.c

index 52ba75591f9ab17b20ab312568e90ca3bd77b51c..ca7cebae1d786ae2200a7d9e87dbc06307d67340 100644 (file)
@@ -4727,7 +4727,6 @@ typedef struct scsi_qla_host {
 #define FX00_CRITEMP_RECOVERY  25
 #define FX00_HOST_INFO_RESEND  26
 #define QPAIR_ONLINE_CHECK_NEEDED      27
-#define SET_NVME_ZIO_THRESHOLD_NEEDED  28
 #define DETECT_SFP_CHANGE      29
 #define N2N_LOGIN_NEEDED       30
 #define IOCB_WORK_ACTIVE       31
index ac5e9548b757ef8e8fd779f77321c970cad27b72..eb5fcb3a37ec92526873812caaa52f08b0456703 100644 (file)
@@ -6968,28 +6968,23 @@ intr_on_check:
                        mutex_unlock(&ha->mq_lock);
                }
 
-               if (test_and_clear_bit(SET_NVME_ZIO_THRESHOLD_NEEDED,
-                   &base_vha->dpc_flags)) {
+               if (test_and_clear_bit(SET_ZIO_THRESHOLD_NEEDED,
+                                      &base_vha->dpc_flags)) {
+                       u16 threshold = ha->nvme_last_rptd_aen + ha->last_zio_threshold;
+
+                       if (threshold > ha->orig_fw_xcb_count)
+                               threshold = ha->orig_fw_xcb_count;
+
                        ql_log(ql_log_info, base_vha, 0xffffff,
-                               "nvme: SET ZIO Activity exchange threshold to %d.\n",
-                                               ha->nvme_last_rptd_aen);
-                       if (qla27xx_set_zio_threshold(base_vha,
-                           ha->nvme_last_rptd_aen)) {
+                              "SET ZIO Activity exchange threshold to %d.\n",
+                              threshold);
+                       if (qla27xx_set_zio_threshold(base_vha, threshold)) {
                                ql_log(ql_log_info, base_vha, 0xffffff,
-                                   "nvme: Unable to SET ZIO Activity exchange threshold to %d.\n",
-                                   ha->nvme_last_rptd_aen);
+                                      "Unable to SET ZIO Activity exchange threshold to %d.\n",
+                                      threshold);
                        }
                }
 
-               if (test_and_clear_bit(SET_ZIO_THRESHOLD_NEEDED,
-                   &base_vha->dpc_flags)) {
-                       ql_log(ql_log_info, base_vha, 0xffffff,
-                           "SET ZIO Activity exchange threshold to %d.\n",
-                           ha->last_zio_threshold);
-                       qla27xx_set_zio_threshold(base_vha,
-                           ha->last_zio_threshold);
-               }
-
                if (!IS_QLAFX00(ha))
                        qla2x00_do_dpc_all_vps(base_vha);
 
@@ -7217,14 +7212,13 @@ qla2x00_timer(struct timer_list *t)
        index = atomic_read(&ha->nvme_active_aen_cnt);
        if (!vha->vp_idx &&
            (index != ha->nvme_last_rptd_aen) &&
-           (index >= DEFAULT_ZIO_THRESHOLD) &&
            ha->zio_mode == QLA_ZIO_MODE_6 &&
            !ha->flags.host_shutting_down) {
+               ha->nvme_last_rptd_aen = atomic_read(&ha->nvme_active_aen_cnt);
                ql_log(ql_log_info, vha, 0x3002,
                    "nvme: Sched: Set ZIO exchange threshold to %d.\n",
                    ha->nvme_last_rptd_aen);
-               ha->nvme_last_rptd_aen = atomic_read(&ha->nvme_active_aen_cnt);
-               set_bit(SET_NVME_ZIO_THRESHOLD_NEEDED, &vha->dpc_flags);
+               set_bit(SET_ZIO_THRESHOLD_NEEDED, &vha->dpc_flags);
                start_dpc++;
        }