[SCSI] qla4xxx: Don't process mbx interrupt unconditionally
authorVikas Chaudhary <vikas.chaudhary@qlogic.com>
Wed, 18 May 2011 06:17:07 +0000 (23:17 -0700)
committerJames Bottomley <jbottomley@parallels.com>
Tue, 24 May 2011 16:39:42 +0000 (12:39 -0400)
Do not process interrupt unconditionally during mailbox processing  which can
lead to spurious interrupt. Mailbox completion are now polled if interrupt are
disabled or wait for interrupt to come in if its enabled

Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <jbottomley@parallels.com>
drivers/scsi/qla4xxx/ql4_mbx.c

index d78b58dc501169b1160c5dd669f165b2f7d1306a..b768a0366f7bf10b1d31fb33ee5ff8205186cb9d 100644 (file)
@@ -86,22 +86,8 @@ int qla4xxx_mailbox_command(struct scsi_qla_host *ha, uint8_t inCount,
                msleep(10);
        }
 
-       /* To prevent overwriting mailbox registers for a command that has
-        * not yet been serviced, check to see if an active command
-        * (AEN, IOCB, etc.) is interrupting, then service it.
-        * -----------------------------------------------------------------
-        */
        spin_lock_irqsave(&ha->hardware_lock, flags);
 
-       if (!is_qla8022(ha)) {
-               intr_status = readl(&ha->reg->ctrl_status);
-               if (intr_status & CSR_SCSI_PROCESSOR_INTR) {
-                       /* Service existing interrupt */
-                       ha->isp_ops->interrupt_service_routine(ha, intr_status);
-                       clear_bit(AF_MBOX_COMMAND_DONE, &ha->flags);
-               }
-       }
-
        ha->mbox_status_count = outCount;
        for (i = 0; i < outCount; i++)
                ha->mbox_status[i] = 0;