diff options
| -rw-r--r-- | core/cds/src/cds_api.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/core/cds/src/cds_api.c b/core/cds/src/cds_api.c index 3a56b7f19fc7..a0b173bd57cd 100644 --- a/core/cds/src/cds_api.c +++ b/core/cds/src/cds_api.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -1874,14 +1874,24 @@ static void cds_trigger_recovery_work(void *param) struct qdf_runtime_lock recovery_lock; qdf_device_t qdf_ctx; - if (!cds_is_self_recovery_enabled()) { - cds_err("Recovery is not enabled"); - QDF_BUG(0); + if (cds_is_driver_recovering()) { + cds_err("Recovery in progress; ignoring recovery trigger"); return; } - if (cds_is_driver_recovering() || cds_is_driver_in_bad_state()) { - cds_err("Recovery in progress; ignoring recovery trigger"); + if (cds_is_driver_in_bad_state()) { + cds_err("Driver is in bad state; ignoring recovery trigger"); + return; + } + + if (cds_is_fw_down()) { + cds_err("firmware is down; ignoring recovery trigger"); + return; + } + + if (!cds_is_self_recovery_enabled()) { + cds_err("Recovery is not enabled"); + QDF_BUG(0); return; } |
