atomic_inc(&ha->num_pend_mbx_stage3);
                if (!wait_for_completion_timeout(&ha->mbx_intr_comp,
                    mcp->tov * HZ)) {
+                       ql_dbg(ql_dbg_mbx, vha, 0x117a,
+                           "cmd=%x Timeout.\n", command);
+                       spin_lock_irqsave(&ha->hardware_lock, flags);
+                       clear_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags);
+                       spin_unlock_irqrestore(&ha->hardware_lock, flags);
+
                        if (chip_reset != ha->chip_reset) {
                                eeh_delay = ha->flags.eeh_busy ? 1 : 0;
 
                                rval = QLA_ABORTED;
                                goto premature_exit;
                        }
-                       ql_dbg(ql_dbg_mbx, vha, 0x117a,
-                           "cmd=%x Timeout.\n", command);
-                       spin_lock_irqsave(&ha->hardware_lock, flags);
-                       clear_bit(MBX_INTR_WAIT, &ha->mbx_cmd_flags);
-                       spin_unlock_irqrestore(&ha->hardware_lock, flags);
-
                } else if (ha->flags.purge_mbox ||
                    chip_reset != ha->chip_reset) {
                        eeh_delay = ha->flags.eeh_busy ? 1 : 0;