diff options
Diffstat (limited to 'package/kernel/mac80211/patches/335-mac80211-minstrel_ht-move-short-preamble-check-out-o.patch')
-rw-r--r-- | package/kernel/mac80211/patches/335-mac80211-minstrel_ht-move-short-preamble-check-out-o.patch | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/335-mac80211-minstrel_ht-move-short-preamble-check-out-o.patch b/package/kernel/mac80211/patches/335-mac80211-minstrel_ht-move-short-preamble-check-out-o.patch new file mode 100644 index 0000000..7a6e8cd --- /dev/null +++ b/package/kernel/mac80211/patches/335-mac80211-minstrel_ht-move-short-preamble-check-out-o.patch @@ -0,0 +1,70 @@ +From: Felix Fietkau <nbd@nbd.name> +Date: Wed, 14 Dec 2016 20:06:08 +0100 +Subject: [PATCH] mac80211: minstrel_ht: move short preamble check out of + get_rate + +Test short preamble support in minstrel_ht_update_caps instead of +looking at the per-packet flag. Makes the code more efficient. + +Signed-off-by: Felix Fietkau <nbd@nbd.name> +--- + +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c +@@ -14,6 +14,7 @@ + #include <linux/ieee80211.h> + #include <net/mac80211.h> + #include "rate.h" ++#include "sta_info.h" + #include "rc80211_minstrel.h" + #include "rc80211_minstrel_ht.h" + +@@ -1049,22 +1050,6 @@ minstrel_get_sample_rate(struct minstrel + } + + static void +-minstrel_ht_check_cck_shortpreamble(struct minstrel_priv *mp, +- struct minstrel_ht_sta *mi, bool val) +-{ +- u8 supported = mi->supported[MINSTREL_CCK_GROUP]; +- +- if (!supported || !mi->cck_supported_short) +- return; +- +- if (supported & (mi->cck_supported_short << (val * 4))) +- return; +- +- supported ^= mi->cck_supported_short | (mi->cck_supported_short << 4); +- mi->supported[MINSTREL_CCK_GROUP] = supported; +-} +- +-static void + minstrel_ht_get_rate(void *priv, struct ieee80211_sta *sta, void *priv_sta, + struct ieee80211_tx_rate_control *txrc) + { +@@ -1087,7 +1072,6 @@ minstrel_ht_get_rate(void *priv, struct + minstrel_aggr_check(sta, txrc->skb); + + info->flags |= mi->tx_flags; +- minstrel_ht_check_cck_shortpreamble(mp, mi, txrc->short_preamble); + + #ifdef CPTCFG_MAC80211_DEBUGFS + if (mp->fixed_rate_idx != -1) +@@ -1168,6 +1152,7 @@ minstrel_ht_update_caps(void *priv, stru + struct ieee80211_mcs_info *mcs = &sta->ht_cap.mcs; + u16 ht_cap = sta->ht_cap.cap; + struct ieee80211_sta_vht_cap *vht_cap = &sta->vht_cap; ++ struct sta_info *sinfo = container_of(sta, struct sta_info, sta); + int use_vht; + int n_supported = 0; + int ack_dur; +@@ -1302,6 +1287,9 @@ minstrel_ht_update_caps(void *priv, stru + if (!n_supported) + goto use_legacy; + ++ if (test_sta_flag(sinfo, WLAN_STA_SHORT_PREAMBLE)) ++ mi->cck_supported_short |= mi->cck_supported_short << 4; ++ + /* create an initial rate table with the lowest supported rates */ + minstrel_ht_update_stats(mp, mi); + minstrel_ht_update_rates(mp, mi); |