From: Andrew Vasquez Date: Tue, 24 Mar 2009 16:08:00 +0000 (-0700) Subject: [SCSI] qla2xxx: Always (re)read firmware version/capabilities information. X-Git-Tag: v2.6.30-rc1~185^2~63 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=dda772e8e3b9832d3368f84df3a3b7ec7dfbd9f0;p=karo-tx-linux.git [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 Signed-off-by: James Bottomley --- 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) struct qla_hw_data *ha = vha->hw; struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; unsigned long flags; + uint16_t fw_major_version; if (!IS_FWI2_CAPABLE(ha) && !IS_QLA2100(ha) && !IS_QLA2200(ha)) { /* Disable SRAM, Instruction RAM and GP RAM parity. */ @@ -986,7 +987,8 @@ qla2x00_setup_chip(scsi_qla_host_t *vha) rval = qla2x00_execute_fw(vha, srisc_address); /* 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, &ha->fw_major_version, &ha->fw_minor_version, @@ -1003,10 +1005,11 @@ qla2x00_setup_chip(scsi_qla_host_t *vha) ha->max_npiv_vports = MIN_MULTI_ID_FABRIC - 1; } - qla2x00_resize_request_q(vha); - - if (ql2xallocfwdump) - qla2x00_alloc_fw_dump(vha); + if (!fw_major_version) { + qla2x00_resize_request_q(vha); + if (ql2xallocfwdump) + qla2x00_alloc_fw_dump(vha); + } } } else { DEBUG2(printk(KERN_INFO