Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
67 additions
and
0 deletions.
There are no files selected for viewing
67 changes: 67 additions & 0 deletions
67
package/kernel/mac80211/patches/999-ath10k-fix-recent-bandwidth-conversion-bug.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
From 575fa3464e274e2c6617b5941cc2276db6391012 Mon Sep 17 00:00:00 2001 | ||
From: Christian Lamparter <chunkeey@gmail.com> | ||
Date: Wed, 1 Nov 2017 13:47:48 +0100 | ||
Subject: [PATCH] ath10k: fix recent bandwidth conversion bug | ||
|
||
The commit "cfg80211: make RATE_INFO_BW_20 the default" changed | ||
the index of RATE_INFO_BW_20, but the updates to ath10k missed | ||
the special bandwidth calculation case in | ||
ath10k_update_per_peer_tx_stats(). | ||
|
||
Fixes: 842be75c77cb ("cfg80211: make RATE_INFO_BW_20 the default") | ||
Signed-off-by: Christian Lamparter <chunkeey@gmail.com> | ||
--- | ||
drivers/net/wireless/ath/ath10k/htt_rx.c | 23 +++++------------------ | ||
1 file changed, 5 insertions(+), 18 deletions(-) | ||
|
||
diff --git a/drivers/net/wireless/ath/ath10k/htt_rx.c b/drivers/net/wireless/ath/ath10k/htt_rx.c | ||
index a3f5dc78353f..26b0d201a698 100644 | ||
--- a/drivers/net/wireless/ath/ath10k/htt_rx.c | ||
+++ b/drivers/net/wireless/ath/ath10k/htt_rx.c | ||
@@ -592,6 +592,9 @@ struct amsdu_subframe_hdr { | ||
|
||
#define GROUP_ID_IS_SU_MIMO(x) ((x) == 0 || (x) == 63) | ||
|
||
+static const u8 ath10k_bw_to_mac80211[] = { RATE_INFO_BW_20, RATE_INFO_BW_40, | ||
+ RATE_INFO_BW_80, RATE_INFO_BW_160 }; | ||
+ | ||
static void ath10k_htt_rx_h_rates(struct ath10k *ar, | ||
struct ieee80211_rx_status *status, | ||
struct htt_rx_desc *rxd) | ||
@@ -694,23 +697,7 @@ static void ath10k_htt_rx_h_rates(struct ath10k *ar, | ||
if (sgi) | ||
status->enc_flags |= RX_ENC_FLAG_SHORT_GI; | ||
|
||
- switch (bw) { | ||
- /* 20MHZ */ | ||
- case 0: | ||
- break; | ||
- /* 40MHZ */ | ||
- case 1: | ||
- status->bw = RATE_INFO_BW_40; | ||
- break; | ||
- /* 80MHZ */ | ||
- case 2: | ||
- status->bw = RATE_INFO_BW_80; | ||
- break; | ||
- case 3: | ||
- status->bw = RATE_INFO_BW_160; | ||
- break; | ||
- } | ||
- | ||
+ status->bw = ath10k_bw_to_mac80211[bw]; | ||
status->encoding = RX_ENC_VHT; | ||
break; | ||
default: | ||
@@ -2297,7 +2284,7 @@ ath10k_update_per_peer_tx_stats(struct ath10k *ar, | ||
arsta->txrate.flags |= RATE_INFO_FLAGS_SHORT_GI; | ||
|
||
arsta->txrate.nss = txrate.nss; | ||
- arsta->txrate.bw = txrate.bw + RATE_INFO_BW_20; | ||
+ arsta->txrate.bw = ath10k_bw_to_mac80211[txrate.bw]; | ||
} | ||
|
||
static void ath10k_htt_fetch_peer_stats(struct ath10k *ar, | ||
-- | ||
2.15.0 | ||
|