62 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From: Felix Fietkau <nbd@nbd.name>
 | 
						|
Date: Sat, 28 Sep 2019 15:44:06 +0200
 | 
						|
Subject: [PATCH] mac80211: minstrel: remove divisions in tx status path
 | 
						|
 | 
						|
Use a slightly different threshold for downgrading spatial streams to
 | 
						|
make it easier to calculate without divisions.
 | 
						|
Slightly reduces CPU overhead.
 | 
						|
 | 
						|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
						|
---
 | 
						|
 | 
						|
--- a/net/mac80211/rc80211_minstrel.c
 | 
						|
+++ b/net/mac80211/rc80211_minstrel.c
 | 
						|
@@ -289,8 +289,7 @@ minstrel_tx_status(void *priv, struct ie
 | 
						|
 	if (mi->sample_deferred > 0)
 | 
						|
 		mi->sample_deferred--;
 | 
						|
 
 | 
						|
-	if (time_after(jiffies, mi->last_stats_update +
 | 
						|
-				(mp->update_interval * HZ) / 1000))
 | 
						|
+	if (time_after(jiffies, mi->last_stats_update + mp->update_interval))
 | 
						|
 		minstrel_update_stats(mp, mi);
 | 
						|
 }
 | 
						|
 
 | 
						|
--- a/net/mac80211/rc80211_minstrel_ht.c
 | 
						|
+++ b/net/mac80211/rc80211_minstrel_ht.c
 | 
						|
@@ -970,23 +970,21 @@ minstrel_ht_tx_status(void *priv, struct
 | 
						|
 		 */
 | 
						|
 		rate = minstrel_get_ratestats(mi, mi->max_tp_rate[0]);
 | 
						|
 		if (rate->attempts > 30 &&
 | 
						|
-		    MINSTREL_FRAC(rate->success, rate->attempts) <
 | 
						|
-		    MINSTREL_FRAC(20, 100)) {
 | 
						|
+		    rate->success < rate->attempts / 4) {
 | 
						|
 			minstrel_downgrade_rate(mi, &mi->max_tp_rate[0], true);
 | 
						|
 			update = true;
 | 
						|
 		}
 | 
						|
 
 | 
						|
 		rate2 = minstrel_get_ratestats(mi, mi->max_tp_rate[1]);
 | 
						|
 		if (rate2->attempts > 30 &&
 | 
						|
-		    MINSTREL_FRAC(rate2->success, rate2->attempts) <
 | 
						|
-		    MINSTREL_FRAC(20, 100)) {
 | 
						|
+		    rate2->success < rate2->attempts / 4) {
 | 
						|
 			minstrel_downgrade_rate(mi, &mi->max_tp_rate[1], false);
 | 
						|
 			update = true;
 | 
						|
 		}
 | 
						|
 	}
 | 
						|
 
 | 
						|
 	if (time_after(jiffies, mi->last_stats_update +
 | 
						|
-				(mp->update_interval / 2 * HZ) / 1000)) {
 | 
						|
+				mp->update_interval / 2)) {
 | 
						|
 		update = true;
 | 
						|
 		minstrel_ht_update_stats(mp, mi, true);
 | 
						|
 	}
 | 
						|
@@ -1666,7 +1664,7 @@ minstrel_ht_alloc(struct ieee80211_hw *h
 | 
						|
 		mp->has_mrr = true;
 | 
						|
 
 | 
						|
 	mp->hw = hw;
 | 
						|
-	mp->update_interval = 100;
 | 
						|
+	mp->update_interval = HZ / 10;
 | 
						|
 
 | 
						|
 #ifdef CPTCFG_MAC80211_DEBUGFS
 | 
						|
 	mp->fixed_rate_idx = (u32) -1;
 |