summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Vasquez2009-04-07 07:33:48 +0200
committerJames Bottomley2009-05-21 00:21:10 +0200
commitb469a7cbe9bf68939c90f4ac6bc2bb99e47d7229 (patch)
treec3cbabe580d0a98ace262611e3152a105357e838
parent[SCSI] qla2xxx: Conditionally disable automatic queue full tracking. (diff)
downloadkernel-qcow2-linux-b469a7cbe9bf68939c90f4ac6bc2bb99e47d7229.tar.gz
kernel-qcow2-linux-b469a7cbe9bf68939c90f4ac6bc2bb99e47d7229.tar.xz
kernel-qcow2-linux-b469a7cbe9bf68939c90f4ac6bc2bb99e47d7229.zip
[SCSI] qla2xxx: Don't try to 'stop' firmware if already in ROM code.
Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c2
-rw-r--r--drivers/scsi/qla2xxx/qla_mbx.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index a4a6a146fccd..138ae88e9e4d 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -4153,7 +4153,7 @@ qla2x00_try_to_stop_firmware(scsi_qla_host_t *vha)
ret = qla2x00_stop_firmware(vha);
for (retries = 5; ret != QLA_SUCCESS && ret != QLA_FUNCTION_TIMEOUT &&
- retries ; retries--) {
+ ret != QLA_INVALID_COMMAND && retries ; retries--) {
ha->isp_ops->reset_chip(vha);
if (ha->isp_ops->chip_diag(vha) != QLA_SUCCESS)
continue;
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index 258c39d8f448..7d0eeec9ba57 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -2477,6 +2477,8 @@ qla2x00_stop_firmware(scsi_qla_host_t *vha)
if (rval != QLA_SUCCESS) {
DEBUG2_3_11(printk("%s(%ld): failed=%x.\n", __func__,
vha->host_no, rval));
+ if (mcp->mb[0] == MBS_INVALID_COMMAND)
+ rval = QLA_INVALID_COMMAND;
} else {
DEBUG11(printk("%s(%ld): done.\n", __func__, vha->host_no));
}