[SCSI] qla2xxx: Clear mailbox busy flag during premature mailbox completion for ISP82xx.
authorGiridhar Malavali <giridhar.malavali@qlogic.com>
Fri, 18 Nov 2011 17:02:18 +0000 (09:02 -0800)
committerJames Bottomley <JBottomley@Parallels.com>
Mon, 12 Dec 2011 10:08:15 +0000 (14:08 +0400)
Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/qla2xxx/qla_mbx.c
drivers/scsi/qla2xxx/qla_nx.c

index f965a57f5d65a177640ab39bfdda3ad079a1e541..6ff7c3cbd0b57e3ab6c00743790825f5a3a9b7d2 100644 (file)
@@ -162,6 +162,7 @@ qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp)
                                HINT_MBX_INT_PENDING) {
                                spin_unlock_irqrestore(&ha->hardware_lock,
                                        flags);
+                               ha->flags.mbox_busy = 0;
                                ql_dbg(ql_dbg_mbx, base_vha, 0x1010,
                                    "Pending mailbox timeout, exiting.\n");
                                rval = QLA_FUNCTION_TIMEOUT;
@@ -187,6 +188,7 @@ qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp)
                                HINT_MBX_INT_PENDING) {
                                spin_unlock_irqrestore(&ha->hardware_lock,
                                        flags);
+                               ha->flags.mbox_busy = 0;
                                ql_dbg(ql_dbg_mbx, base_vha, 0x1012,
                                    "Pending mailbox timeout, exiting.\n");
                                rval = QLA_FUNCTION_TIMEOUT;
index 60d999d335c52c95c1de8b3e3730df6459fabac5..54246f934664cf728fb04b4b609e2c93e242dec7 100644 (file)
@@ -3823,6 +3823,7 @@ void qla82xx_clear_pending_mbx(scsi_qla_host_t *vha)
 
        if (ha->flags.mbox_busy) {
                ha->flags.mbox_int = 1;
+               ha->flags.mbox_busy = 0;
                ql_log(ql_log_warn, vha, 0x6010,
                    "Doing premature completion of mbx command.\n");
                if (test_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags))