qla2x00t-32gbit: Return appropriate failure through BSG Interface

This patch ensures flash updates API calls return possible failure
status through BSG interface to the application.

Link: https://lore.kernel.org/r/20200226224022.24518-7-hmadhani@marvell.com
Signed-off-by: Himanshu Madhani <hmadhani@marvell.com>
Signed-off-by: Michael Hernandez <mhernandez@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

[ commit 1b81e7f3019d632a707e07927e946ffbbc102910 upstream ]


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@8820 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Bart Van Assche
2020-03-07 21:33:31 +00:00
parent f3061aef5f
commit c04763810c
2 changed files with 15 additions and 7 deletions
+7 -2
View File
@@ -1601,10 +1601,15 @@ qla2x00_update_optrom(struct bsg_job *bsg_job)
bsg_job->request_payload.sg_cnt, ha->optrom_buffer,
ha->optrom_region_size);
ha->isp_ops->write_optrom(vha, ha->optrom_buffer,
rval = ha->isp_ops->write_optrom(vha, ha->optrom_buffer,
ha->optrom_region_start, ha->optrom_region_size);
bsg_reply->result = DID_OK;
if (rval) {
bsg_reply->result = -EINVAL;
rval = -EINVAL;
} else {
bsg_reply->result = DID_OK;
}
vfree(ha->optrom_buffer);
ha->optrom_buffer = NULL;
ha->optrom_state = QLA_SWAITING;
+8 -5
View File
@@ -2686,7 +2686,7 @@ qla28xx_write_flash_data(scsi_qla_host_t *vha, uint32_t *dwptr, uint32_t faddr,
uint32_t sec_mask, rest_addr, fdata;
void *optrom = NULL;
dma_addr_t optrom_dma;
int rval;
int rval, ret;
struct secure_flash_update_block *sfub;
dma_addr_t sfub_dma;
uint32_t offset = faddr << 2;
@@ -2942,11 +2942,12 @@ qla28xx_write_flash_data(scsi_qla_host_t *vha, uint32_t *dwptr, uint32_t faddr,
write_protect:
ql_log(ql_log_warn + ql_dbg_verbose, vha, 0x7095,
"Protect flash...\n");
rval = qla24xx_protect_flash(vha);
if (rval) {
ret = qla24xx_protect_flash(vha);
if (ret) {
qla81xx_fac_semaphore_access(vha, FAC_SEMAPHORE_UNLOCK);
ql_log(ql_log_warn, vha, 0x7099,
"Failed protect flash\n");
rval = QLA_COMMAND_ERROR;
}
if (reset_to_rom == true) {
@@ -2954,10 +2955,12 @@ write_protect:
set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags);
qla2xxx_wake_dpc(vha);
rval = qla2x00_wait_for_hba_online(vha);
if (rval != QLA_SUCCESS)
ret = qla2x00_wait_for_hba_online(vha);
if (ret != QLA_SUCCESS) {
ql_log(ql_log_warn, vha, 0xffff,
"Adapter did not come out of reset\n");
rval = QLA_COMMAND_ERROR;
}
}
done: