diff options
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_isr.c')
| -rw-r--r-- | drivers/scsi/qla2xxx/qla_isr.c | 36 |
1 files changed, 10 insertions, 26 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index 14bcd7cc9ae2..ec63b79f900a 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c | |||
| @@ -272,8 +272,6 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb) | |||
| 272 | uint32_t rscn_entry, host_pid; | 272 | uint32_t rscn_entry, host_pid; |
| 273 | uint8_t rscn_queue_index; | 273 | uint8_t rscn_queue_index; |
| 274 | unsigned long flags; | 274 | unsigned long flags; |
| 275 | scsi_qla_host_t *vha; | ||
| 276 | int i; | ||
| 277 | 275 | ||
| 278 | /* Setup to process RIO completion. */ | 276 | /* Setup to process RIO completion. */ |
| 279 | handle_cnt = 0; | 277 | handle_cnt = 0; |
| @@ -544,18 +542,10 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb) | |||
| 544 | break; | 542 | break; |
| 545 | 543 | ||
| 546 | case MBA_PORT_UPDATE: /* Port database update */ | 544 | case MBA_PORT_UPDATE: /* Port database update */ |
| 547 | if ((ha->flags.npiv_supported) && (ha->num_vhosts)) { | 545 | /* Only handle SCNs for our Vport index. */ |
| 548 | for_each_mapped_vp_idx(ha, i) { | 546 | if (ha->parent && ha->vp_idx != (mb[3] & 0xff)) |
| 549 | list_for_each_entry(vha, &ha->vp_list, | 547 | break; |
| 550 | vp_list) { | 548 | |
| 551 | if ((mb[3] & 0xff) | ||
| 552 | == vha->vp_idx) { | ||
| 553 | ha = vha; | ||
| 554 | break; | ||
| 555 | } | ||
| 556 | } | ||
| 557 | } | ||
| 558 | } | ||
| 559 | /* | 549 | /* |
| 560 | * If PORT UPDATE is global (recieved LIP_OCCURED/LIP_RESET | 550 | * If PORT UPDATE is global (recieved LIP_OCCURED/LIP_RESET |
| 561 | * event etc. earlier indicating loop is down) then process | 551 | * event etc. earlier indicating loop is down) then process |
| @@ -590,18 +580,12 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb) | |||
| 590 | break; | 580 | break; |
| 591 | 581 | ||
| 592 | case MBA_RSCN_UPDATE: /* State Change Registration */ | 582 | case MBA_RSCN_UPDATE: /* State Change Registration */ |
| 593 | if ((ha->flags.npiv_supported) && (ha->num_vhosts)) { | 583 | /* Check if the Vport has issued a SCR */ |
| 594 | for_each_mapped_vp_idx(ha, i) { | 584 | if (ha->parent && test_bit(VP_SCR_NEEDED, &ha->vp_flags)) |
| 595 | list_for_each_entry(vha, &ha->vp_list, | 585 | break; |
| 596 | vp_list) { | 586 | /* Only handle SCNs for our Vport index. */ |
| 597 | if ((mb[3] & 0xff) | 587 | if (ha->parent && ha->vp_idx != (mb[3] & 0xff)) |
| 598 | == vha->vp_idx) { | 588 | break; |
| 599 | ha = vha; | ||
| 600 | break; | ||
| 601 | } | ||
| 602 | } | ||
| 603 | } | ||
| 604 | } | ||
| 605 | 589 | ||
| 606 | DEBUG2(printk("scsi(%ld): Asynchronous RSCR UPDATE.\n", | 590 | DEBUG2(printk("scsi(%ld): Asynchronous RSCR UPDATE.\n", |
| 607 | ha->host_no)); | 591 | ha->host_no)); |
