diff options
author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-11-03 22:09:08 +0000 |
---|---|---|
committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-11-03 22:09:08 +0000 |
commit | 3330f0fa390bb1da4c9049efd8f9f388c49ee6e6 (patch) | |
tree | 5332e051bc6d81f6f638e152656edfef6972596f /package/mac80211/patches/426-minstrel_performance.patch | |
parent | e0338bc09b6af973ecc6be38ff3d5e1012e1e938 (diff) |
upgrade compat-wireless to 2008-11-03
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13114 3c298f89-4303-0410-b956-a3cf2f4a3e73
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 7b95163c6..000000000 --- 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; |