The index for updating rate table, which is displayed in the tx stats via debugfs, is calculated using the bandwidth value. The bandwidth values do not map correctly with the bandwidth values shown in the rate table. Correct the bandwidth value calculation which is used to calculate the index for rate table updation for tx stats. Tested HW: WCN3990 Tested FW: WLAN.HL.3.1-00784-QCAHLSWMTPLZ-1 Fixes: e88975ca37d1 ("ath10k: dump tx stats in rate table format") Signed-off-by: Rakesh Pillai <pillair@xxxxxxxxxxxxxx> --- drivers/net/wireless/ath/ath10k/htt_rx.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/ath/ath10k/htt_rx.c b/drivers/net/wireless/ath/ath10k/htt_rx.c index a20ea27..8c3c940 100644 --- a/drivers/net/wireless/ath/ath10k/htt_rx.c +++ b/drivers/net/wireless/ath/ath10k/htt_rx.c @@ -2922,6 +2922,7 @@ ath10k_accumulate_per_peer_tx_stats(struct ath10k *ar, struct ath10k_htt_tx_stats *tx_stats; int idx, ht_idx, gi, mcs, bw, nss; unsigned long flags; + int rtable_bw; if (!arsta->tx_stats) return; @@ -2930,11 +2931,12 @@ ath10k_accumulate_per_peer_tx_stats(struct ath10k *ar, flags = txrate->flags; gi = test_bit(ATH10K_RATE_INFO_FLAGS_SGI_BIT, &flags); mcs = ATH10K_HW_MCS_RATE(pstats->ratecode); + rtable_bw = ath10k_get_bw(&ar->hw_params, pstats->flags); bw = txrate->bw; nss = txrate->nss; ht_idx = mcs + (nss - 1) * 8; idx = mcs * 8 + 8 * 10 * (nss - 1); - idx += bw * 2 + gi; + idx += rtable_bw * 2 + gi; #define STATS_OP_FMT(name) tx_stats->stats[ATH10K_STATS_TYPE_##name] -- 2.7.4