From 91b6deeb1944e4b0bd297ea5a6e40ba81657935c Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Thu, 16 Dec 2021 11:19:57 +0530 Subject: [PATCH] ath11k: fix extended array buffer display in htt stats ARRAY_TO_BUF macro loops from index 0 to len and prints the same index to the buffer. However, for extended parameters like Tx MCS Extended variable, there is requirement to loop from 0 to len but print (index + MAX ARRAY LENGTH OF NON EXTENDED PARAMETER) to the buffer. This was leading to index to roll over from start for extended variable case. Hence, this macro can not be used. Current Output: tx_mcs = 0:0, 1:0, 2:0, 3:0, 4:0, 5:0, 6:26, 7:20, 8:21, 9:22, 10:196, 11:613, 0:0, 1:0, Expected Output: tx_mcs = 0:0, 1:0, 2:0, 3:0, 4:0, 5:0, 6:26, 7:20, 8:21, 9:22, 10:196, 11:613, 12:0, 13:0, Add ARRAY_TO_BUF_EXT macro to print the extended variable array to the buffer. Signed-off-by: Aditya Kumar Singh --- .../net/wireless/ath/ath11k/debugfs_htt_stats.c | 56 +++++++++++++++------- 1 file changed, 38 insertions(+), 18 deletions(-) --- a/drivers/net/wireless/ath/ath11k/debugfs_htt_stats.c +++ b/drivers/net/wireless/ath/ath11k/debugfs_htt_stats.c @@ -17,6 +17,17 @@ #define HTT_TLV_HDR_LEN 4 +#define ARRAY_TO_BUF_EXT(out, buflen, arr, len, ext_len) \ + do { \ + int index = 0; u8 i; \ + for (i = 0; i < len; i++) { \ + index += scnprintf((out + buflen) + index, \ + (ATH11K_HTT_STATS_BUF_SIZE - buflen) - index, \ + " %u:%u,", i + ext_len, arr[i]); \ + } \ + buflen += index; \ + } while (0) + #define ARRAY_TO_BUF(out, buflen, arr, len) \ do { \ int index = 0; u8 i; \ @@ -3126,8 +3137,9 @@ static inline void htt_print_tx_pdev_rat PRINT_ARRAY_TO_BUF(buf, len, htt_stats_buf->tx_mcs, "tx_mcs", HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS, "\n"); len += HTT_DBG_OUT(buf + len, buf_len - len, " "); - ARRAY_TO_BUF(buf, len, htt_stats_buf->tx_mcs_ext, - HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS); + ARRAY_TO_BUF_EXT(buf, len, htt_stats_buf->tx_stbc_ext, + HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS, + HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS); PRINT_ARRAY_TO_BUF(buf, len, htt_stats_buf->ac_mu_mimo_tx_mcs, "ac_mu_mimo_tx_mcs", HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS, "\n"); len += HTT_DBG_OUT(buf + len, buf_len - len, " "); @@ -3141,8 +3153,9 @@ static inline void htt_print_tx_pdev_rat PRINT_ARRAY_TO_BUF(buf, len, htt_stats_buf->ofdma_tx_mcs, "ofdma_tx_mcs", HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS, "\n"); len += HTT_DBG_OUT(buf + len, buf_len - len, " "); - ARRAY_TO_BUF(buf, len, htt_stats_buf->ofdma_tx_mcs_ext, - HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS); + ARRAY_TO_BUF_EXT(buf, len, htt_stats_buf->tx_mcs_ext, + HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS, + HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS); PRINT_ARRAY_TO_BUF(buf, len, htt_stats_buf->tx_nss, "tx_nss", HTT_TX_PDEV_STATS_NUM_SPATIAL_STREAMS, "\n"); PRINT_ARRAY_TO_BUF(buf, len, htt_stats_buf->ac_mu_mimo_tx_nss, @@ -3185,8 +3198,9 @@ static inline void htt_print_tx_pdev_rat PRINT_ARRAY_TO_BUF(buf, len, htt_stats_buf->tx_gi[j], NULL, HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS, "\n"); len += HTT_DBG_OUT(buf + len, buf_len - len, " "); - ARRAY_TO_BUF(buf, len, htt_stats_buf->tx_gi_ext[j], - HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS); + ARRAY_TO_BUF_EXT(buf, len, htt_stats_buf->tx_gi_ext[j], + HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS, + HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS); } /* AC MU-MIMO GI Stats */ @@ -3204,8 +3218,9 @@ static inline void htt_print_tx_pdev_rat PRINT_ARRAY_TO_BUF(buf, len, htt_stats_buf->ax_mu_mimo_tx_gi[j], NULL, HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS, "\n"); len += HTT_DBG_OUT(buf + len, buf_len - len, " "); - ARRAY_TO_BUF(buf, len, htt_stats_buf->ax_mu_mimo_tx_gi_ext[j], - HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS); + ARRAY_TO_BUF_EXT(buf, len, htt_stats_buf->ax_mu_mimo_tx_gi_ext[j], + HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS, + HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS); } /* DL OFDMA GI Stats */ @@ -3215,8 +3230,9 @@ static inline void htt_print_tx_pdev_rat PRINT_ARRAY_TO_BUF(buf, len, htt_stats_buf->ofdma_tx_gi[j], NULL, HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS, "\n"); len += HTT_DBG_OUT(buf + len, buf_len - len, " "); - ARRAY_TO_BUF(buf, len, htt_stats_buf->ofdma_tx_gi_ext[j], - HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS); + ARRAY_TO_BUF_EXT(buf, len, htt_stats_buf->ofdma_tx_gi_ext[j], + HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS, + HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS); } PRINT_ARRAY_TO_BUF(buf, len, htt_stats_buf->tx_dcm, "tx_dcm", @@ -4297,6 +4313,11 @@ static inline void htt_print_ul_mumimo_t htt_ul_mumimo_trig_stats_buf->ul_mumimo_rx_gi[j], NULL, HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS, "\n"); + len += scnprintf(buf + len, buf_len - len, + "ul_mumimo_rx_gi_ext[%u] = ", j); + ARRAY_TO_BUF_EXT(buf, len, htt_ul_mumimo_trig_stats_buf->ul_mumimo_rx_gi_ext[j], + HTT_RX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS, + HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS); } PRINT_ARRAY_TO_BUF(buf, len,