Message ID | 20211021073208.27582-6-njavali@marvell.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | qla2xxx - misc driver and EDIF bug fixes | expand |
> On Oct 21, 2021, at 2:32 AM, Nilesh Javali <njavali@marvell.com> wrote: > > From: Quinn Tran <qutran@marvell.com> > > 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@marvell.com> > Signed-off-by: Nilesh Javali <njavali@marvell.com> > --- > 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@oracle.com> -- Himanshu Madhani Oracle Linux Engineering
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); } }