diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 0c15863672..c0378382ea 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -18313,6 +18313,7 @@ void hdd_shutdown_wlan_in_suspend(struct hdd_context *hdd_ctx) #define SHUTDOWN_IN_SUSPEND_PREVENT_TIMEOUT 5 if (!hdd_is_any_interface_open(hdd_ctx)) { + hdd_ctx->shutdown_in_suspend = true; qdf_delayed_work_start(&hdd_ctx->psoc_idle_timeout_work, SHUTDOWN_IN_SUSPEND_WAIT_TIMEOUT); hdd_prevent_suspend_timeout(SHUTDOWN_IN_SUSPEND_PREVENT_TIMEOUT, diff --git a/core/hdd/src/wlan_hdd_power.c b/core/hdd/src/wlan_hdd_power.c index b5da92f1f7..93afc934c1 100644 --- a/core/hdd/src/wlan_hdd_power.c +++ b/core/hdd/src/wlan_hdd_power.c @@ -2500,8 +2500,10 @@ static int __wlan_hdd_cfg80211_suspend_wlan(struct wiphy *wiphy, } if (suspend_mode == PMO_SUSPEND_SHUTDOWN) { + if (hdd_ctx->shutdown_in_suspend) + return -EAGAIN; + hdd_info_rl("Shutdown WLAN in Suspend"); - hdd_ctx->shutdown_in_suspend = true; hdd_shutdown_wlan_in_suspend(hdd_ctx); /* shutdown must be excute in active, so return -EAGAIN * to PM to exit and try again