diff --git a/components/pmo/core/src/wlan_pmo_suspend_resume.c b/components/pmo/core/src/wlan_pmo_suspend_resume.c index 9ee87206b3..4e0492a2e0 100644 --- a/components/pmo/core/src/wlan_pmo_suspend_resume.c +++ b/components/pmo/core/src/wlan_pmo_suspend_resume.c @@ -622,12 +622,14 @@ static inline void pmo_unpause_all_vdev(struct wlan_objmgr_psoc *psoc, /** * pmo_core_psoc_configure_resume(): configure events after bus resume * @psoc: objmgr psoc + * @is_runtime_pm: indicate if it is used by runtime PM * * Responsibility of the caller to take the psoc reference. * * Return: QDF_STATUS_SUCCESS for success or error code */ -static QDF_STATUS pmo_core_psoc_configure_resume(struct wlan_objmgr_psoc *psoc) +static QDF_STATUS pmo_core_psoc_configure_resume(struct wlan_objmgr_psoc *psoc, + bool is_runtime_pm) { struct pmo_psoc_priv_obj *psoc_ctx; @@ -635,7 +637,13 @@ static QDF_STATUS pmo_core_psoc_configure_resume(struct wlan_objmgr_psoc *psoc) psoc_ctx = pmo_psoc_get_priv(psoc); - pmo_core_set_resume_dtim(psoc); + /* + * For runtime PM, since system is awake, DTIM related commands + * do not have to be sent with WOW sequence. They can be sent + * through other paths which will just trigger a runtime resume. + */ + if (!is_runtime_pm) + pmo_core_set_resume_dtim(psoc); pmo_core_update_wow_bus_suspend(psoc, psoc_ctx, false); pmo_unpause_all_vdev(psoc, psoc_ctx); @@ -664,7 +672,7 @@ QDF_STATUS pmo_core_psoc_user_space_resume_req(struct wlan_objmgr_psoc *psoc, goto dec_psoc_ref; } - status = pmo_core_psoc_configure_resume(psoc); + status = pmo_core_psoc_configure_resume(psoc, false); if (status != QDF_STATUS_SUCCESS) pmo_err("Failed to configure resume"); @@ -977,7 +985,7 @@ pmo_bus_resume: pmo_resume_configure: QDF_BUG(QDF_STATUS_SUCCESS == - pmo_core_psoc_configure_resume(psoc)); + pmo_core_psoc_configure_resume(psoc, true)); resume_htc: QDF_BUG(QDF_STATUS_SUCCESS == @@ -1053,7 +1061,7 @@ QDF_STATUS pmo_core_psoc_bus_runtime_resume(struct wlan_objmgr_psoc *psoc, if (status != QDF_STATUS_SUCCESS) goto fail; - status = pmo_core_psoc_configure_resume(psoc); + status = pmo_core_psoc_configure_resume(psoc, true); if (status != QDF_STATUS_SUCCESS) goto fail;