summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManoharan, Rajkumar <rmanohar@qca.qualcomm.com>2017-02-15 12:46:50 -0800
committerJohannes Berg <johannes.berg@intel.com>2017-03-06 09:21:46 +0100
commitfe56c9c17b09769691e8b91747b32aa2555bef35 (patch)
tree835f117b1b17c3ab4b3c1cfb5d13ed55aa0ce549
parent75b99bc300463e65f87c90425704c2688489f963 (diff)
mac80211: fix mesh fail_avg check
Mesh failure average never be more than 100. Only in case of fixed path, average will be more than threshold limit (95%). With recent EWMA changes it may go upto 99 as it is scaled to 100. It make sense to return maximum metric when average is greater than threshold limit. Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--net/mac80211/mesh_hwmp.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/mac80211/mesh_hwmp.c b/net/mac80211/mesh_hwmp.c
index d07ee3ca07ee..4005edd71fe8 100644
--- a/net/mac80211/mesh_hwmp.c
+++ b/net/mac80211/mesh_hwmp.c
@@ -16,6 +16,7 @@
#define TEST_FRAME_LEN 8192
#define MAX_METRIC 0xffffffff
#define ARITH_SHIFT 8
+#define LINK_FAIL_THRESH 95
#define MAX_PREQ_QUEUE_LEN 64
@@ -311,7 +312,8 @@ void ieee80211s_update_metric(struct ieee80211_local *local,
* feed failure as 100 and success as 0
*/
ewma_mesh_fail_avg_add(&sta->mesh->fail_avg, failed * 100);
- if (ewma_mesh_fail_avg_read(&sta->mesh->fail_avg) > 95)
+ if (ewma_mesh_fail_avg_read(&sta->mesh->fail_avg) >
+ LINK_FAIL_THRESH)
mesh_plink_broken(sta);
}
@@ -339,7 +341,7 @@ static u32 airtime_link_metric_get(struct ieee80211_local *local,
if (rate) {
err = 0;
} else {
- if (fail_avg >= 100)
+ if (fail_avg > LINK_FAIL_THRESH)
return MAX_METRIC;
sta_set_rate_info_tx(sta, &sta->tx_stats.last_rate, &rinfo);