Skip to content

Commit

Permalink
scsi: qla2xxx: Properly extract ADISC error codes
Browse files Browse the repository at this point in the history
This patch fixes issue with extraction of ADISC error codes
for decoding the error returned

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
  • Loading branch information
Quinn Tran authored and Martin K. Petersen committed Jan 4, 2018
1 parent cf055fb commit 0616e96
Showing 1 changed file with 16 additions and 8 deletions.
24 changes: 16 additions & 8 deletions drivers/scsi/qla2xxx/qla_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -339,27 +339,30 @@ qla2x00_async_prlo(struct scsi_qla_host *vha, fc_port_t *fcport)
static
void qla24xx_handle_adisc_event(scsi_qla_host_t *vha, struct event_arg *ea)
{
if (ea->rc) {
struct fc_port *fcport = ea->fcport;

ql_dbg(ql_dbg_disc, vha, 0x20d2,
"%s %8phC DS %d LS %d rc %d login %d|%d rscn %d|%d lid %d\n",
__func__, fcport->port_name, fcport->disc_state,
fcport->fw_login_state, ea->rc, fcport->login_gen, ea->sp->gen2,
fcport->rscn_gen, ea->sp->gen1, fcport->loop_id);

if (ea->data[0] != MBS_COMMAND_COMPLETE) {
ql_dbg(ql_dbg_disc, vha, 0x2066,
"%s %8phC: adisc fail: post delete\n",
__func__, ea->fcport->port_name);
qlt_schedule_sess_for_deletion(ea->fcport, 1);
return;
}
ql_dbg(ql_dbg_disc, vha, 0x20d2,
"%s %8phC DS %d LS %d\n", __func__, ea->fcport->port_name,
ea->fcport->disc_state, ea->fcport->fw_login_state);

if (ea->fcport->disc_state == DSC_DELETE_PEND)
return;

if (ea->sp->gen2 != ea->fcport->login_gen) {
/* target side must have changed it. */
ql_dbg(ql_dbg_disc, vha, 0x20d3,
"%s %8phC generation changed rscn %d|%d login %d|%d\n",
__func__, ea->fcport->port_name, ea->fcport->last_rscn_gen,
ea->fcport->rscn_gen, ea->fcport->last_login_gen,
ea->fcport->login_gen);
"%s %8phC generation changed\n",
__func__, ea->fcport->port_name);
return;
} else if (ea->sp->gen1 != ea->fcport->rscn_gen) {
ql_dbg(ql_dbg_disc, vha, 0x20d4, "%s %d %8phC post gidpn\n",
Expand All @@ -377,6 +380,7 @@ qla2x00_async_adisc_sp_done(void *ptr, int res)
srb_t *sp = ptr;
struct scsi_qla_host *vha = sp->vha;
struct event_arg ea;
struct srb_iocb *lio = &sp->u.iocb_cmd;

ql_dbg(ql_dbg_disc, vha, 0x2066,
"Async done-%s res %x %8phC\n",
Expand All @@ -385,6 +389,10 @@ qla2x00_async_adisc_sp_done(void *ptr, int res)
memset(&ea, 0, sizeof(ea));
ea.event = FCME_ADISC_DONE;
ea.rc = res;
ea.data[0] = lio->u.logio.data[0];
ea.data[1] = lio->u.logio.data[1];
ea.iop[0] = lio->u.logio.iop[0];
ea.iop[1] = lio->u.logio.iop[1];
ea.fcport = sp->fcport;
ea.sp = sp;

Expand Down

0 comments on commit 0616e96

Please sign in to comment.