diff options
author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2011-03-09 03:41:22 +0000 |
---|---|---|
committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2011-03-09 03:41:22 +0000 |
commit | da27ab47b39f2ce943e83d0c15f936e7d0529663 (patch) | |
tree | 382d456919cb0d94e039fa87ed502ae7f0815f3a /package/mac80211/patches | |
parent | 1776ea0ccd560e682f365216405f8d23adaebdd0 (diff) |
mac80211: fix minstrel_ht sampling intervals (patch by Daniel Halperin)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@25964 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/mac80211/patches')
-rw-r--r-- | package/mac80211/patches/560-mac80211_minstrel_ht_sampling_fix.patch | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/package/mac80211/patches/560-mac80211_minstrel_ht_sampling_fix.patch b/package/mac80211/patches/560-mac80211_minstrel_ht_sampling_fix.patch new file mode 100644 index 000000000..011f87ad3 --- /dev/null +++ b/package/mac80211/patches/560-mac80211_minstrel_ht_sampling_fix.patch @@ -0,0 +1,50 @@ +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c +@@ -415,10 +415,8 @@ minstrel_ht_tx_status(void *priv, struct + mi->sample_count--; + } + +- if (info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE) { ++ if (info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE) + mi->sample_packets += info->status.ampdu_len; +- minstrel_next_sample_idx(mi); +- } + + for (i = 0; !last; i++) { + last = (i == IEEE80211_TX_MAX_RATES - 1) || +@@ -553,13 +551,14 @@ minstrel_get_sample_rate(struct minstrel + sample_idx = sample_table[mg->column][mg->index]; + mr = &mg->rates[sample_idx]; + sample_idx += mi->sample_group * MCS_GROUP_RATES; ++ minstrel_next_sample_idx(mi); + + /* + * When not using MRR, do not sample if the probability is already + * higher than 95% to avoid wasting airtime + */ + if (!mp->has_mrr && (mr->probability > MINSTREL_FRAC(95, 100))) +- goto next; ++ return -1; + + /* + * Make sure that lower rates get sampled only occasionally, +@@ -568,17 +567,13 @@ minstrel_get_sample_rate(struct minstrel + if (minstrel_get_duration(sample_idx) > + minstrel_get_duration(mi->max_tp_rate)) { + if (mr->sample_skipped < 20) +- goto next; ++ return -1; + + if (mi->sample_slow++ > 2) +- goto next; ++ return -1; + } + + return sample_idx; +- +-next: +- minstrel_next_sample_idx(mi); +- return -1; + } + + static void |