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,8 +557,8 @@ out:
|
|||||||
*
|
*
|
||||||
* Return: QDF status
|
* Return: QDF status
|
||||||
*/
|
*/
|
||||||
static
|
static QDF_STATUS
|
||||||
QDF_STATUS pmo_core_enable_wow_in_fw(struct wlan_objmgr_psoc *psoc,
|
pmo_core_enable_wow_in_fw(struct wlan_objmgr_psoc *psoc,
|
||||||
struct pmo_psoc_priv_obj *psoc_ctx,
|
struct pmo_psoc_priv_obj *psoc_ctx,
|
||||||
struct pmo_wow_enable_params *wow_params)
|
struct pmo_wow_enable_params *wow_params)
|
||||||
{
|
{
|
||||||
@@ -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);
|
pmo_tgt_update_target_suspend_flag(psoc, true);
|
||||||
|
|
||||||
if (qdf_wait_for_event_completion(&psoc_ctx->wow.target_suspend,
|
status = qdf_wait_for_event_completion(&psoc_ctx->wow.target_suspend,
|
||||||
PMO_TGT_SUSPEND_COMPLETE_TIMEOUT)
|
PMO_TARGET_SUSPEND_TIMEOUT);
|
||||||
!= QDF_STATUS_SUCCESS) {
|
if (QDF_IS_STATUS_ERROR(status)) {
|
||||||
pmo_err("Failed to receive WoW Enable Ack from FW");
|
pmo_err("Failed to receive WoW Enable Ack from FW");
|
||||||
pmo_err("Credits:%d; Pending_Cmds: %d",
|
pmo_err("Credits:%d; Pending_Cmds: %d",
|
||||||
pmo_tgt_psoc_get_host_credits(psoc),
|
pmo_tgt_psoc_get_host_credits(psoc),
|
||||||
pmo_tgt_psoc_get_pending_cmnds(psoc));
|
pmo_tgt_psoc_get_pending_cmnds(psoc));
|
||||||
pmo_tgt_update_target_suspend_flag(psoc, false);
|
pmo_tgt_update_target_suspend_flag(psoc, false);
|
||||||
status = QDF_STATUS_E_FAILURE;
|
|
||||||
qdf_trigger_self_recovery();
|
qdf_trigger_self_recovery();
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
@@ -654,6 +653,7 @@ QDF_STATUS pmo_core_enable_wow_in_fw(struct wlan_objmgr_psoc *psoc,
|
|||||||
host_credits, wmi_pending_cmds);
|
host_credits, wmi_pending_cmds);
|
||||||
|
|
||||||
pmo_core_update_wow_enable_cmd_sent(psoc_ctx, true);
|
pmo_core_update_wow_enable_cmd_sent(psoc_ctx, true);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
pmo_exit();
|
pmo_exit();
|
||||||
|
|
||||||
@@ -679,14 +679,14 @@ QDF_STATUS pmo_core_psoc_suspend_target(struct wlan_objmgr_psoc *psoc,
|
|||||||
|
|
||||||
pmo_tgt_update_target_suspend_flag(psoc, true);
|
pmo_tgt_update_target_suspend_flag(psoc, true);
|
||||||
|
|
||||||
if (qdf_wait_for_event_completion(&psoc_ctx->wow.target_suspend,
|
status = qdf_wait_for_event_completion(&psoc_ctx->wow.target_suspend,
|
||||||
PMO_TGT_SUSPEND_COMPLETE_TIMEOUT)
|
PMO_TARGET_SUSPEND_TIMEOUT);
|
||||||
!= QDF_STATUS_SUCCESS) {
|
if (QDF_IS_STATUS_ERROR(status)) {
|
||||||
status = QDF_STATUS_E_TIMEOUT;
|
|
||||||
pmo_err("Failed to get ACK from firmware for pdev suspend");
|
pmo_err("Failed to get ACK from firmware for pdev suspend");
|
||||||
pmo_tgt_update_target_suspend_flag(psoc, false);
|
pmo_tgt_update_target_suspend_flag(psoc, false);
|
||||||
/* wma_suspend_target_timeout(pmac->sme.enableSelfRecovery); */
|
qdf_trigger_self_recovery();
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
pmo_exit();
|
pmo_exit();
|
||||||
|
|
||||||
|
@@ -183,7 +183,7 @@ enum pmo_wow_interface_pause {
|
|||||||
PMO_WOW_INTERFACE_PAUSE_COUNT
|
PMO_WOW_INTERFACE_PAUSE_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
#define PMO_TGT_SUSPEND_COMPLETE_TIMEOUT 6000
|
#define PMO_TARGET_SUSPEND_TIMEOUT 6000
|
||||||
#define PMO_WAKE_LOCK_TIMEOUT 1000
|
#define PMO_WAKE_LOCK_TIMEOUT 1000
|
||||||
#define PMO_RESUME_TIMEOUT 6000
|
#define PMO_RESUME_TIMEOUT 6000
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user