mac80211: optimize minstrel_ewma
authorKarl Beldan <karl.beldan@rivierawaves.com>
Wed, 17 Apr 2013 11:43:22 +0000 (13:43 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 17 Apr 2013 15:08:49 +0000 (17:08 +0200)
Use powers of two in ewma of minstrel.
This changes :
- EWMA_DIV   from 100 to 2^7
- EWMA_LEVEL from 75 (/EWMA_DIV=100) to 2^6 + 2^5 (/EWMA_DIV=128)

Note that this changes EWMA_DIV - EWMA_LEVEL from 25 to 2^5 and keeps
EWMA_LEVEL / EWMA_DIV == 0.75.

Signed-off-by: Karl Beldan <karl.beldan@rivierawaves.com>
Acked-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/rc80211_minstrel.h

index 85ebf42cb46de4e11a032a496025c9f0ea7be375..b9f8535fa15c51c59d8a8abff373c5344694dbb5 100644 (file)
@@ -9,7 +9,8 @@
 #ifndef __RC_MINSTREL_H
 #define __RC_MINSTREL_H
 
-#define EWMA_LEVEL     75      /* ewma weighting factor [%] */
+#define EWMA_LEVEL     96      /* ewma weighting factor [/EWMA_DIV] */
+#define EWMA_DIV       128
 #define SAMPLE_COLUMNS 10      /* number of columns in sample table */
 
 
@@ -27,7 +28,7 @@
 static inline int
 minstrel_ewma(int old, int new, int weight)
 {
-       return (new * (100 - weight) + old * weight) / 100;
+       return (new * (EWMA_DIV - weight) + old * weight) / EWMA_DIV;
 }