aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2009-03-24 12:08:00 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2009-04-03 10:22:45 -0400
commitdda772e8e3b9832d3368f84df3a3b7ec7dfbd9f0 (patch)
treee07e620bd47677918a0aa703193b89f04d5ed269 /drivers
parent6315a5f810d8cf622ac9b28ace565fb2d1add911 (diff)
[SCSI] qla2xxx: Always (re)read firmware version/capabilities information.
With recent ISPs loading firmware from flash, a flash-update to the firmware-image region with a follow-on reset will reload the new image. Original caching of data only made sense when firmware was bound with the driver. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 1d28b5335648..a8a0f138bc26 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -963,6 +963,7 @@ qla2x00_setup_chip(scsi_qla_host_t *vha)
963 struct qla_hw_data *ha = vha->hw; 963 struct qla_hw_data *ha = vha->hw;
964 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; 964 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
965 unsigned long flags; 965 unsigned long flags;
966 uint16_t fw_major_version;
966 967
967 if (!IS_FWI2_CAPABLE(ha) && !IS_QLA2100(ha) && !IS_QLA2200(ha)) { 968 if (!IS_FWI2_CAPABLE(ha) && !IS_QLA2100(ha) && !IS_QLA2200(ha)) {
968 /* Disable SRAM, Instruction RAM and GP RAM parity. */ 969 /* Disable SRAM, Instruction RAM and GP RAM parity. */
@@ -986,7 +987,8 @@ qla2x00_setup_chip(scsi_qla_host_t *vha)
986 987
987 rval = qla2x00_execute_fw(vha, srisc_address); 988 rval = qla2x00_execute_fw(vha, srisc_address);
988 /* Retrieve firmware information. */ 989 /* Retrieve firmware information. */
989 if (rval == QLA_SUCCESS && ha->fw_major_version == 0) { 990 if (rval == QLA_SUCCESS) {
991 fw_major_version = ha->fw_major_version;
990 qla2x00_get_fw_version(vha, 992 qla2x00_get_fw_version(vha,
991 &ha->fw_major_version, 993 &ha->fw_major_version,
992 &ha->fw_minor_version, 994 &ha->fw_minor_version,
@@ -1003,10 +1005,11 @@ qla2x00_setup_chip(scsi_qla_host_t *vha)
1003 ha->max_npiv_vports = 1005 ha->max_npiv_vports =
1004 MIN_MULTI_ID_FABRIC - 1; 1006 MIN_MULTI_ID_FABRIC - 1;
1005 } 1007 }
1006 qla2x00_resize_request_q(vha); 1008 if (!fw_major_version) {
1007 1009 qla2x00_resize_request_q(vha);
1008 if (ql2xallocfwdump) 1010 if (ql2xallocfwdump)
1009 qla2x00_alloc_fw_dump(vha); 1011 qla2x00_alloc_fw_dump(vha);
1012 }
1010 } 1013 }
1011 } else { 1014 } else {
1012 DEBUG2(printk(KERN_INFO 1015 DEBUG2(printk(KERN_INFO