|
@@ -1003,6 +1003,7 @@ QDF_STATUS pmo_core_txrx_suspend(struct wlan_objmgr_psoc *psoc)
|
|
|
goto out;
|
|
|
|
|
|
cdp_drain_txrx(dp_soc);
|
|
|
+ pmo_ctx->wow.txrx_suspended = true;
|
|
|
out:
|
|
|
pmo_psoc_put_ref(psoc);
|
|
|
return status;
|
|
@@ -1022,7 +1023,7 @@ QDF_STATUS pmo_core_txrx_resume(struct wlan_objmgr_psoc *psoc)
|
|
|
}
|
|
|
|
|
|
pmo_ctx = pmo_psoc_get_priv(psoc);
|
|
|
- if (pmo_core_get_wow_state(pmo_ctx) != pmo_wow_state_unified_d3)
|
|
|
+ if (!pmo_ctx->wow.txrx_suspended)
|
|
|
goto out;
|
|
|
|
|
|
hif_ctx = pmo_core_psoc_get_hif_handle(psoc);
|
|
@@ -1036,7 +1037,10 @@ QDF_STATUS pmo_core_txrx_resume(struct wlan_objmgr_psoc *psoc)
|
|
|
if (ret && ret != -EOPNOTSUPP) {
|
|
|
pmo_err("Failed to enable grp irqs: %d", ret);
|
|
|
status = qdf_status_from_os_return(ret);
|
|
|
+ goto out;
|
|
|
}
|
|
|
+
|
|
|
+ pmo_ctx->wow.txrx_suspended = false;
|
|
|
out:
|
|
|
pmo_psoc_put_ref(psoc);
|
|
|
return status;
|
|
@@ -1266,10 +1270,6 @@ QDF_STATUS pmo_core_psoc_bus_runtime_resume(struct wlan_objmgr_psoc *psoc,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- status = pmo_core_txrx_resume(psoc);
|
|
|
- if (QDF_IS_STATUS_ERROR(status))
|
|
|
- goto fail;
|
|
|
-
|
|
|
if (hif_runtime_resume(hif_ctx)) {
|
|
|
status = QDF_STATUS_E_FAILURE;
|
|
|
goto fail;
|
|
@@ -1279,6 +1279,10 @@ QDF_STATUS pmo_core_psoc_bus_runtime_resume(struct wlan_objmgr_psoc *psoc,
|
|
|
if (status != QDF_STATUS_SUCCESS)
|
|
|
goto fail;
|
|
|
|
|
|
+ status = pmo_core_txrx_resume(psoc);
|
|
|
+ if (QDF_IS_STATUS_ERROR(status))
|
|
|
+ goto fail;
|
|
|
+
|
|
|
hif_pm_set_link_state(hif_ctx, HIF_PM_LINK_STATE_UP);
|
|
|
|
|
|
status = pmo_core_psoc_configure_resume(psoc, true);
|