qcacld-3.0: Report tim bcn/tim err bcn to userapce
Such statistics are used for power saving feature. Report to userspace by QCA_WLAN_VENDOR_ATTR_LL_STATS_TOT_TIM_BCN QCA_WLAN_VENDOR_ATTR_LL_STATS_TOT_ERR_TIM_BCN Change-Id: Idc447a53a74429336f5e2d25971a5ac9390fb9f7 CRs-Fixed: 3221119
This commit is contained in:

committed by
Madan Koyyalamudi

parent
01698ae469
commit
8a365296f2
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
|
||||||
|
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -46,6 +47,7 @@ void hdd_debugfs_process_iface_stats(struct hdd_adapter *adapter,
|
|||||||
wmi_iface_link_stats *link_stats;
|
wmi_iface_link_stats *link_stats;
|
||||||
wmi_wmm_ac_stats *ac_stats;
|
wmi_wmm_ac_stats *ac_stats;
|
||||||
wmi_iface_offload_stats *offload_stats;
|
wmi_iface_offload_stats *offload_stats;
|
||||||
|
wmi_iface_powersave_stats *powersave_stats;
|
||||||
uint64_t average_tsf_offset;
|
uint64_t average_tsf_offset;
|
||||||
int i;
|
int i;
|
||||||
ssize_t len = 0;
|
ssize_t len = 0;
|
||||||
@@ -147,6 +149,14 @@ void hdd_debugfs_process_iface_stats(struct hdd_adapter *adapter,
|
|||||||
offload_stats->fwd_count);
|
offload_stats->fwd_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
powersave_stats = &iface_stat->powersave_stats;
|
||||||
|
buffer += len;
|
||||||
|
ll_stats.len += len;
|
||||||
|
len = scnprintf(buffer, DEBUGFS_LLSTATS_BUF_SIZE - ll_stats.len,
|
||||||
|
"\ntot_tim_bcn: %u tot_err_tim_bcn: %u",
|
||||||
|
powersave_stats->tot_tim_bcn,
|
||||||
|
powersave_stats->tot_err_tim_bcn);
|
||||||
|
|
||||||
ll_stats.len += len;
|
ll_stats.len += len;
|
||||||
mutex_unlock(&llstats_mutex);
|
mutex_unlock(&llstats_mutex);
|
||||||
hdd_exit();
|
hdd_exit();
|
||||||
|
@@ -819,6 +819,17 @@ static bool put_wifi_iface_stats(struct wifi_interface_stats *if_stat,
|
|||||||
nla_nest_end(vendor_event, wmm_stats);
|
nla_nest_end(vendor_event, wmm_stats);
|
||||||
}
|
}
|
||||||
nla_nest_end(vendor_event, wmm_info);
|
nla_nest_end(vendor_event, wmm_info);
|
||||||
|
|
||||||
|
if (nla_put_u32(vendor_event,
|
||||||
|
QCA_WLAN_VENDOR_ATTR_LL_STATS_TIM_BEACON,
|
||||||
|
if_stat->powersave_stats.tot_tim_bcn) ||
|
||||||
|
nla_put_u32(vendor_event,
|
||||||
|
QCA_WLAN_VENDOR_ATTR_LL_STATS_TIM_BEACON_ERR,
|
||||||
|
if_stat->powersave_stats.tot_err_tim_bcn)) {
|
||||||
|
hdd_err("QCA_WLAN_VENDOR_ATTR put powersave_stat fail");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3144,6 +3144,7 @@ struct wifi_peer_info {
|
|||||||
* @ac_stats: per-Access Category statistics
|
* @ac_stats: per-Access Category statistics
|
||||||
* @num_offload_stats: @offload_stats record count
|
* @num_offload_stats: @offload_stats record count
|
||||||
* @offload_stats: per-offload statistics
|
* @offload_stats: per-offload statistics
|
||||||
|
* @powersave_stats: powersave statistics
|
||||||
* @vdev_id: vdev id
|
* @vdev_id: vdev id
|
||||||
*
|
*
|
||||||
* Statistics corresponding to 2nd most LSB in wifi statistics bitmap
|
* Statistics corresponding to 2nd most LSB in wifi statistics bitmap
|
||||||
@@ -3159,6 +3160,7 @@ struct wifi_interface_stats {
|
|||||||
wmi_wmm_ac_stats ac_stats[WIFI_AC_MAX];
|
wmi_wmm_ac_stats ac_stats[WIFI_AC_MAX];
|
||||||
uint32_t num_offload_stats;
|
uint32_t num_offload_stats;
|
||||||
wmi_iface_offload_stats offload_stats[WMI_OFFLOAD_STATS_TYPE_MAX];
|
wmi_iface_offload_stats offload_stats[WMI_OFFLOAD_STATS_TYPE_MAX];
|
||||||
|
wmi_iface_powersave_stats powersave_stats;
|
||||||
uint8_t vdev_id;
|
uint8_t vdev_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -2755,6 +2755,7 @@ int wma_unified_link_iface_stats_event_handler(void *handle,
|
|||||||
wmi_iface_link_stats *link_stats, *iface_link_stats;
|
wmi_iface_link_stats *link_stats, *iface_link_stats;
|
||||||
wmi_wmm_ac_stats *ac_stats, *iface_ac_stats;
|
wmi_wmm_ac_stats *ac_stats, *iface_ac_stats;
|
||||||
wmi_iface_offload_stats *offload_stats, *iface_offload_stats;
|
wmi_iface_offload_stats *offload_stats, *iface_offload_stats;
|
||||||
|
wmi_iface_powersave_stats *powersave_stats;
|
||||||
tSirLLStatsResults *link_stats_results;
|
tSirLLStatsResults *link_stats_results;
|
||||||
struct wifi_interface_stats *iface_stat;
|
struct wifi_interface_stats *iface_stat;
|
||||||
uint32_t count;
|
uint32_t count;
|
||||||
@@ -2888,6 +2889,10 @@ int wma_unified_link_iface_stats_event_handler(void *handle,
|
|||||||
iface_offload_stats++;
|
iface_offload_stats++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
powersave_stats = param_tlvs->iface_powersave_stats;
|
||||||
|
if (powersave_stats)
|
||||||
|
iface_stat->powersave_stats = *powersave_stats;
|
||||||
|
|
||||||
/* Copying vdev_id info into the iface_stat for MLO*/
|
/* Copying vdev_id info into the iface_stat for MLO*/
|
||||||
iface_stat->vdev_id = fixed_param->vdev_id;
|
iface_stat->vdev_id = fixed_param->vdev_id;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user