mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 14:34:27 -05:00 
			
		
		
		
	Reduce fluctuations in rate selection / statistics Signed-off-by: Felix Fietkau <nbd@nbd.name>
		
			
				
	
	
		
			31 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From: Felix Fietkau <nbd@nbd.name>
 | 
						|
Date: Sat, 6 Feb 2021 16:08:01 +0100
 | 
						|
Subject: [PATCH] mac80211: minstrel_ht: reduce fluctuations in rate
 | 
						|
 probability stats
 | 
						|
 | 
						|
In some scenarios when there is a lot of fluctuation in packet error rates,
 | 
						|
rate switching can be amplified when the statistics get skewed by time slots
 | 
						|
with very few tries.
 | 
						|
Make the input data to the moving average more smooth by adding the
 | 
						|
success/attempts count from the last stats window as well. This has the
 | 
						|
advantage of smoothing the data without introducing any extra lag to sampling
 | 
						|
rates.
 | 
						|
This significantly improves rate stability on a strong test link subjected to
 | 
						|
periodic noise bursts generated with a SDR
 | 
						|
 | 
						|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
						|
---
 | 
						|
 | 
						|
--- a/net/mac80211/rc80211_minstrel_ht.c
 | 
						|
+++ b/net/mac80211/rc80211_minstrel_ht.c
 | 
						|
@@ -700,7 +700,8 @@ minstrel_ht_calc_rate_stats(struct minst
 | 
						|
 	unsigned int cur_prob;
 | 
						|
 
 | 
						|
 	if (unlikely(mrs->attempts > 0)) {
 | 
						|
-		cur_prob = MINSTREL_FRAC(mrs->success, mrs->attempts);
 | 
						|
+		cur_prob = MINSTREL_FRAC(mrs->success + mrs->last_success,
 | 
						|
+					 mrs->attempts + mrs->last_attempts);
 | 
						|
 		minstrel_filter_avg_add(&mrs->prob_avg,
 | 
						|
 					&mrs->prob_avg_1, cur_prob);
 | 
						|
 		mrs->att_hist += mrs->attempts;
 |