Message ID | 20221214045014.19362-2-njavali@marvell.com |
---|---|
State | Superseded |
Headers | show |
Series | Misc. qla2xxx driver bug fixes | expand |
> On Dec 13, 2022, at 8:50 PM, Nilesh Javali <njavali@marvell.com> wrote: > > From: Shreyas Deodhar <sdeodhar@marvell.com> > > CT Ping and ELS cmds fail for NVMe targets. > Check if port is online before sending ELS instead of > sending login. > > Cc: stable@vger.kernel.org > Signed-off-by: Shreyas Deodhar <sdeodhar@marvell.com> > Signed-off-by: Nilesh Javali <njavali@marvell.com> > --- > drivers/scsi/qla2xxx/qla_bsg.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/drivers/scsi/qla2xxx/qla_bsg.c b/drivers/scsi/qla2xxx/qla_bsg.c > index cd75b179410d..dba7bba788d7 100644 > --- a/drivers/scsi/qla2xxx/qla_bsg.c > +++ b/drivers/scsi/qla2xxx/qla_bsg.c > @@ -278,8 +278,8 @@ qla2x00_process_els(struct bsg_job *bsg_job) > const char *type; > int req_sg_cnt, rsp_sg_cnt; > int rval = (DID_ERROR << 16); > - uint16_t nextlid = 0; > uint32_t els_cmd = 0; > + int qla_port_allocated = 0; > > if (bsg_request->msgcode == FC_BSG_RPT_ELS) { > rport = fc_bsg_to_rport(bsg_job); > @@ -329,9 +329,9 @@ qla2x00_process_els(struct bsg_job *bsg_job) > /* make sure the rport is logged in, > * if not perform fabric login > */ > - if (qla2x00_fabric_login(vha, fcport, &nextlid)) { > + if (atomic_read(&fcport->state) != FCS_ONLINE) { > ql_dbg(ql_dbg_user, vha, 0x7003, > - "Failed to login port %06X for ELS passthru.\n", > + "Port %06X is not online for ELS passthru.\n", > fcport->d_id.b24); > rval = -EIO; > goto done; > @@ -348,6 +348,7 @@ qla2x00_process_els(struct bsg_job *bsg_job) > goto done; > } > > + qla_port_allocated = 1; > /* Initialize all required fields of fcport */ > fcport->vha = vha; > fcport->d_id.b.al_pa = > @@ -432,7 +433,7 @@ qla2x00_process_els(struct bsg_job *bsg_job) > goto done_free_fcport; > > done_free_fcport: > - if (bsg_request->msgcode != FC_BSG_RPT_ELS) > + if (qla_port_allocated) > qla2x00_free_fcport(fcport); > done: > return rval; > -- > 2.19.0.rc0 > Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
diff --git a/drivers/scsi/qla2xxx/qla_bsg.c b/drivers/scsi/qla2xxx/qla_bsg.c index cd75b179410d..dba7bba788d7 100644 --- a/drivers/scsi/qla2xxx/qla_bsg.c +++ b/drivers/scsi/qla2xxx/qla_bsg.c @@ -278,8 +278,8 @@ qla2x00_process_els(struct bsg_job *bsg_job) const char *type; int req_sg_cnt, rsp_sg_cnt; int rval = (DID_ERROR << 16); - uint16_t nextlid = 0; uint32_t els_cmd = 0; + int qla_port_allocated = 0; if (bsg_request->msgcode == FC_BSG_RPT_ELS) { rport = fc_bsg_to_rport(bsg_job); @@ -329,9 +329,9 @@ qla2x00_process_els(struct bsg_job *bsg_job) /* make sure the rport is logged in, * if not perform fabric login */ - if (qla2x00_fabric_login(vha, fcport, &nextlid)) { + if (atomic_read(&fcport->state) != FCS_ONLINE) { ql_dbg(ql_dbg_user, vha, 0x7003, - "Failed to login port %06X for ELS passthru.\n", + "Port %06X is not online for ELS passthru.\n", fcport->d_id.b24); rval = -EIO; goto done; @@ -348,6 +348,7 @@ qla2x00_process_els(struct bsg_job *bsg_job) goto done; } + qla_port_allocated = 1; /* Initialize all required fields of fcport */ fcport->vha = vha; fcport->d_id.b.al_pa = @@ -432,7 +433,7 @@ qla2x00_process_els(struct bsg_job *bsg_job) goto done_free_fcport; done_free_fcport: - if (bsg_request->msgcode != FC_BSG_RPT_ELS) + if (qla_port_allocated) qla2x00_free_fcport(fcport); done: return rval;