scsi: qla2xxx: Check if port is online before sending ELS
commit 0c227dc22ca18856055983f27594feb2e0149965 upstream. 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> Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
c54e9311ee
commit
476126f14d
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user