aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/subsys/365-mac80211-minstrel_ht-fix-default-max-throughput-rate.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2019-06-14 21:32:15 +0200
committerFelix Fietkau <nbd@nbd.name>2019-08-12 11:43:39 +0200
commit9861050b85e5381c93d73ffdbc24c130400e0fb8 (patch)
treefa140d231a7bf5e6f38c0c2e6277272097bf31e5 /package/kernel/mac80211/patches/subsys/365-mac80211-minstrel_ht-fix-default-max-throughput-rate.patch
parent98b654de2e7502507b31f0fb82befbb48f9c8542 (diff)
downloadupstream-9861050b85e5381c93d73ffdbc24c130400e0fb8.tar.gz
upstream-9861050b85e5381c93d73ffdbc24c130400e0fb8.tar.bz2
upstream-9861050b85e5381c93d73ffdbc24c130400e0fb8.zip
mac80211: add new minstrel_ht patches to improve probing on mt76x2
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/kernel/mac80211/patches/subsys/365-mac80211-minstrel_ht-fix-default-max-throughput-rate.patch')
-rw-r--r--package/kernel/mac80211/patches/subsys/365-mac80211-minstrel_ht-fix-default-max-throughput-rate.patch46
1 files changed, 46 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/subsys/365-mac80211-minstrel_ht-fix-default-max-throughput-rate.patch b/package/kernel/mac80211/patches/subsys/365-mac80211-minstrel_ht-fix-default-max-throughput-rate.patch
new file mode 100644
index 0000000000..f1e684cad8
--- /dev/null
+++ b/package/kernel/mac80211/patches/subsys/365-mac80211-minstrel_ht-fix-default-max-throughput-rate.patch
@@ -0,0 +1,46 @@
+From: Felix Fietkau <nbd@nbd.name>
+Date: Fri, 14 Jun 2019 21:14:22 +0200
+Subject: [PATCH] mac80211: minstrel_ht: fix default max throughput rate
+ indexes
+
+Use the first supported rate instead of 0 (which can be invalid)
+
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+
+--- a/net/mac80211/rc80211_minstrel_ht.c
++++ b/net/mac80211/rc80211_minstrel_ht.c
+@@ -487,7 +487,7 @@ minstrel_ht_assign_best_tp_rates(struct
+ tmp_prob = mi->groups[tmp_group].rates[tmp_idx].prob_ewma;
+ tmp_mcs_tp = minstrel_ht_get_tp_avg(mi, tmp_group, tmp_idx, tmp_prob);
+
+- if (tmp_cck_tp > tmp_mcs_tp) {
++ if (tmp_cck_tp_rate && tmp_cck_tp > tmp_mcs_tp) {
+ for(i = 0; i < MAX_THR_RATES; i++) {
+ minstrel_ht_sort_best_tp_rates(mi, tmp_cck_tp_rate[i],
+ tmp_mcs_tp_rate);
+@@ -559,11 +559,19 @@ minstrel_ht_update_stats(struct minstrel
+ mi->sample_slow = 0;
+ mi->sample_count = 0;
+
+- /* Initialize global rate indexes */
+- for(j = 0; j < MAX_THR_RATES; j++){
+- tmp_mcs_tp_rate[j] = 0;
+- tmp_cck_tp_rate[j] = 0;
+- }
++ memset(tmp_mcs_tp_rate, 0, sizeof(tmp_mcs_tp_rate));
++ memset(tmp_cck_tp_rate, 0, sizeof(tmp_cck_tp_rate));
++ if (mi->supported[MINSTREL_CCK_GROUP])
++ for (j = 0; j < ARRAY_SIZE(tmp_cck_tp_rate); j++)
++ tmp_cck_tp_rate[j] = MINSTREL_CCK_GROUP * MCS_GROUP_RATES;
++
++ if (mi->supported[MINSTREL_VHT_GROUP_0])
++ index = MINSTREL_VHT_GROUP_0 * MCS_GROUP_RATES;
++ else
++ index = MINSTREL_HT_GROUP_0 * MCS_GROUP_RATES;
++
++ for (j = 0; j < ARRAY_SIZE(tmp_mcs_tp_rate); j++)
++ tmp_mcs_tp_rate[j] = index;
+
+ /* Find best rate sets within all MCS groups*/
+ for (group = 0; group < ARRAY_SIZE(minstrel_mcs_groups); group++) {