aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/335-mac80211-minstrel_ht-move-short-preamble-check-out-o.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2016-12-15 11:48:12 +0100
committerFelix Fietkau <nbd@nbd.name>2016-12-19 13:51:21 +0100
commit00bc7f0357d082e73699fb561776088e48e53101 (patch)
tree92396001e5678f24e207464bd83fe63e8b5caaca /package/kernel/mac80211/patches/335-mac80211-minstrel_ht-move-short-preamble-check-out-o.patch
parent6f77b8d510e2308f85344cd46de96dadc07a6cb9 (diff)
downloadupstream-00bc7f0357d082e73699fb561776088e48e53101.tar.gz
upstream-00bc7f0357d082e73699fb561776088e48e53101.tar.bz2
upstream-00bc7f0357d082e73699fb561776088e48e53101.zip
mac80211: merge a number of minstrel/minstrel_ht performance and memory usage improvements
Signed-off-by: Felix Fietkau <nbd@nbd.name>
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.patch70
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 0000000000..7a6e8cdb91
--- /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);