|
@@ -724,6 +724,28 @@ struct amsdu_subframe_hdr {
|
|
|
|
|
|
#define GROUP_ID_IS_SU_MIMO(x) ((x) == 0 || (x) == 63)
|
|
|
|
|
|
+static inline u8 ath10k_bw_to_mac80211_bw(u8 bw)
|
|
|
+{
|
|
|
+ u8 ret = 0;
|
|
|
+
|
|
|
+ switch (bw) {
|
|
|
+ case 0:
|
|
|
+ ret = RATE_INFO_BW_20;
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ ret = RATE_INFO_BW_40;
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ ret = RATE_INFO_BW_80;
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ ret = RATE_INFO_BW_160;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
static void ath10k_htt_rx_h_rates(struct ath10k *ar,
|
|
|
struct ieee80211_rx_status *status,
|
|
|
struct htt_rx_desc *rxd)
|
|
@@ -826,23 +848,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(bw);
|
|
|
status->encoding = RX_ENC_VHT;
|
|
|
break;
|
|
|
default:
|
|
@@ -2550,7 +2556,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_bw(txrate.bw);
|
|
|
}
|
|
|
|
|
|
static void ath10k_htt_fetch_peer_stats(struct ath10k *ar,
|