diff options
author | Felix Fietkau <nbd@openwrt.org> | 2011-03-09 03:41:22 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2011-03-09 03:41:22 +0000 |
commit | e12476873c80309218aa33f006fb7a6cbf20f8bd (patch) | |
tree | 382d456919cb0d94e039fa87ed502ae7f0815f3a | |
parent | 129e9e84d30850a1479cfcffe116cf718df4f878 (diff) | |
download | upstream-e12476873c80309218aa33f006fb7a6cbf20f8bd.tar.gz upstream-e12476873c80309218aa33f006fb7a6cbf20f8bd.tar.bz2 upstream-e12476873c80309218aa33f006fb7a6cbf20f8bd.zip |
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
-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 0000000000..011f87ad31 --- /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 |