summaryrefslogtreecommitdiff
path: root/net/mac80211/rc80211_minstrel_ht.h
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2019-10-08 19:11:38 +0200
committerJohannes Berg <johannes.berg@intel.com>2019-10-11 10:31:32 +0200
commitb1103d256704869f94c1399d189618c43724ded6 (patch)
treef593c1561c8595ade04d5d51f43d47bb02cbddbc /net/mac80211/rc80211_minstrel_ht.h
parent8f2f495ca93e01b383dc0944689e7595027ca6ec (diff)
mac80211: minstrel_ht: replace rate stats ewma with a better moving average
Rate success probability usually fluctuates a lot under normal conditions. With a simple EWMA, noise and fluctuation can be reduced by increasing the window length, but that comes at the cost of introducing lag on sudden changes. This change replaces the EWMA implementation with a moving average that's designed to significantly reduce lag while keeping a bigger window size by being better at filtering out noise. It is only slightly more expensive than the simple EWMA and still avoids divisions in its calculation. The algorithm is adapted from an implementation intended for a completely different field (stock market trading), where the tradeoff of lag vs noise filtering is equally important. It is based on the "smoothing filter" from http://www.stockspotter.com/files/PredictiveIndicators.pdf. I have adapted it to fixed-point math with some constants so that it uses only addition, bit shifts and multiplication To better make use of the filtering and bigger window size, the update interval time is cut in half. For testing, the algorithm can be reverted to the older one via debugfs Signed-off-by: Felix Fietkau <nbd@nbd.name> Link: https://lore.kernel.org/r/20191008171139.96476-2-nbd@nbd.name Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/rc80211_minstrel_ht.h')
0 files changed, 0 insertions, 0 deletions