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; | 
