diff options
author | Andrew Vasquez <andrew.vasquez@qlogic.com> | 2009-03-24 12:08:00 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-04-03 10:22:45 -0400 |
commit | dda772e8e3b9832d3368f84df3a3b7ec7dfbd9f0 (patch) | |
tree | e07e620bd47677918a0aa703193b89f04d5ed269 /drivers/scsi/qla2xxx | |
parent | 6315a5f810d8cf622ac9b28ace565fb2d1add911 (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/scsi/qla2xxx')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_init.c | 13 |
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 |