mirror of https://gitee.com/openkylin/linux.git
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>
This commit is contained in:
parent
75b99bc300
commit
fe56c9c17b
|
@ -16,6 +16,7 @@
|
||||||
#define TEST_FRAME_LEN 8192
|
#define TEST_FRAME_LEN 8192
|
||||||
#define MAX_METRIC 0xffffffff
|
#define MAX_METRIC 0xffffffff
|
||||||
#define ARITH_SHIFT 8
|
#define ARITH_SHIFT 8
|
||||||
|
#define LINK_FAIL_THRESH 95
|
||||||
|
|
||||||
#define MAX_PREQ_QUEUE_LEN 64
|
#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
|
* feed failure as 100 and success as 0
|
||||||
*/
|
*/
|
||||||
ewma_mesh_fail_avg_add(&sta->mesh->fail_avg, failed * 100);
|
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);
|
mesh_plink_broken(sta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -339,7 +341,7 @@ static u32 airtime_link_metric_get(struct ieee80211_local *local,
|
||||||
if (rate) {
|
if (rate) {
|
||||||
err = 0;
|
err = 0;
|
||||||
} else {
|
} else {
|
||||||
if (fail_avg >= 100)
|
if (fail_avg > LINK_FAIL_THRESH)
|
||||||
return MAX_METRIC;
|
return MAX_METRIC;
|
||||||
|
|
||||||
sta_set_rate_info_tx(sta, &sta->tx_stats.last_rate, &rinfo);
|
sta_set_rate_info_tx(sta, &sta->tx_stats.last_rate, &rinfo);
|
||||||
|
|
Loading…
Reference in New Issue