diff options
author | Manoharan, Rajkumar <rmanohar@qca.qualcomm.com> | 2017-02-14 12:27:16 -0800 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2017-03-06 09:21:21 +0100 |
commit | 3eb0928fc3e4b4702462164b399acddb7f0f09fd (patch) | |
tree | a65b5465141c89095abf3a7021019b1aeeafba57 /net/mac80211/sta_info.h | |
parent | 8d70eeb84ab277377c017af6a21d0a337025dede (diff) |
mac80211: use DECLARE_EWMA for mesh_fail_avg
As moving average is not considering fractional part, it will
get stuck at the same level after certain state. For example,
with current values, it can get stuck at 96. Fortunately the
current threshold 95%, but if it were increased to 96 or more
mesh paths would never be deactivated. Fix failure average
movement by using EWMA helpers, which does take into account
fractional parts.
Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
[johannes: pick a larger EWMA factor for more precision with
the limited range that we will feed into it, adjust to new API]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/sta_info.h')
-rw-r--r-- | net/mac80211/sta_info.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h index e65cda34d2bc..cc413f52108e 100644 --- a/net/mac80211/sta_info.h +++ b/net/mac80211/sta_info.h @@ -324,6 +324,9 @@ struct ieee80211_fast_rx { struct rcu_head rcu_head; }; +/* we use only values in the range 0-100, so pick a large precision */ +DECLARE_EWMA(mesh_fail_avg, 20, 8) + /** * struct mesh_sta - mesh STA information * @plink_lock: serialize access to plink fields @@ -369,7 +372,7 @@ struct mesh_sta { enum nl80211_mesh_power_mode nonpeer_pm; /* moving percentage of failed MSDUs */ - unsigned int fail_avg; + struct ewma_mesh_fail_avg fail_avg; }; DECLARE_EWMA(signal, 10, 8) |