[SCSI] qla2xxx: Defer explicit interrupt-polling processing to init-time scenarios.
authorAndrew Vasquez <andrew.vasquez@qlogic.com>
Fri, 19 Oct 2007 22:59:14 +0000 (15:59 -0700)
committerJames Bottomley <jejb@mulgrave.localdomain>
Tue, 23 Oct 2007 19:53:41 +0000 (15:53 -0400)
As the intermixing may cause issues where HCCR bits could be
cleared inappropriately during MSI/MSI-X interrupt handling.

Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/qla2xxx/qla_iocb.c
drivers/scsi/qla2xxx/qla_mbx.c

index 7f6a89bd94f3400f2d9987586b20c7423ae7c4cc..024c662ec34d47ed75ae0e2e94192e6ca3f820e3 100644 (file)
@@ -525,7 +525,7 @@ qla2x00_req_pkt(scsi_qla_host_t *ha)
 
                /* Check for pending interrupts. */
                /* During init we issue marker directly */
-               if (!ha->marker_needed)
+               if (!ha->marker_needed && !ha->flags.init_done)
                        qla2x00_poll(ha);
 
                spin_lock_irq(&ha->hardware_lock);
index c53ec67c47f4df600445f960ad503040248650e0..ccd662a6f5dccbbfa23c97db60b574eff6356f42 100644 (file)
@@ -252,7 +252,7 @@ qla2x00_mailbox_command(scsi_qla_host_t *pvha, mbx_cmd_t *mcp)
        /* Clean up */
        ha->mcp = NULL;
 
-       if (!abort_active) {
+       if (abort_active || !io_lock_on) {
                DEBUG11(printk("%s(%ld): checking for additional resp "
                    "interrupt.\n", __func__, ha->host_no));