diff mbox series

[04/11] qla2xxx: consolidate zio threshold setting for both fcp & nvme

Message ID 20210323044257.26664-5-njavali@marvell.com
State Superseded
Headers show
Series qla2xxx driver bug fixes | expand

Commit Message

Nilesh Javali March 23, 2021, 4:42 a.m. UTC
From: Quinn Tran <qutran@marvell.com>

consolidate zio threshold setting for both fcp & nvme to prevent
one protocol from clobbering the setting of the other protocol.

Signed-off-by: Quinn Tran <qutran@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
---
 drivers/scsi/qla2xxx/qla_def.h |  1 -
 drivers/scsi/qla2xxx/qla_os.c  | 34 ++++++++++++++--------------------
 2 files changed, 14 insertions(+), 21 deletions(-)

Comments

Himanshu Madhani March 24, 2021, 3:55 p.m. UTC | #1
> On Mar 22, 2021, at 11:42 PM, Nilesh Javali <njavali@marvell.com> wrote:

> 

> From: Quinn Tran <qutran@marvell.com>

> 

> consolidate zio threshold setting for both fcp & nvme to prevent

> one protocol from clobbering the setting of the other protocol.

> 

> Signed-off-by: Quinn Tran <qutran@marvell.com>

> Signed-off-by: Nilesh Javali <njavali@marvell.com>

> ---

> drivers/scsi/qla2xxx/qla_def.h |  1 -

> drivers/scsi/qla2xxx/qla_os.c  | 34 ++++++++++++++--------------------

> 2 files changed, 14 insertions(+), 21 deletions(-)

> 

> diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h

> index 49b42b430df4..3d09f31895e7 100644

> --- a/drivers/scsi/qla2xxx/qla_def.h

> +++ b/drivers/scsi/qla2xxx/qla_def.h

> @@ -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

> diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c

> index 074392560f3d..6563d69706ba 100644

> --- a/drivers/scsi/qla2xxx/qla_os.c

> +++ b/drivers/scsi/qla2xxx/qla_os.c

> @@ -6969,28 +6969,23 @@ qla2x00_do_dpc(void *data)

> 			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);

> 

> @@ -7218,14 +7213,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++;

> 	}

> 

> -- 

> 2.19.0.rc0

> 


Looks good.

Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>


--
Himanshu Madhani	 Oracle Linux Engineering
diff mbox series

Patch

diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index 49b42b430df4..3d09f31895e7 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -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
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 074392560f3d..6563d69706ba 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -6969,28 +6969,23 @@  qla2x00_do_dpc(void *data)
 			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);
 
@@ -7218,14 +7213,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++;
 	}