aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorNilesh Javali <nilesh.javali@qlogic.com>2010-10-07 01:49:20 -0400
committerJames Bottomley <James.Bottomley@suse.de>2010-10-25 15:50:38 -0400
commit2bd1e2be8f7cce153a356a971012b9a604f9a412 (patch)
tree84e84975e2b698c9353c65545bd587a7ee105401 /drivers/scsi
parent3710c60c09f555df69d12b0232702d062fe3bcd6 (diff)
[SCSI] qla4xxx: On firmware hang do not wait for the outstanding commands to complete
Signed-off-by: Nilesh Javali <nilesh.javali@qlogic.com> Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com> Signed-off-by: Ravi Anand <ravi.anand@qlogic.com> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/qla4xxx/ql4_os.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
index 56962e52f112..a6455fbe4f4f 100644
--- a/drivers/scsi/qla4xxx/ql4_os.c
+++ b/drivers/scsi/qla4xxx/ql4_os.c
@@ -1102,7 +1102,8 @@ static int qla4xxx_recover_adapter(struct scsi_qla_host *ha)
1102 ha->host_no, __func__)); 1102 ha->host_no, __func__));
1103 status = ha->isp_ops->reset_firmware(ha); 1103 status = ha->isp_ops->reset_firmware(ha);
1104 if (status == QLA_SUCCESS) { 1104 if (status == QLA_SUCCESS) {
1105 qla4xxx_cmd_wait(ha); 1105 if (!test_bit(AF_FW_RECOVERY, &ha->flags))
1106 qla4xxx_cmd_wait(ha);
1106 ha->isp_ops->disable_intrs(ha); 1107 ha->isp_ops->disable_intrs(ha);
1107 qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS); 1108 qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS);
1108 qla4xxx_abort_active_cmds(ha, DID_RESET << 16); 1109 qla4xxx_abort_active_cmds(ha, DID_RESET << 16);
@@ -1119,7 +1120,8 @@ static int qla4xxx_recover_adapter(struct scsi_qla_host *ha)
1119 * or if stop_firmware fails for ISP-82xx. 1120 * or if stop_firmware fails for ISP-82xx.
1120 * This is the default case for ISP-4xxx */ 1121 * This is the default case for ISP-4xxx */
1121 if (!is_qla8022(ha) || reset_chip) { 1122 if (!is_qla8022(ha) || reset_chip) {
1122 qla4xxx_cmd_wait(ha); 1123 if (!test_bit(AF_FW_RECOVERY, &ha->flags))
1124 qla4xxx_cmd_wait(ha);
1123 qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS); 1125 qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS);
1124 qla4xxx_abort_active_cmds(ha, DID_RESET << 16); 1126 qla4xxx_abort_active_cmds(ha, DID_RESET << 16);
1125 DEBUG2(ql4_printk(KERN_INFO, ha, 1127 DEBUG2(ql4_printk(KERN_INFO, ha,