scsi: qla2xxx: Defer chip reset until target mode is enabled
[ Upstream commit 93eca6135183f7a71e36acd47655a085ed11bcdc ] For target mode, any chip reset triggered before target mode is enabled will be held off until user is ready to enable. This prevents the chip from starting or running before it is intended. Signed-off-by: Quinn Tran <quinn.tran@cavium.com> Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
18d7d33567
commit
32fd94c6db
@ -5801,12 +5801,27 @@ qla2x00_do_dpc(void *data)
|
||||
if (test_and_clear_bit
|
||||
(ISP_ABORT_NEEDED, &base_vha->dpc_flags) &&
|
||||
!test_bit(UNLOADING, &base_vha->dpc_flags)) {
|
||||
bool do_reset = true;
|
||||
|
||||
ql_dbg(ql_dbg_dpc, base_vha, 0x4007,
|
||||
"ISP abort scheduled.\n");
|
||||
if (!(test_and_set_bit(ABORT_ISP_ACTIVE,
|
||||
switch (ql2x_ini_mode) {
|
||||
case QLA2XXX_INI_MODE_ENABLED:
|
||||
break;
|
||||
case QLA2XXX_INI_MODE_DISABLED:
|
||||
if (!qla_tgt_mode_enabled(base_vha))
|
||||
do_reset = false;
|
||||
break;
|
||||
case QLA2XXX_INI_MODE_DUAL:
|
||||
if (!qla_dual_mode_enabled(base_vha))
|
||||
do_reset = false;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (do_reset && !(test_and_set_bit(ABORT_ISP_ACTIVE,
|
||||
&base_vha->dpc_flags))) {
|
||||
|
||||
ql_dbg(ql_dbg_dpc, base_vha, 0x4007,
|
||||
"ISP abort scheduled.\n");
|
||||
if (ha->isp_ops->abort_isp(base_vha)) {
|
||||
/* failed. retry later */
|
||||
set_bit(ISP_ABORT_NEEDED,
|
||||
@ -5814,10 +5829,9 @@ qla2x00_do_dpc(void *data)
|
||||
}
|
||||
clear_bit(ABORT_ISP_ACTIVE,
|
||||
&base_vha->dpc_flags);
|
||||
ql_dbg(ql_dbg_dpc, base_vha, 0x4008,
|
||||
"ISP abort end.\n");
|
||||
}
|
||||
|
||||
ql_dbg(ql_dbg_dpc, base_vha, 0x4008,
|
||||
"ISP abort end.\n");
|
||||
}
|
||||
|
||||
if (test_and_clear_bit(FCPORT_UPDATE_NEEDED,
|
||||
|
Loading…
x
Reference in New Issue
Block a user