Re: [PATCH v2 05/13] qla2xxx: edif: fix app start delay

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

 




> On Oct 21, 2021, at 2:32 AM, Nilesh Javali <njavali@xxxxxxxxxxx> wrote:
> 
> From: Quinn Tran <qutran@xxxxxxxxxxx>
> 
> Current driver does unnecessary pause for each session to
> get to certain state before allowing the app start call to
> return. In larger environment, this introduce long delay.
> Previously, the delay is meant to synchronize app and driver.
> In today's driver, the 2 side uses various events to synchronize
> the state.
> 
> The same is applied to authentication failure call.
> 
> Fixes: 4de067e5df12 ("scsi: qla2xxx: edif: Add N2N support for EDIF")
> Signed-off-by: Quinn Tran <qutran@xxxxxxxxxxx>
> Signed-off-by: Nilesh Javali <njavali@xxxxxxxxxxx>
> ---
> drivers/scsi/qla2xxx/qla_edif.c | 64 ++-------------------------------
> 1 file changed, 3 insertions(+), 61 deletions(-)
> 
> diff --git a/drivers/scsi/qla2xxx/qla_edif.c b/drivers/scsi/qla2xxx/qla_edif.c
> index cb54d3ee11aa..33cdcdf9f511 100644
> --- a/drivers/scsi/qla2xxx/qla_edif.c
> +++ b/drivers/scsi/qla2xxx/qla_edif.c
> @@ -290,63 +290,6 @@ qla_edif_app_check(scsi_qla_host_t *vha, struct app_id appid)
> 	return false;
> }
> 
> -static void qla_edif_reset_auth_wait(struct fc_port *fcport, int state,
> -		int waitonly)
> -{
> -	int cnt, max_cnt = 200;
> -	bool traced = false;
> -
> -	fcport->keep_nport_handle = 1;
> -
> -	if (!waitonly) {
> -		qla2x00_set_fcport_disc_state(fcport, state);
> -		qlt_schedule_sess_for_deletion(fcport);
> -	} else {
> -		qla2x00_set_fcport_disc_state(fcport, state);
> -	}
> -
> -	ql_dbg(ql_dbg_edif, fcport->vha, 0xf086,
> -		"%s: waiting for session, max_cnt=%u\n",
> -		__func__, max_cnt);
> -
> -	cnt = 0;
> -
> -	if (waitonly) {
> -		/* Marker wait min 10 msecs. */
> -		msleep(50);
> -		cnt += 50;
> -	}
> -	while (1) {
> -		if (!traced) {
> -			ql_dbg(ql_dbg_edif, fcport->vha, 0xf086,
> -			    "%s: session sleep.\n",
> -			    __func__);
> -			traced = true;
> -		}
> -		msleep(20);
> -		cnt++;
> -		if (waitonly && (fcport->disc_state == state ||
> -			fcport->disc_state == DSC_LOGIN_COMPLETE))
> -			break;
> -		if (fcport->disc_state == DSC_LOGIN_AUTH_PEND)
> -			break;
> -		if (cnt > max_cnt)
> -			break;
> -	}
> -
> -	if (!waitonly) {
> -		ql_dbg(ql_dbg_edif, fcport->vha, 0xf086,
> -		    "%s: waited for session - %8phC, loopid=%x portid=%06x fcport=%p state=%u, cnt=%u\n",
> -		    __func__, fcport->port_name, fcport->loop_id,
> -		    fcport->d_id.b24, fcport, fcport->disc_state, cnt);
> -	} else {
> -		ql_dbg(ql_dbg_edif, fcport->vha, 0xf086,
> -		    "%s: waited ONLY for session - %8phC, loopid=%x portid=%06x fcport=%p state=%u, cnt=%u\n",
> -		    __func__, fcport->port_name, fcport->loop_id,
> -		    fcport->d_id.b24, fcport, fcport->disc_state, cnt);
> -	}
> -}
> -
> static void
> qla_edif_free_sa_ctl(fc_port_t *fcport, struct edif_sa_ctl *sa_ctl,
> 	int index)
> @@ -585,8 +528,8 @@ qla_edif_app_start(scsi_qla_host_t *vha, struct bsg_job *bsg_job)
> 			ql_dbg(ql_dbg_edif, vha, 0x911e,
> 			       "%s wwpn %8phC calling qla_edif_reset_auth_wait\n",
> 			       __func__, fcport->port_name);
> -			fcport->edif.app_sess_online = 1;
> -			qla_edif_reset_auth_wait(fcport, DSC_LOGIN_PEND, 0);
> +			fcport->edif.app_sess_online = 0;
> +			qlt_schedule_sess_for_deletion(fcport);
> 			qla_edif_sa_ctl_init(vha, fcport);
> 		}
> 	}
> @@ -802,7 +745,6 @@ qla_edif_app_authok(scsi_qla_host_t *vha, struct bsg_job *bsg_job)
> 		ql_dbg(ql_dbg_edif, vha, 0x911e,
> 		    "%s AUTH complete - RESUME with prli for wwpn %8phC\n",
> 		    __func__, fcport->port_name);
> -		qla_edif_reset_auth_wait(fcport, DSC_LOGIN_PEND, 1);
> 		qla24xx_post_prli_work(vha, fcport);
> 	}
> 
> @@ -875,7 +817,7 @@ qla_edif_app_authfail(scsi_qla_host_t *vha, struct bsg_job *bsg_job)
> 
> 		if (qla_ini_mode_enabled(fcport->vha)) {
> 			fcport->send_els_logo = 1;
> -			qla_edif_reset_auth_wait(fcport, DSC_LOGIN_PEND, 0);
> +			qlt_schedule_sess_for_deletion(fcport);
> 		}
> 	}
> 
> -- 
> 2.19.0.rc0
> 

Makes sense. 

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