scsi: qla2xxx: Add retry for exec firmware

Per FW request, Exec FW can fail due to temporary error resulting in driver
not attaching to the adapter. Add retry of this command up to 4 retries.

Link: https://lore.kernel.org/r/20220110050218.3958-8-njavali@marvell.com
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Quinn Tran <qutran@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Quinn Tran 2022-01-09 21:02:08 -08:00 committed by Martin K. Petersen
parent afd438ff87
commit 355f5ffe84

View File

@ -689,7 +689,7 @@ qla2x00_execute_fw(scsi_qla_host_t *vha, uint32_t risc_addr)
mbx_cmd_t *mcp = &mc;
u8 semaphore = 0;
#define EXE_FW_FORCE_SEMAPHORE BIT_7
u8 retry = 3;
u8 retry = 5;
ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x1025,
"Entered %s.\n", __func__);
@ -764,6 +764,12 @@ again:
goto again;
}
if (retry) {
retry--;
ql_dbg(ql_dbg_async, vha, 0x509d,
"Exe FW retry: mb[0]=%x retry[%d]\n", mcp->mb[0], retry);
goto again;
}
ql_dbg(ql_dbg_mbx, vha, 0x1026,
"Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
vha->hw_err_cnt++;