qcacld-3.0: Add wow event and reason for roam event stats

This change sends the new wow event in the bitmap to FW only
when the roam stats suspend mode attribute is enabled from the
user space.
Also, the new wow reason is added to wake up the host while
sending the roam event stats.

Change-Id: Iaefb229929e8791870f33bf787487f7c20daf218
CRs-Fixed: 3050830
This commit is contained in:
Srikanth Marepalli 2021-11-07 00:03:59 +05:30 committed by Madan Koyyalamudi
parent 6f83bfd812
commit 056bf5581d
3 changed files with 25 additions and 0 deletions

View File

@ -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;
}

View File

@ -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);

View File

@ -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;