aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx
diff options
context:
space:
mode:
authorLalit Chandivade <lalit.chandivade@qlogic.com>2009-03-24 12:08:09 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2009-04-03 10:22:50 -0400
commitd0c3eefae09e4c19d6da1ed2417e02d8377b1eb3 (patch)
tree3202b0399a6315e83c2c049a0feddf9eb3778740 /drivers/scsi/qla2xxx
parent6e181be508cf81fda4407b4689befeb7e4149607 (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.c14
-rw-r--r--drivers/scsi/qla2xxx/qla_sup.c4
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);
421done:
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;