Skip to content

Commit

Permalink
[SCSI] qla2xxx: Skip RSCN processing on vha if event is global.
Browse files Browse the repository at this point in the history
The RSCN processing is skipped if the event received is global and vha is not recipient.

Signed-off-by: Santosh Vernekar <santosh.vernekar@qlogic.com>
Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
  • Loading branch information
Santosh Vernekar authored and James Bottomley committed Aug 22, 2009
1 parent 9764ff8 commit 55903b9
Showing 1 changed file with 20 additions and 4 deletions.
24 changes: 20 additions & 4 deletions drivers/scsi/qla2xxx/qla_isr.c
Original file line number Diff line number Diff line change
Expand Up @@ -598,10 +598,26 @@ qla2x00_async_event(scsi_qla_host_t *vha, struct rsp_que *rsp, uint16_t *mb)
break;

case MBA_PORT_UPDATE: /* Port database update */
/* Only handle SCNs for our Vport index. */
if (mb[1] != 0xffff &&
vha->vp_idx && vha->vp_idx != (mb[3] & 0xff))
break;
/*
* Handle only global and vn-port update events
*
* Relevant inputs:
* mb[1] = N_Port handle of changed port
* OR 0xffff for global event
* mb[2] = New login state
* 7 = Port logged out
* mb[3] = LSB is vp_idx, 0xff = all vps
*
* Skip processing if:
* Event is global, vp_idx is NOT all vps,
* vp_idx does not match
* Event is not global, vp_idx does not match
*/
if ((mb[1] == 0xffff && (mb[3] & 0xff) != 0xff)
|| (mb[1] != 0xffff)) {
if (vha->vp_idx != (mb[3] & 0xff))
break;
}

/* Global event -- port logout or port unavailable. */
if (mb[1] == 0xffff && mb[2] == 0x7) {
Expand Down

0 comments on commit 55903b9

Please sign in to comment.