mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-12-20 10:51:27 +00:00
This series is based on * 2020-07-10 ipq6018-ilq-11-0_qca_oem-034672b0676c37b1f4519e5720e18e95fe6236ef Add support for * qsdk kernel/v4.4 * qsdk ethernet subsystem * v5.7 ath11k backport + QualComm staging patches (wlan_ap_1.0) * ath11k-firmware * hostapd/iw/... Feature support * full boot, system detection * sysupgrade to nand * HE support via latest hostapd * driver support for usb, crypto, hwmon, cpufreq, ... Missing * NSS/HW flow offloading - FW blob is not redistributable Using the qsdk v4.4 is an intermediate solution while the vanilla is being tested. Vanilla kernel is almost on feature par. Work has already started to upstream the ethernet and switch drivers. Once complete the target will be fully upstream. Signed-off-by: John Crispin <john@phrozen.org>
102 lines
3.9 KiB
Diff
102 lines
3.9 KiB
Diff
From bdcbc62cb410460584b3cc61c208b93de70f6f69 Mon Sep 17 00:00:00 2001
|
|
From: Bhagavathi Perumal S <bperumal@codeaurora.org>
|
|
Date: Tue, 25 Jun 2019 22:15:14 +0530
|
|
Subject: [PATCH] ath11k: Add missing pdev rx rate stats
|
|
|
|
This adds missing rx rate info stats like pilot evm,
|
|
per chain rssi, per user ul ppdu and mpdu counts and
|
|
ul ofdma rate info etc.
|
|
|
|
Signed-off-by: Bhagavathi Perumal S <bperumal@codeaurora.org>
|
|
---
|
|
drivers/net/wireless/ath/ath11k/debug_htt_stats.c | 205 ++++++++++++++++++----
|
|
drivers/net/wireless/ath/ath11k/debug_htt_stats.h | 42 +++++
|
|
2 files changed, 214 insertions(+), 33 deletions(-)
|
|
|
|
--- a/drivers/net/wireless/ath/ath11k/debug_htt_stats.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/debug_htt_stats.c
|
|
@@ -776,7 +776,7 @@ static inline void htt_print_tx_peer_rat
|
|
u32 len = stats_req->buf_len;
|
|
u32 buf_len = ATH11K_HTT_STATS_BUF_SIZE;
|
|
char str_buf[HTT_MAX_STRING_LEN] = {0};
|
|
- char *tx_gi[HTT_TX_PEER_STATS_NUM_GI_COUNTERS] = {NULL};
|
|
+ char *tx_gi[HTT_TX_PEER_STATS_NUM_GI_COUNTERS] = 0;
|
|
u8 j;
|
|
|
|
for (j = 0; j < HTT_TX_PEER_STATS_NUM_GI_COUNTERS; j++) {
|
|
@@ -864,8 +864,8 @@ static inline void htt_print_rx_peer_rat
|
|
u32 len = stats_req->buf_len;
|
|
u32 buf_len = ATH11K_HTT_STATS_BUF_SIZE;
|
|
u8 j;
|
|
- char *rssi_chain[HTT_RX_PEER_STATS_NUM_SPATIAL_STREAMS] = {NULL};
|
|
- char *rx_gi[HTT_RX_PEER_STATS_NUM_GI_COUNTERS] = {NULL};
|
|
+ char *rssi_chain[HTT_RX_PEER_STATS_NUM_SPATIAL_STREAMS] = {0};
|
|
+ char *rx_gi[HTT_RX_PEER_STATS_NUM_GI_COUNTERS] = {0};
|
|
char str_buf[HTT_MAX_STRING_LEN] = {0};
|
|
|
|
for (j = 0; j < HTT_RX_PEER_STATS_NUM_SPATIAL_STREAMS; j++) {
|
|
@@ -918,6 +918,32 @@ static inline void htt_print_rx_peer_rat
|
|
ARRAY_TO_STRING(str_buf, htt_stats_buf->rx_bw,
|
|
HTT_RX_PDEV_STATS_NUM_BW_COUNTERS);
|
|
len += HTT_DBG_OUT(buf + len, buf_len - len, "rx_bw = %s ", str_buf);
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "rx_evm_nss_count = %u",
|
|
+ htt_stats_buf->nss_count);
|
|
+
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "rx_evm_pilot_count = %u",
|
|
+ htt_stats_buf->pilot_count);
|
|
+
|
|
+ for (j = 0; j < HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS; j++) {
|
|
+ index = 0;
|
|
+
|
|
+ for (i = 0; i < HTT_RX_PDEV_STATS_RXEVM_MAX_PILOTS_PER_NSS; i++)
|
|
+ index += snprintf(&rx_pilot_evm_dB[j][index],
|
|
+ HTT_MAX_STRING_LEN - index,
|
|
+ " %u:%d,",
|
|
+ i,
|
|
+ htt_stats_buf->rx_pilot_evm_dB[j][i]);
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "pilot_evm_dB[%u] = %s ",
|
|
+ j, rx_pilot_evm_dB[j]);
|
|
+ }
|
|
+
|
|
+ index = 0;
|
|
+ memset(str_buf, 0x0, HTT_MAX_STRING_LEN);
|
|
+ for (i = 0; i < HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS; i++)
|
|
+ index += snprintf(&str_buf[index],
|
|
+ HTT_MAX_STRING_LEN - index,
|
|
+ " %u:%d,", i, htt_stats_buf->rx_pilot_evm_dB_mean[i]);
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "pilot_evm_dB_mean = %s ", str_buf);
|
|
|
|
for (j = 0; j < HTT_RX_PEER_STATS_NUM_SPATIAL_STREAMS; j++) {
|
|
ARRAY_TO_STRING(rssi_chain[j], htt_stats_buf->rssi_chain[j],
|
|
@@ -976,6 +1002,16 @@ htt_print_tx_hwq_mu_mimo_sch_stats_tlv(c
|
|
buf[len] = 0;
|
|
|
|
stats_req->buf_len = len;
|
|
+
|
|
+fail:
|
|
+ for (j = 0; j < HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS; j++)
|
|
+ kfree(rssi_chain[j]);
|
|
+
|
|
+ for (j = 0; j < HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS; j++)
|
|
+ kfree(rx_pilot_evm_dB[j]);
|
|
+
|
|
+ for (i = 0; i < HTT_RX_PDEV_STATS_NUM_GI_COUNTERS; i++)
|
|
+ kfree(rx_gi[i]);
|
|
}
|
|
|
|
static inline void
|
|
@@ -3022,10 +3058,10 @@ static inline void htt_print_rx_pdev_rat
|
|
u32 buf_len = ATH11K_HTT_STATS_BUF_SIZE;
|
|
u8 i, j;
|
|
u16 index = 0;
|
|
- char *rssi_chain[HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS] = {NULL};
|
|
- char *rx_gi[HTT_RX_PDEV_STATS_NUM_GI_COUNTERS] = {NULL};
|
|
+ char *rssi_chain[HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS] = {0};
|
|
+ char *rx_gi[HTT_RX_PDEV_STATS_NUM_GI_COUNTERS] = {0};
|
|
char str_buf[HTT_MAX_STRING_LEN] = {0};
|
|
- char *rx_pilot_evm_db[HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS] = {NULL};
|
|
+ char *rx_pilot_evm_db[HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS] = {0};
|
|
|
|
for (j = 0; j < HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS; j++) {
|
|
rssi_chain[j] = kmalloc(HTT_MAX_STRING_LEN, GFP_ATOMIC);
|