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:
@@ -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();
|
||||
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user