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
This commit is contained in:
Dustin Brown
2018-03-29 10:48:06 -07:00
committed by nshrivas
parent 604a7e1f53
commit d69ec37568
2 changed files with 17 additions and 17 deletions

View File

@@ -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();

View File

@@ -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