ath10k: Fix the tx stats bytes & packets parsing
authorBrandon Huang <yanghuan@codeaurora.org>
Tue, 12 Mar 2019 04:33:39 +0000 (12:33 +0800)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 7 May 2019 13:42:44 +0000 (16:42 +0300)
In tx_stats debugfs, txrate->flags may contain multiple bits. For
example, RATE_INFO_FLAGS_SHORT_GI could be set, and tx stats bytes
and packets will be not updated correctly.

Fix this issue by using bit operation to check txrate->flags.

Tested HW: QCA9984
Tested Firmware: 10.4-3.9.0.1-00007

Signed-off-by: Brandon Huang <yanghuan@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath10k/htt_rx.c

index 45f4eecc3839c208733791e9021a3ddde58260b6..ba822a33609d65baa14c350c16d5c283deb90bbd 100644 (file)
@@ -3256,14 +3256,14 @@ ath10k_accumulate_per_peer_tx_stats(struct ath10k *ar,
 
 #define STATS_OP_FMT(name) tx_stats->stats[ATH10K_STATS_TYPE_##name]
 
-       if (txrate->flags == RATE_INFO_FLAGS_VHT_MCS) {
+       if (txrate->flags & RATE_INFO_FLAGS_VHT_MCS) {
                STATS_OP_FMT(SUCC).vht[0][mcs] += pstats->succ_bytes;
                STATS_OP_FMT(SUCC).vht[1][mcs] += pstats->succ_pkts;
                STATS_OP_FMT(FAIL).vht[0][mcs] += pstats->failed_bytes;
                STATS_OP_FMT(FAIL).vht[1][mcs] += pstats->failed_pkts;
                STATS_OP_FMT(RETRY).vht[0][mcs] += pstats->retry_bytes;
                STATS_OP_FMT(RETRY).vht[1][mcs] += pstats->retry_pkts;
-       } else if (txrate->flags == RATE_INFO_FLAGS_MCS) {
+       } else if (txrate->flags & RATE_INFO_FLAGS_MCS) {
                STATS_OP_FMT(SUCC).ht[0][ht_idx] += pstats->succ_bytes;
                STATS_OP_FMT(SUCC).ht[1][ht_idx] += pstats->succ_pkts;
                STATS_OP_FMT(FAIL).ht[0][ht_idx] += pstats->failed_bytes;
@@ -3284,7 +3284,7 @@ ath10k_accumulate_per_peer_tx_stats(struct ath10k *ar,
        if (ATH10K_HW_AMPDU(pstats->flags)) {
                tx_stats->ba_fails += ATH10K_HW_BA_FAIL(pstats->flags);
 
-               if (txrate->flags == RATE_INFO_FLAGS_MCS) {
+               if (txrate->flags & RATE_INFO_FLAGS_MCS) {
                        STATS_OP_FMT(AMPDU).ht[0][ht_idx] +=
                                pstats->succ_bytes + pstats->retry_bytes;
                        STATS_OP_FMT(AMPDU).ht[1][ht_idx] +=