diff options
author | Felix Fietkau <nbd@openwrt.org> | 2008-11-03 22:09:08 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2008-11-03 22:09:08 +0000 |
commit | 21bd5492b344b42780975c6eba13195e5ba2eb5f (patch) | |
tree | bc19a4e80f39567aa1bc5ad7d836ae4bd418e6c7 /package/mac80211/patches/426-minstrel_performance.patch | |
parent | 96f98b5616a1418d668a7be286003e21aef1ea46 (diff) | |
download | upstream-21bd5492b344b42780975c6eba13195e5ba2eb5f.tar.gz upstream-21bd5492b344b42780975c6eba13195e5ba2eb5f.tar.bz2 upstream-21bd5492b344b42780975c6eba13195e5ba2eb5f.zip |
upgrade compat-wireless to 2008-11-03
SVN-Revision: 13114
Diffstat (limited to 'package/mac80211/patches/426-minstrel_performance.patch')
-rw-r--r-- | package/mac80211/patches/426-minstrel_performance.patch | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/package/mac80211/patches/426-minstrel_performance.patch b/package/mac80211/patches/426-minstrel_performance.patch deleted file mode 100644 index 7b95163c6c..0000000000 --- a/package/mac80211/patches/426-minstrel_performance.patch +++ /dev/null @@ -1,100 +0,0 @@ -This patch enhances minstrel's performance for non-MRR setups, -by preventing it from sampling slower rates with >95% success -probability and by putting at least 1 non-sample frame between -several sample frames. - -Signed-off-by: Felix Fietkau <nbd@openwrt.org> - ---- a/net/mac80211/rc80211_minstrel.c -+++ b/net/mac80211/rc80211_minstrel.c -@@ -126,7 +126,9 @@ minstrel_update_stats(struct minstrel_pr - mr->adjusted_retry_count = mr->retry_count >> 1; - if (mr->adjusted_retry_count > 2) - mr->adjusted_retry_count = 2; -+ mr->sample_limit = 4; - } else { -+ mr->sample_limit = -1; - mr->adjusted_retry_count = mr->retry_count; - } - if (!mr->adjusted_retry_count) -@@ -265,7 +267,8 @@ minstrel_get_rate(void *priv, struct iee - (mi->sample_count + mi->sample_deferred / 2); - - /* delta > 0: sampling required */ -- if (delta > 0) { -+ if ((delta > 0) && (mrr || !mi->prev_sample)) { -+ struct minstrel_rate *msr; - if (mi->packet_count >= 10000) { - mi->sample_deferred = 0; - mi->sample_count = 0; -@@ -284,13 +287,20 @@ minstrel_get_rate(void *priv, struct iee - } - - sample_ndx = minstrel_get_next_sample(mi); -+ msr = &mi->r[sample_ndx]; - sample = true; -- sample_slower = mrr && (mi->r[sample_ndx].perfect_tx_time > -+ sample_slower = mrr && (msr->perfect_tx_time > - mi->r[ndx].perfect_tx_time); - - if (!sample_slower) { -- ndx = sample_ndx; -- mi->sample_count++; -+ if (msr->sample_limit != 0) { -+ ndx = sample_ndx; -+ mi->sample_count++; -+ if (msr->sample_limit > 0) -+ msr->sample_limit--; -+ } else { -+ sample = false; -+ } - } else { - /* Only use IEEE80211_TX_CTL_RATE_CTRL_PROBE to mark - * packets that have the sampling rate deferred to the -@@ -302,10 +312,20 @@ minstrel_get_rate(void *priv, struct iee - mi->sample_deferred++; - } - } -+ mi->prev_sample = sample; -+ -+ /* If we're not using MRR and the sampling rate already -+ * has a probability of >95%, we shouldn't be attempting -+ * to use it, as this only wastes precious airtime */ -+ if (!mrr && sample && (mi->r[ndx].probability > 17100)) -+ ndx = mi->max_tp_rate; -+ - ar[0].idx = mi->r[ndx].rix; - ar[0].count = minstrel_get_retry_count(&mi->r[ndx], info); - - if (!mrr) { -+ if (!sample) -+ ar[0].count = mp->max_retry; - ar[1].idx = mi->lowest_rix; - ar[1].count = mp->max_retry; - return; -@@ -401,6 +421,7 @@ minstrel_rate_init(void *priv, struct ie - - /* calculate maximum number of retransmissions before - * fallback (based on maximum segment size) */ -+ mr->sample_limit = -1; - mr->retry_count = 1; - mr->retry_count_cts = 1; - mr->retry_count_rtscts = 1; ---- a/net/mac80211/rc80211_minstrel.h -+++ b/net/mac80211/rc80211_minstrel.h -@@ -16,6 +16,7 @@ struct minstrel_rate { - unsigned int perfect_tx_time; - unsigned int ack_time; - -+ int sample_limit; - unsigned int retry_count; - unsigned int retry_count_cts; - unsigned int retry_count_rtscts; -@@ -57,6 +58,7 @@ struct minstrel_sta_info { - - int n_rates; - struct minstrel_rate *r; -+ bool prev_sample; - - /* sampling table */ - u8 *sample_table; |