Re: [PATCH v2 03/13] qla2xxx: turn off target reset during issue_lip

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> On Oct 21, 2021, at 2:31 AM, Nilesh Javali <njavali@xxxxxxxxxxx> wrote:
> 
> From: Quinn Tran <qutran@xxxxxxxxxxx>
> 
> When user use issue_lip to do link bounce, driver sends
> additional target reset to remote device before resetting
> the link. The target reset would affect other paths with
> active IOs. This patch will remove the unnecessary
> target reset.
> 
> Fixes: 5854771e314e ("[SCSI] qla2xxx: Add ISPFX00 specific bus reset routine")
> Signed-off-by: Quinn Tran <qutran@xxxxxxxxxxx>
> Signed-off-by: Nilesh Javali <njavali@xxxxxxxxxxx>
> ---
> drivers/scsi/qla2xxx/qla_gbl.h |  2 --
> drivers/scsi/qla2xxx/qla_mr.c  | 23 -----------------------
> drivers/scsi/qla2xxx/qla_os.c  | 27 ++-------------------------
> 3 files changed, 2 insertions(+), 50 deletions(-)
> 
> diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
> index 8aadcdeca6cb..8faaa0ec595d 100644
> --- a/drivers/scsi/qla2xxx/qla_gbl.h
> +++ b/drivers/scsi/qla2xxx/qla_gbl.h
> @@ -171,7 +171,6 @@ extern int ql2xasynctmfenable;
> extern int ql2xgffidenable;
> extern int ql2xenabledif;
> extern int ql2xenablehba_err_chk;
> -extern int ql2xtargetreset;
> extern int ql2xdontresethba;
> extern uint64_t ql2xmaxlun;
> extern int ql2xmdcapmask;
> @@ -820,7 +819,6 @@ extern void qlafx00_abort_iocb(srb_t *, struct abort_iocb_entry_fx00 *);
> extern void qlafx00_fxdisc_iocb(srb_t *, struct fxdisc_entry_fx00 *);
> extern void qlafx00_timer_routine(scsi_qla_host_t *);
> extern int qlafx00_rescan_isp(scsi_qla_host_t *);
> -extern int qlafx00_loop_reset(scsi_qla_host_t *vha);
> 
> /* qla82xx related functions */
> 
> diff --git a/drivers/scsi/qla2xxx/qla_mr.c b/drivers/scsi/qla2xxx/qla_mr.c
> index 6e920da64863..350b0c4346fb 100644
> --- a/drivers/scsi/qla2xxx/qla_mr.c
> +++ b/drivers/scsi/qla2xxx/qla_mr.c
> @@ -738,29 +738,6 @@ qlafx00_lun_reset(fc_port_t *fcport, uint64_t l, int tag)
> 	return qla2x00_async_tm_cmd(fcport, TCF_LUN_RESET, l, tag);
> }
> 
> -int
> -qlafx00_loop_reset(scsi_qla_host_t *vha)
> -{
> -	int ret;
> -	struct fc_port *fcport;
> -	struct qla_hw_data *ha = vha->hw;
> -
> -	if (ql2xtargetreset) {
> -		list_for_each_entry(fcport, &vha->vp_fcports, list) {
> -			if (fcport->port_type != FCT_TARGET)
> -				continue;
> -
> -			ret = ha->isp_ops->target_reset(fcport, 0, 0);
> -			if (ret != QLA_SUCCESS) {
> -				ql_dbg(ql_dbg_taskm, vha, 0x803d,
> -				    "Bus Reset failed: Reset=%d "
> -				    "d_id=%x.\n", ret, fcport->d_id.b24);
> -			}
> -		}
> -	}
> -	return QLA_SUCCESS;
> -}
> -
> int
> qlafx00_iospace_config(struct qla_hw_data *ha)
> {
> diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
> index 03ff2596715b..3fca6b8bb23f 100644
> --- a/drivers/scsi/qla2xxx/qla_os.c
> +++ b/drivers/scsi/qla2xxx/qla_os.c
> @@ -202,12 +202,6 @@ MODULE_PARM_DESC(ql2xdbwr,
> 		" 0 -- Regular doorbell.\n"
> 		" 1 -- CAMRAM doorbell (faster).\n");
> 
> -int ql2xtargetreset = 1;
> -module_param(ql2xtargetreset, int, S_IRUGO);
> -MODULE_PARM_DESC(ql2xtargetreset,
> -		 "Enable target reset."
> -		 "Default is 1 - use hw defaults.");
> -
> int ql2xgffidenable;
> module_param(ql2xgffidenable, int, S_IRUGO);
> MODULE_PARM_DESC(ql2xgffidenable,
> @@ -1695,27 +1689,10 @@ int
> qla2x00_loop_reset(scsi_qla_host_t *vha)
> {
> 	int ret;
> -	struct fc_port *fcport;
> 	struct qla_hw_data *ha = vha->hw;
> 
> -	if (IS_QLAFX00(ha)) {
> -		return qlafx00_loop_reset(vha);
> -	}
> -
> -	if (ql2xtargetreset == 1 && ha->flags.enable_target_reset) {
> -		list_for_each_entry(fcport, &vha->vp_fcports, list) {
> -			if (fcport->port_type != FCT_TARGET)
> -				continue;
> -
> -			ret = ha->isp_ops->target_reset(fcport, 0, 0);
> -			if (ret != QLA_SUCCESS) {
> -				ql_dbg(ql_dbg_taskm, vha, 0x802c,
> -				    "Bus Reset failed: Reset=%d "
> -				    "d_id=%x.\n", ret, fcport->d_id.b24);
> -			}
> -		}
> -	}
> -
> +	if (IS_QLAFX00(ha))
> +		return QLA_SUCCESS;
> 
> 	if (ha->flags.enable_lip_full_login && !IS_CNA_CAPABLE(ha)) {
> 		atomic_set(&vha->loop_state, LOOP_DOWN);
> -- 
> 2.19.0.rc0
> 

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

--
Himanshu Madhani	 Oracle Linux Engineering





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux