diff options
author | Nilesh Javali <nilesh.javali@qlogic.com> | 2010-10-07 01:49:20 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-10-25 15:50:38 -0400 |
commit | 2bd1e2be8f7cce153a356a971012b9a604f9a412 (patch) | |
tree | 84e84975e2b698c9353c65545bd587a7ee105401 /drivers/scsi/qla4xxx | |
parent | 3710c60c09f555df69d12b0232702d062fe3bcd6 (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/qla4xxx')
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_os.c | 6 |
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, |