From d69ec37568ea1c575de3a85eaebccc27afda7bbf Mon Sep 17 00:00:00 2001 From: Dustin Brown Date: Thu, 29 Mar 2018 10:48:06 -0700 Subject: [PATCH] qcacld-3.0: Trigger recovery on pdev suspend timeout Historically, recovery was triggered if PDEV suspend failed, but the logic was lost during componentization. Restore the previous logic of triggering recovery on PDEV suspend timeout. Change-Id: I6e193e98c5ef45fd7ab4b6595ea85d986fa84131 CRs-Fixed: 2215588 --- .../pmo/core/src/wlan_pmo_suspend_resume.c | 28 +++++++++---------- .../inc/wlan_pmo_common_public_struct.h | 6 ++-- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/components/pmo/core/src/wlan_pmo_suspend_resume.c b/components/pmo/core/src/wlan_pmo_suspend_resume.c index c41effed2c..2da344c736 100644 --- a/components/pmo/core/src/wlan_pmo_suspend_resume.c +++ b/components/pmo/core/src/wlan_pmo_suspend_resume.c @@ -557,10 +557,10 @@ out: * * Return: QDF status */ -static -QDF_STATUS pmo_core_enable_wow_in_fw(struct wlan_objmgr_psoc *psoc, - struct pmo_psoc_priv_obj *psoc_ctx, - struct pmo_wow_enable_params *wow_params) +static QDF_STATUS +pmo_core_enable_wow_in_fw(struct wlan_objmgr_psoc *psoc, + struct pmo_psoc_priv_obj *psoc_ctx, + struct pmo_wow_enable_params *wow_params) { int host_credits, wmi_pending_cmds; struct pmo_wow_cmd_params param = {0}; @@ -621,15 +621,14 @@ QDF_STATUS pmo_core_enable_wow_in_fw(struct wlan_objmgr_psoc *psoc, pmo_tgt_update_target_suspend_flag(psoc, true); - if (qdf_wait_for_event_completion(&psoc_ctx->wow.target_suspend, - PMO_TGT_SUSPEND_COMPLETE_TIMEOUT) - != QDF_STATUS_SUCCESS) { + status = qdf_wait_for_event_completion(&psoc_ctx->wow.target_suspend, + PMO_TARGET_SUSPEND_TIMEOUT); + if (QDF_IS_STATUS_ERROR(status)) { pmo_err("Failed to receive WoW Enable Ack from FW"); pmo_err("Credits:%d; Pending_Cmds: %d", pmo_tgt_psoc_get_host_credits(psoc), pmo_tgt_psoc_get_pending_cmnds(psoc)); pmo_tgt_update_target_suspend_flag(psoc, false); - status = QDF_STATUS_E_FAILURE; qdf_trigger_self_recovery(); goto out; } @@ -654,6 +653,7 @@ QDF_STATUS pmo_core_enable_wow_in_fw(struct wlan_objmgr_psoc *psoc, host_credits, wmi_pending_cmds); pmo_core_update_wow_enable_cmd_sent(psoc_ctx, true); + out: pmo_exit(); @@ -661,7 +661,7 @@ out: } QDF_STATUS pmo_core_psoc_suspend_target(struct wlan_objmgr_psoc *psoc, - int disable_target_intr) + int disable_target_intr) { QDF_STATUS status; struct pmo_suspend_params param; @@ -679,14 +679,14 @@ QDF_STATUS pmo_core_psoc_suspend_target(struct wlan_objmgr_psoc *psoc, pmo_tgt_update_target_suspend_flag(psoc, true); - if (qdf_wait_for_event_completion(&psoc_ctx->wow.target_suspend, - PMO_TGT_SUSPEND_COMPLETE_TIMEOUT) - != QDF_STATUS_SUCCESS) { - status = QDF_STATUS_E_TIMEOUT; + status = qdf_wait_for_event_completion(&psoc_ctx->wow.target_suspend, + PMO_TARGET_SUSPEND_TIMEOUT); + if (QDF_IS_STATUS_ERROR(status)) { pmo_err("Failed to get ACK from firmware for pdev suspend"); pmo_tgt_update_target_suspend_flag(psoc, false); - /* wma_suspend_target_timeout(pmac->sme.enableSelfRecovery); */ + qdf_trigger_self_recovery(); } + out: pmo_exit(); diff --git a/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h b/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h index 9456541fea..887776f48c 100644 --- a/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h +++ b/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h @@ -183,9 +183,9 @@ enum pmo_wow_interface_pause { PMO_WOW_INTERFACE_PAUSE_COUNT }; -#define PMO_TGT_SUSPEND_COMPLETE_TIMEOUT 6000 -#define PMO_WAKE_LOCK_TIMEOUT 1000 -#define PMO_RESUME_TIMEOUT 6000 +#define PMO_TARGET_SUSPEND_TIMEOUT 6000 +#define PMO_WAKE_LOCK_TIMEOUT 1000 +#define PMO_RESUME_TIMEOUT 6000 /** * struct wow_enable_params - A collection of wow enable override parameters