mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-15 01:01:56 -04:00
qcacld-3.0: Add mac counters for per-antenna TX/RX stats
qcacld-2.0 to qcacld-3.0 propagation New MAC counters are added to count MPDUs received and transferred on each antenna. Change-Id: Ia7fbf7642922f006882619848459192dcfca3c40 CRs-Fixed: 2043156
This commit is contained in:
parent
ceb4d64b3e
commit
303ebe9dbf
3 changed files with 43 additions and 6 deletions
|
|
@ -1855,16 +1855,18 @@ static int
|
|||
hdd_populate_wifi_signal_info(struct sir_wifi_peer_signal_stats *peer_signal,
|
||||
struct sk_buff *skb)
|
||||
{
|
||||
uint32_t i;
|
||||
uint32_t i, chain_count;
|
||||
struct nlattr *chains, *att;
|
||||
|
||||
/* There might be no signal info for a peer */
|
||||
if (!peer_signal)
|
||||
return 0;
|
||||
|
||||
chain_count = peer_signal->num_chain < WIFI_MAX_CHAINS ?
|
||||
peer_signal->num_chain : WIFI_MAX_CHAINS;
|
||||
if (nla_put_u32(skb,
|
||||
QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_PEER_ANT_NUM,
|
||||
WIFI_MAX_CHAINS)) {
|
||||
chain_count)) {
|
||||
hdd_err("QCA_WLAN_VENDOR_ATTR put fail");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
|
@ -1876,7 +1878,7 @@ hdd_populate_wifi_signal_info(struct sir_wifi_peer_signal_stats *peer_signal,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
for (i = 0; i < WIFI_MAX_CHAINS; i++) {
|
||||
for (i = 0; i < chain_count; i++) {
|
||||
chains = nla_nest_start(skb, i);
|
||||
|
||||
if (!chains) {
|
||||
|
|
@ -1884,12 +1886,23 @@ hdd_populate_wifi_signal_info(struct sir_wifi_peer_signal_stats *peer_signal,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
hdd_debug("SNR=%d, NF=%d, Rx=%d, Tx=%d",
|
||||
peer_signal->per_ant_snr[i],
|
||||
peer_signal->nf[i],
|
||||
peer_signal->per_ant_rx_mpdus[i],
|
||||
peer_signal->per_ant_tx_mpdus[i]);
|
||||
if (nla_put_u32(skb,
|
||||
QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_ANT_SNR,
|
||||
peer_signal->per_ant_snr[i]) ||
|
||||
nla_put_u32(skb,
|
||||
QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_ANT_NF,
|
||||
peer_signal->nf[i])) {
|
||||
peer_signal->nf[i]) ||
|
||||
nla_put_u32(skb,
|
||||
QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_RX_MPDU,
|
||||
peer_signal->per_ant_rx_mpdus[i]) ||
|
||||
nla_put_u32(skb,
|
||||
QCA_WLAN_VENDOR_ATTR_LL_STATS_EXT_TX_MPDU,
|
||||
peer_signal->per_ant_tx_mpdus[i])) {
|
||||
hdd_err("QCA_WLAN_VENDOR_ATTR put fail");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5225,6 +5225,9 @@ struct sir_wifi_chan_cca_stats {
|
|||
* @peer_id: peer ID
|
||||
* @per_ant_snr: per antenna SNR
|
||||
* @nf: peer background noise
|
||||
* @per_ant_rx_mpdus: MPDUs received per antenna
|
||||
* @per_ant_tx_mpdus: MPDUs transferred per antenna
|
||||
* @num_chain: valid chain count
|
||||
*/
|
||||
struct sir_wifi_peer_signal_stats {
|
||||
uint32_t vdev_id;
|
||||
|
|
@ -5235,6 +5238,10 @@ struct sir_wifi_peer_signal_stats {
|
|||
|
||||
/* Background noise */
|
||||
int32_t nf[WIFI_MAX_CHAINS];
|
||||
|
||||
int32_t per_ant_rx_mpdus[WIFI_MAX_CHAINS];
|
||||
int32_t per_ant_tx_mpdus[WIFI_MAX_CHAINS];
|
||||
int32_t num_chain;
|
||||
};
|
||||
|
||||
#define WIFI_VDEV_NUM 4
|
||||
|
|
|
|||
|
|
@ -1064,9 +1064,26 @@ static int wma_ll_stats_evt_handler(void *handle, u_int8_t *event,
|
|||
peer_stats[i].vdev_id = wmi_peer_signal->vdev_id;
|
||||
peer_signal = &peer_stats[i].peer_signal_stats;
|
||||
|
||||
WMA_LOGD("%d antennas for peer %d",
|
||||
wmi_peer_signal->num_chains_valid,
|
||||
wmi_peer_signal->peer_id);
|
||||
if (dst_len <= result_size) {
|
||||
qdf_mem_copy(peer_signal,
|
||||
&wmi_peer_signal->vdev_id, dst_len);
|
||||
peer_signal->vdev_id = wmi_peer_signal->vdev_id;
|
||||
peer_signal->peer_id = wmi_peer_signal->peer_id;
|
||||
peer_signal->num_chain =
|
||||
wmi_peer_signal->num_chains_valid;
|
||||
qdf_mem_copy(peer_signal->per_ant_snr,
|
||||
wmi_peer_signal->per_chain_snr,
|
||||
sizeof(peer_signal->per_ant_snr));
|
||||
qdf_mem_copy(peer_signal->nf,
|
||||
wmi_peer_signal->per_chain_nf,
|
||||
sizeof(peer_signal->nf));
|
||||
qdf_mem_copy(peer_signal->per_ant_rx_mpdus,
|
||||
wmi_peer_signal->per_antenna_rx_mpdus,
|
||||
sizeof(peer_signal->per_ant_rx_mpdus));
|
||||
qdf_mem_copy(peer_signal->per_ant_tx_mpdus,
|
||||
wmi_peer_signal->per_antenna_tx_mpdus,
|
||||
sizeof(peer_signal->per_ant_tx_mpdus));
|
||||
result_size -= dst_len;
|
||||
} else {
|
||||
WMA_LOGE(FL("Invalid length of PEER signal."));
|
||||
|
|
|
|||
Loading…
Reference in a new issue