Commit dda772e8 authored by Andrew Vasquez's avatar Andrew Vasquez Committed by James Bottomley

[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: default avatarAndrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
parent 6315a5f8
...@@ -963,6 +963,7 @@ qla2x00_setup_chip(scsi_qla_host_t *vha) ...@@ -963,6 +963,7 @@ qla2x00_setup_chip(scsi_qla_host_t *vha)
struct qla_hw_data *ha = vha->hw; struct qla_hw_data *ha = vha->hw;
struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
unsigned long flags; unsigned long flags;
uint16_t fw_major_version;
if (!IS_FWI2_CAPABLE(ha) && !IS_QLA2100(ha) && !IS_QLA2200(ha)) { if (!IS_FWI2_CAPABLE(ha) && !IS_QLA2100(ha) && !IS_QLA2200(ha)) {
/* Disable SRAM, Instruction RAM and GP RAM parity. */ /* Disable SRAM, Instruction RAM and GP RAM parity. */
...@@ -986,7 +987,8 @@ qla2x00_setup_chip(scsi_qla_host_t *vha) ...@@ -986,7 +987,8 @@ qla2x00_setup_chip(scsi_qla_host_t *vha)
rval = qla2x00_execute_fw(vha, srisc_address); rval = qla2x00_execute_fw(vha, srisc_address);
/* Retrieve firmware information. */ /* Retrieve firmware information. */
if (rval == QLA_SUCCESS && ha->fw_major_version == 0) { if (rval == QLA_SUCCESS) {
fw_major_version = ha->fw_major_version;
qla2x00_get_fw_version(vha, qla2x00_get_fw_version(vha,
&ha->fw_major_version, &ha->fw_major_version,
&ha->fw_minor_version, &ha->fw_minor_version,
...@@ -1003,11 +1005,12 @@ qla2x00_setup_chip(scsi_qla_host_t *vha) ...@@ -1003,11 +1005,12 @@ qla2x00_setup_chip(scsi_qla_host_t *vha)
ha->max_npiv_vports = ha->max_npiv_vports =
MIN_MULTI_ID_FABRIC - 1; MIN_MULTI_ID_FABRIC - 1;
} }
if (!fw_major_version) {
qla2x00_resize_request_q(vha); qla2x00_resize_request_q(vha);
if (ql2xallocfwdump) if (ql2xallocfwdump)
qla2x00_alloc_fw_dump(vha); qla2x00_alloc_fw_dump(vha);
} }
}
} else { } else {
DEBUG2(printk(KERN_INFO DEBUG2(printk(KERN_INFO
"scsi(%ld): ISP Firmware failed checksum.\n", "scsi(%ld): ISP Firmware failed checksum.\n",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment