Legacy minstrel is essentially unmaintained and was showing poor performance Replace it with minstrel_ht and improve rate selection and sampling behavior Signed-off-by: Felix Fietkau <nbd@nbd.name>
		
			
				
	
	
		
			32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From: Felix Fietkau <nbd@nbd.name>
 | 
						|
Date: Sat, 26 Dec 2020 19:12:22 +0100
 | 
						|
Subject: [PATCH] mac80211: minstrel_ht: improve sample rate selection
 | 
						|
 | 
						|
Always allow sampling of rates faster than the primary max throughput rate.
 | 
						|
When the second max_tp_rate is higher than the first one, sample attempts were
 | 
						|
previously skipped, potentially causing rate control to get stuck at a slightly
 | 
						|
lower rate
 | 
						|
 | 
						|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
						|
---
 | 
						|
 | 
						|
--- a/net/mac80211/rc80211_minstrel_ht.c
 | 
						|
+++ b/net/mac80211/rc80211_minstrel_ht.c
 | 
						|
@@ -1379,13 +1379,13 @@ minstrel_get_sample_rate(struct minstrel
 | 
						|
 	mrs = &mg->rates[sample_idx];
 | 
						|
 	sample_idx += sample_group * MCS_GROUP_RATES;
 | 
						|
 
 | 
						|
-	/* Set tp_rate1, tp_rate2 to the highest / second highest max_tp_rate */
 | 
						|
+	tp_rate1 = mi->max_tp_rate[0];
 | 
						|
+
 | 
						|
+	/* Set tp_rate2 to the second highest max_tp_rate */
 | 
						|
 	if (minstrel_get_duration(mi->max_tp_rate[0]) >
 | 
						|
 	    minstrel_get_duration(mi->max_tp_rate[1])) {
 | 
						|
-		tp_rate1 = mi->max_tp_rate[1];
 | 
						|
 		tp_rate2 = mi->max_tp_rate[0];
 | 
						|
 	} else {
 | 
						|
-		tp_rate1 = mi->max_tp_rate[0];
 | 
						|
 		tp_rate2 = mi->max_tp_rate[1];
 | 
						|
 	}
 | 
						|
 
 |