Message ID | 20230712090535.34894-7-njavali@marvell.com |
---|---|
State | Superseded |
Headers | show |
Series | qla2xxx driver bug fixes | expand |
> On Jul 12, 2023, at 2:05 AM, Nilesh Javali <njavali@marvell.com> wrote: > > From: Quinn Tran <qutran@marvell.com> > > Connection does not resume after a host reset / > chip reset. The cause of the blockage is due to the FCF_ASYNC_ACTIVE > left on. The gnl command was interrupted by the chip reset. On > exiting the command, this flag should be turn off to allow relogin > to reoccur. Clear this flag to prevent blockage. > > Cc: stable@vger.kernel.org > Fixes: 17e64648aa47 (“scsi: qla2xxx: Correct fcport flags handling”) > Signed-off-by: Quinn Tran <qutran@marvell.com> > Signed-off-by: Nilesh Javali <njavali@marvell.com> > --- > drivers/scsi/qla2xxx/qla_init.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c > index 725806ca9572..06c4e5215789 100644 > --- a/drivers/scsi/qla2xxx/qla_init.c > +++ b/drivers/scsi/qla2xxx/qla_init.c > @@ -1141,7 +1141,7 @@ int qla24xx_async_gnl(struct scsi_qla_host *vha, fc_port_t *fcport) > u16 *mb; > > if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT)) > - return rval; > + goto done; > > ql_dbg(ql_dbg_disc, vha, 0x20d9, > "Async-gnlist WWPN %8phC \n", fcport->port_name); > @@ -1195,8 +1195,9 @@ int qla24xx_async_gnl(struct scsi_qla_host *vha, fc_port_t *fcport) > done_free_sp: > /* ref: INIT */ > kref_put(&sp->cmd_kref, qla2x00_sp_release); > + fcport->flags &= ~(FCF_ASYNC_SENT); > done: > - fcport->flags &= ~(FCF_ASYNC_ACTIVE | FCF_ASYNC_SENT); > + fcport->flags &= ~(FCF_ASYNC_ACTIVE); > return rval; > } > > -- > 2.23.1 > Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index 725806ca9572..06c4e5215789 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c @@ -1141,7 +1141,7 @@ int qla24xx_async_gnl(struct scsi_qla_host *vha, fc_port_t *fcport) u16 *mb; if (!vha->flags.online || (fcport->flags & FCF_ASYNC_SENT)) - return rval; + goto done; ql_dbg(ql_dbg_disc, vha, 0x20d9, "Async-gnlist WWPN %8phC \n", fcport->port_name); @@ -1195,8 +1195,9 @@ int qla24xx_async_gnl(struct scsi_qla_host *vha, fc_port_t *fcport) done_free_sp: /* ref: INIT */ kref_put(&sp->cmd_kref, qla2x00_sp_release); + fcport->flags &= ~(FCF_ASYNC_SENT); done: - fcport->flags &= ~(FCF_ASYNC_ACTIVE | FCF_ASYNC_SENT); + fcport->flags &= ~(FCF_ASYNC_ACTIVE); return rval; }