diff options
Diffstat (limited to 'package/kernel/mac80211/patches/subsys/362-mac80211-minstrel_ht-automatically-calculate-rate-du.patch')
-rw-r--r-- | package/kernel/mac80211/patches/subsys/362-mac80211-minstrel_ht-automatically-calculate-rate-du.patch | 189 |
1 files changed, 0 insertions, 189 deletions
diff --git a/package/kernel/mac80211/patches/subsys/362-mac80211-minstrel_ht-automatically-calculate-rate-du.patch b/package/kernel/mac80211/patches/subsys/362-mac80211-minstrel_ht-automatically-calculate-rate-du.patch deleted file mode 100644 index 81d14966f7..0000000000 --- a/package/kernel/mac80211/patches/subsys/362-mac80211-minstrel_ht-automatically-calculate-rate-du.patch +++ /dev/null @@ -1,189 +0,0 @@ -From: Felix Fietkau <nbd@nbd.name> -Date: Mon, 25 Mar 2019 09:02:52 +0100 -Subject: [PATCH] mac80211: minstrel_ht: automatically calculate rate - duration shift - -A per-group shift was added to reduce the size of the per-rate transmit -duration field to u16 without sacrificing a lot of precision -This patch changes the macros to automatically calculate the best value for -this shift based on the lowest rate within the group. -This simplifies adding more groups and slightly improves accuracy for some of -the existing groups. - -Signed-off-by: Felix Fietkau <nbd@nbd.name> ---- - ---- a/net/mac80211/rc80211_minstrel_ht.c -+++ b/net/mac80211/rc80211_minstrel_ht.c -@@ -51,8 +51,11 @@ - MINSTREL_MAX_STREAMS * _sgi + \ - _streams - 1 - -+#define GROUP_SHIFT(duration) \ -+ (16 - __builtin_clz(duration)) -+ - /* MCS rate information for an MCS group */ --#define MCS_GROUP(_streams, _sgi, _ht40, _s) \ -+#define __MCS_GROUP(_streams, _sgi, _ht40, _s) \ - [GROUP_IDX(_streams, _sgi, _ht40)] = { \ - .streams = _streams, \ - .shift = _s, \ -@@ -72,6 +75,13 @@ - } \ - } - -+#define MCS_GROUP_SHIFT(_streams, _sgi, _ht40) \ -+ GROUP_SHIFT(MCS_DURATION(_streams, _sgi, _ht40 ? 54 : 26)) -+ -+#define MCS_GROUP(_streams, _sgi, _ht40) \ -+ __MCS_GROUP(_streams, _sgi, _ht40, \ -+ MCS_GROUP_SHIFT(_streams, _sgi, _ht40)) -+ - #define VHT_GROUP_IDX(_streams, _sgi, _bw) \ - (MINSTREL_VHT_GROUP_0 + \ - MINSTREL_MAX_STREAMS * 2 * (_bw) + \ -@@ -81,7 +91,7 @@ - #define BW2VBPS(_bw, r3, r2, r1) \ - (_bw == BW_80 ? r3 : _bw == BW_40 ? r2 : r1) - --#define VHT_GROUP(_streams, _sgi, _bw, _s) \ -+#define __VHT_GROUP(_streams, _sgi, _bw, _s) \ - [VHT_GROUP_IDX(_streams, _sgi, _bw)] = { \ - .streams = _streams, \ - .shift = _s, \ -@@ -114,6 +124,14 @@ - } \ - } - -+#define VHT_GROUP_SHIFT(_streams, _sgi, _bw) \ -+ GROUP_SHIFT(MCS_DURATION(_streams, _sgi, \ -+ BW2VBPS(_bw, 117, 54, 26))) -+ -+#define VHT_GROUP(_streams, _sgi, _bw) \ -+ __VHT_GROUP(_streams, _sgi, _bw, \ -+ VHT_GROUP_SHIFT(_streams, _sgi, _bw)) -+ - #define CCK_DURATION(_bitrate, _short, _len) \ - (1000 * (10 /* SIFS */ + \ - (_short ? 72 + 24 : 144 + 48) + \ -@@ -129,7 +147,7 @@ - CCK_ACK_DURATION(55, _short) >> _s, \ - CCK_ACK_DURATION(110, _short) >> _s - --#define CCK_GROUP(_s) \ -+#define __CCK_GROUP(_s) \ - [MINSTREL_CCK_GROUP] = { \ - .streams = 1, \ - .flags = 0, \ -@@ -140,6 +158,12 @@ - } \ - } - -+#define CCK_GROUP_SHIFT \ -+ GROUP_SHIFT(CCK_ACK_DURATION(10, false)) -+ -+#define CCK_GROUP __CCK_GROUP(CCK_GROUP_SHIFT) -+ -+ - static bool minstrel_vht_only = true; - module_param(minstrel_vht_only, bool, 0644); - MODULE_PARM_DESC(minstrel_vht_only, -@@ -154,57 +178,57 @@ MODULE_PARM_DESC(minstrel_vht_only, - * BW -> SGI -> #streams - */ - const struct mcs_group minstrel_mcs_groups[] = { -- MCS_GROUP(1, 0, BW_20, 5), -- MCS_GROUP(2, 0, BW_20, 4), -- MCS_GROUP(3, 0, BW_20, 4), -- MCS_GROUP(4, 0, BW_20, 4), -+ MCS_GROUP(1, 0, BW_20), -+ MCS_GROUP(2, 0, BW_20), -+ MCS_GROUP(3, 0, BW_20), -+ MCS_GROUP(4, 0, BW_20), - -- MCS_GROUP(1, 1, BW_20, 5), -- MCS_GROUP(2, 1, BW_20, 4), -- MCS_GROUP(3, 1, BW_20, 4), -- MCS_GROUP(4, 1, BW_20, 4), -+ MCS_GROUP(1, 1, BW_20), -+ MCS_GROUP(2, 1, BW_20), -+ MCS_GROUP(3, 1, BW_20), -+ MCS_GROUP(4, 1, BW_20), - -- MCS_GROUP(1, 0, BW_40, 4), -- MCS_GROUP(2, 0, BW_40, 4), -- MCS_GROUP(3, 0, BW_40, 4), -- MCS_GROUP(4, 0, BW_40, 4), -+ MCS_GROUP(1, 0, BW_40), -+ MCS_GROUP(2, 0, BW_40), -+ MCS_GROUP(3, 0, BW_40), -+ MCS_GROUP(4, 0, BW_40), - -- MCS_GROUP(1, 1, BW_40, 4), -- MCS_GROUP(2, 1, BW_40, 4), -- MCS_GROUP(3, 1, BW_40, 4), -- MCS_GROUP(4, 1, BW_40, 4), -+ MCS_GROUP(1, 1, BW_40), -+ MCS_GROUP(2, 1, BW_40), -+ MCS_GROUP(3, 1, BW_40), -+ MCS_GROUP(4, 1, BW_40), - -- CCK_GROUP(8), -+ CCK_GROUP, - -- VHT_GROUP(1, 0, BW_20, 5), -- VHT_GROUP(2, 0, BW_20, 4), -- VHT_GROUP(3, 0, BW_20, 4), -- VHT_GROUP(4, 0, BW_20, 4), -+ VHT_GROUP(1, 0, BW_20), -+ VHT_GROUP(2, 0, BW_20), -+ VHT_GROUP(3, 0, BW_20), -+ VHT_GROUP(4, 0, BW_20), - -- VHT_GROUP(1, 1, BW_20, 5), -- VHT_GROUP(2, 1, BW_20, 4), -- VHT_GROUP(3, 1, BW_20, 4), -- VHT_GROUP(4, 1, BW_20, 4), -+ VHT_GROUP(1, 1, BW_20), -+ VHT_GROUP(2, 1, BW_20), -+ VHT_GROUP(3, 1, BW_20), -+ VHT_GROUP(4, 1, BW_20), - -- VHT_GROUP(1, 0, BW_40, 4), -- VHT_GROUP(2, 0, BW_40, 4), -- VHT_GROUP(3, 0, BW_40, 4), -- VHT_GROUP(4, 0, BW_40, 3), -+ VHT_GROUP(1, 0, BW_40), -+ VHT_GROUP(2, 0, BW_40), -+ VHT_GROUP(3, 0, BW_40), -+ VHT_GROUP(4, 0, BW_40), - -- VHT_GROUP(1, 1, BW_40, 4), -- VHT_GROUP(2, 1, BW_40, 4), -- VHT_GROUP(3, 1, BW_40, 4), -- VHT_GROUP(4, 1, BW_40, 3), -+ VHT_GROUP(1, 1, BW_40), -+ VHT_GROUP(2, 1, BW_40), -+ VHT_GROUP(3, 1, BW_40), -+ VHT_GROUP(4, 1, BW_40), - -- VHT_GROUP(1, 0, BW_80, 4), -- VHT_GROUP(2, 0, BW_80, 4), -- VHT_GROUP(3, 0, BW_80, 4), -- VHT_GROUP(4, 0, BW_80, 2), -+ VHT_GROUP(1, 0, BW_80), -+ VHT_GROUP(2, 0, BW_80), -+ VHT_GROUP(3, 0, BW_80), -+ VHT_GROUP(4, 0, BW_80), - -- VHT_GROUP(1, 1, BW_80, 4), -- VHT_GROUP(2, 1, BW_80, 4), -- VHT_GROUP(3, 1, BW_80, 4), -- VHT_GROUP(4, 1, BW_80, 2), -+ VHT_GROUP(1, 1, BW_80), -+ VHT_GROUP(2, 1, BW_80), -+ VHT_GROUP(3, 1, BW_80), -+ VHT_GROUP(4, 1, BW_80), - }; - - static u8 sample_table[SAMPLE_COLUMNS][MCS_GROUP_RATES] __read_mostly; |