Message ID | 20210323044257.26664-5-njavali@marvell.com |
---|---|
State | Superseded |
Headers | show |
Series | qla2xxx driver bug fixes | expand |
> 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 --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++; }