diff --git a/components/umac/mlme/connection_mgr/dispatcher/src/wlan_cm_roam_api.c b/components/umac/mlme/connection_mgr/dispatcher/src/wlan_cm_roam_api.c index 1d7f07c9ce73..fe31940eea96 100644 --- a/components/umac/mlme/connection_mgr/dispatcher/src/wlan_cm_roam_api.c +++ b/components/umac/mlme/connection_mgr/dispatcher/src/wlan_cm_roam_api.c @@ -838,6 +838,9 @@ wlan_cm_update_roam_rt_stats(struct wlan_objmgr_psoc *psoc, case ROAM_RT_STATS_ENABLE: roam_rt_stats->roam_stats_enabled = value; break; + case ROAM_RT_STATS_SUSPEND_MODE_ENABLE: + roam_rt_stats->roam_stats_wow_sent = value; + break; default: break; } @@ -863,6 +866,9 @@ uint8_t wlan_cm_get_roam_rt_stats(struct wlan_objmgr_psoc *psoc, case ROAM_RT_STATS_ENABLE: rstats_value = roam_rt_stats->roam_stats_enabled; break; + case ROAM_RT_STATS_SUSPEND_MODE_ENABLE: + rstats_value = roam_rt_stats->roam_stats_wow_sent; + break; default: break; } diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index f064a28e9504..fe625213ccef 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -15400,6 +15400,22 @@ static int __wlan_hdd_cfg80211_set_roam_events(struct wiphy *wiphy, ucfg_cm_update_roam_rt_stats(hdd_ctx->psoc, param, ROAM_RT_STATS_ENABLE); + if (param == (ROAM_RT_STATS_ENABLED | + ROAM_RT_STATS_ENABLED_IN_SUSPEND_MODE)) { + ucfg_pmo_enable_wakeup_event(hdd_ctx->psoc, adapter->vdev_id, + WOW_ROAM_STATS_EVENT); + ucfg_cm_update_roam_rt_stats(hdd_ctx->psoc, + ROAM_RT_STATS_ENABLED, + ROAM_RT_STATS_SUSPEND_MODE_ENABLE); + } else if (ucfg_cm_get_roam_rt_stats(hdd_ctx->psoc, + ROAM_RT_STATS_SUSPEND_MODE_ENABLE)) { + ucfg_pmo_disable_wakeup_event(hdd_ctx->psoc, adapter->vdev_id, + WOW_ROAM_STATS_EVENT); + ucfg_cm_update_roam_rt_stats(hdd_ctx->psoc, + ROAM_RT_STATS_DISABLED, + ROAM_RT_STATS_SUSPEND_MODE_ENABLE); + } + status = ucfg_cm_roam_send_rt_stats_config(hdd_ctx->pdev, adapter->vdev_id, param); diff --git a/core/wma/src/wma_features.c b/core/wma/src/wma_features.c index 8c1a30ebcb72..3c57aa225e64 100644 --- a/core/wma/src/wma_features.c +++ b/core/wma/src/wma_features.c @@ -1498,6 +1498,8 @@ static const uint8_t *wma_wow_wake_reason_str(A_INT32 wake_reason) return "GENERIC_WAKE"; case WOW_REASON_TWT: return "TWT Event"; + case WOW_REASON_ROAM_STATS: + return "ROAM_STATS"; default: return "unknown"; } @@ -2493,6 +2495,7 @@ static int wma_wake_event_no_payload( return wma_wake_reason_nlod(wma, wake_info->vdev_id); case WOW_REASON_GENERIC_WAKE: + case WOW_REASON_ROAM_STATS: wma_info("Wake reason %s", wma_wow_wake_reason_str(wake_info->wake_reason)); return 0;