diff options
author | Lalit Chandivade <lalit.chandivade@qlogic.com> | 2009-03-24 12:08:09 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-04-03 10:22:50 -0400 |
commit | d0c3eefae09e4c19d6da1ed2417e02d8377b1eb3 (patch) | |
tree | 3202b0399a6315e83c2c049a0feddf9eb3778740 /drivers/scsi/qla2xxx | |
parent | 6e181be508cf81fda4407b4689befeb7e4149607 (diff) |
[SCSI] qla2xxx: Remove implicit ISP-abort after a flash update.
For ISP24xx and above the ISP-abort after flash update is not
needed, as the only purpose it was serving was to update the boot
code and firmware versions in the scsi_qla_host_t structure. Now
an update of the versions will be done in the write-vpd path.
Signed-off-by: Lalit Chandivade <lalit.chandivade@qlogic.com>
Additional cleanups and
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_attr.c | 14 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_sup.c | 4 |
2 files changed, 14 insertions, 4 deletions
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c index 1f1a7c0e88e7..70e60651c48d 100644 --- a/drivers/scsi/qla2xxx/qla_attr.c +++ b/drivers/scsi/qla2xxx/qla_attr.c | |||
@@ -391,6 +391,7 @@ qla2x00_sysfs_write_vpd(struct kobject *kobj, | |||
391 | struct scsi_qla_host *vha = shost_priv(dev_to_shost(container_of(kobj, | 391 | struct scsi_qla_host *vha = shost_priv(dev_to_shost(container_of(kobj, |
392 | struct device, kobj))); | 392 | struct device, kobj))); |
393 | struct qla_hw_data *ha = vha->hw; | 393 | struct qla_hw_data *ha = vha->hw; |
394 | uint8_t *tmp_data; | ||
394 | 395 | ||
395 | if (!capable(CAP_SYS_ADMIN) || off != 0 || count != ha->vpd_size) | 396 | if (!capable(CAP_SYS_ADMIN) || off != 0 || count != ha->vpd_size) |
396 | return 0; | 397 | return 0; |
@@ -405,6 +406,19 @@ qla2x00_sysfs_write_vpd(struct kobject *kobj, | |||
405 | ha->isp_ops->write_nvram(vha, (uint8_t *)buf, ha->vpd_base, count); | 406 | ha->isp_ops->write_nvram(vha, (uint8_t *)buf, ha->vpd_base, count); |
406 | ha->isp_ops->read_nvram(vha, (uint8_t *)ha->vpd, ha->vpd_base, count); | 407 | ha->isp_ops->read_nvram(vha, (uint8_t *)ha->vpd, ha->vpd_base, count); |
407 | 408 | ||
409 | /* Update flash version information for 4Gb & above. */ | ||
410 | if (!IS_FWI2_CAPABLE(ha)) | ||
411 | goto done; | ||
412 | |||
413 | tmp_data = vmalloc(256); | ||
414 | if (!tmp_data) { | ||
415 | qla_printk(KERN_WARNING, ha, | ||
416 | "Unable to allocate memory for VPD information update.\n"); | ||
417 | goto done; | ||
418 | } | ||
419 | ha->isp_ops->get_flash_version(vha, tmp_data); | ||
420 | vfree(tmp_data); | ||
421 | done: | ||
408 | return count; | 422 | return count; |
409 | } | 423 | } |
410 | 424 | ||
diff --git a/drivers/scsi/qla2xxx/qla_sup.c b/drivers/scsi/qla2xxx/qla_sup.c index 09f893dc572d..468c114e937e 100644 --- a/drivers/scsi/qla2xxx/qla_sup.c +++ b/drivers/scsi/qla2xxx/qla_sup.c | |||
@@ -2240,11 +2240,7 @@ qla24xx_write_optrom_data(struct scsi_qla_host *vha, uint8_t *buf, | |||
2240 | rval = qla24xx_write_flash_data(vha, (uint32_t *)buf, offset >> 2, | 2240 | rval = qla24xx_write_flash_data(vha, (uint32_t *)buf, offset >> 2, |
2241 | length >> 2); | 2241 | length >> 2); |
2242 | 2242 | ||
2243 | /* Resume HBA -- RISC reset needed. */ | ||
2244 | clear_bit(MBX_UPDATE_FLASH_ACTIVE, &ha->mbx_cmd_flags); | 2243 | clear_bit(MBX_UPDATE_FLASH_ACTIVE, &ha->mbx_cmd_flags); |
2245 | set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags); | ||
2246 | qla2xxx_wake_dpc(vha); | ||
2247 | qla2x00_wait_for_hba_online(vha); | ||
2248 | scsi_unblock_requests(vha->host); | 2244 | scsi_unblock_requests(vha->host); |
2249 | 2245 | ||
2250 | return rval; | 2246 | return rval; |