scsi: qla2xxx: edif: Fix stale session
When firmware indicates session has been torn down via UPDATE SA IOCB or ELS Passthrough IOCB, the driver needs to also tear down the session. Link: https://lore.kernel.org/r/20210817051315.2477-2-njavali@marvell.com Signed-off-by: Quinn Tran <qutran@marvell.com> Signed-off-by: Nilesh Javali <njavali@marvell.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
848ade90ba
commit
b15ce2f34c
@ -2674,6 +2674,14 @@ qla28xx_sa_update_iocb_entry(scsi_qla_host_t *v, struct req_que *req,
|
||||
__func__, pkt->sa_index, nport_handle);
|
||||
qla_edif_sadb_delete_sa_index(sp->fcport, nport_handle,
|
||||
le16_to_cpu(pkt->sa_index));
|
||||
switch (le16_to_cpu(pkt->u.comp_sts)) {
|
||||
case CS_PORT_EDIF_UNAVAIL:
|
||||
case CS_PORT_EDIF_LOGOUT:
|
||||
qlt_schedule_sess_for_deletion(sp->fcport);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
sp->done(sp, 0);
|
||||
|
@ -63,6 +63,8 @@ struct sa_update_28xx {
|
||||
union {
|
||||
__le16 nport_handle; /* in: N_PORT handle. */
|
||||
__le16 comp_sts; /* out: completion status */
|
||||
#define CS_PORT_EDIF_UNAVAIL 0x28
|
||||
#define CS_PORT_EDIF_LOGOUT 0x29
|
||||
#define CS_PORT_EDIF_SUPP_NOT_RDY 0x64
|
||||
#define CS_PORT_EDIF_INV_REQ 0x66
|
||||
} u;
|
||||
|
@ -2235,6 +2235,7 @@ qla24xx_els_ct_entry(scsi_qla_host_t *v, struct req_que *req,
|
||||
} else if (comp_status == CS_PORT_LOGGED_OUT) {
|
||||
els->u.els_plogi.len = 0;
|
||||
res = DID_IMM_RETRY << 16;
|
||||
qlt_schedule_sess_for_deletion(sp->fcport);
|
||||
} else {
|
||||
els->u.els_plogi.len = 0;
|
||||
res = DID_ERROR << 16;
|
||||
|
Loading…
x
Reference in New Issue
Block a user