diff options
author | Felix Fietkau <nbd@nbd.name> | 2016-05-14 17:38:56 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2016-05-15 20:55:39 +0200 |
commit | df93d53a4b7a5ce284dc0c6509057979f233cb92 (patch) | |
tree | d99034d6d05295b9e27648dcbcf743b51c8a0c5b /package/kernel/mac80211/patches/335-mac80211-minstrel_ht-set-A-MSDU-tx-limits-based-on-s.patch | |
parent | ace946152dd0806b25bcb3812b33ab5df95966b7 (diff) | |
download | mtk-20170518-df93d53a4b7a5ce284dc0c6509057979f233cb92.zip mtk-20170518-df93d53a4b7a5ce284dc0c6509057979f233cb92.tar.gz mtk-20170518-df93d53a4b7a5ce284dc0c6509057979f233cb92.tar.bz2 |
mac80211: update to wireless-testing 2016-05-12
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/kernel/mac80211/patches/335-mac80211-minstrel_ht-set-A-MSDU-tx-limits-based-on-s.patch')
-rw-r--r-- | package/kernel/mac80211/patches/335-mac80211-minstrel_ht-set-A-MSDU-tx-limits-based-on-s.patch | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/package/kernel/mac80211/patches/335-mac80211-minstrel_ht-set-A-MSDU-tx-limits-based-on-s.patch b/package/kernel/mac80211/patches/335-mac80211-minstrel_ht-set-A-MSDU-tx-limits-based-on-s.patch deleted file mode 100644 index acaacf7..0000000 --- a/package/kernel/mac80211/patches/335-mac80211-minstrel_ht-set-A-MSDU-tx-limits-based-on-s.patch +++ /dev/null @@ -1,61 +0,0 @@ -From: Felix Fietkau <nbd@openwrt.org> -Date: Thu, 18 Feb 2016 19:30:05 +0100 -Subject: [PATCH] mac80211: minstrel_ht: set A-MSDU tx limits based on selected - max_prob_rate - -Prevents excessive A-MSDU aggregation at low data rates or bad -conditions. - -Signed-off-by: Felix Fietkau <nbd@openwrt.org> ---- - ---- a/net/mac80211/rc80211_minstrel_ht.c -+++ b/net/mac80211/rc80211_minstrel_ht.c -@@ -883,6 +883,39 @@ minstrel_ht_set_rate(struct minstrel_pri - ratetbl->rate[offset].flags = flags; - } - -+static int -+minstrel_ht_get_max_amsdu_len(struct minstrel_ht_sta *mi) -+{ -+ int group = mi->max_prob_rate / MCS_GROUP_RATES; -+ const struct mcs_group *g = &minstrel_mcs_groups[group]; -+ int rate = mi->max_prob_rate % MCS_GROUP_RATES; -+ -+ /* Disable A-MSDU if max_prob_rate is bad */ -+ if (mi->groups[group].rates[rate].prob_ewma < MINSTREL_FRAC(50, 100)) -+ return 1; -+ -+ /* If the rate is slower than single-stream MCS1, make A-MSDU limit small */ -+ if (g->duration[rate] > MCS_DURATION(1, 0, 52)) -+ return 500; -+ -+ /* -+ * If the rate is slower than single-stream MCS4, limit A-MSDU to usual -+ * data packet size -+ */ -+ if (g->duration[rate] > MCS_DURATION(1, 0, 104)) -+ return 1500; -+ -+ /* -+ * If the rate is slower than single-stream MCS7, limit A-MSDU to twice -+ * the usual data packet size -+ */ -+ if (g->duration[rate] > MCS_DURATION(1, 0, 260)) -+ return 3000; -+ -+ /* unlimited */ -+ return 0; -+} -+ - static void - minstrel_ht_update_rates(struct minstrel_priv *mp, struct minstrel_ht_sta *mi) - { -@@ -907,6 +940,7 @@ minstrel_ht_update_rates(struct minstrel - minstrel_ht_set_rate(mp, mi, rates, i++, mi->max_prob_rate); - } - -+ mi->sta->max_rc_amsdu_len = minstrel_ht_get_max_amsdu_len(mi); - rates->rate[i].idx = -1; - rate_control_set_rates(mp->hw, mi->sta, rates); - } |