mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 15:02:32 +00:00
31 lines
1.2 KiB
Diff
31 lines
1.2 KiB
Diff
|
From: Felix Fietkau <nbd@nbd.name>
|
||
|
Date: Sat, 6 Feb 2021 16:08:01 +0100
|
||
|
Subject: [PATCH] mac80211: minstrel_ht: reduce fluctuations in rate
|
||
|
probability stats
|
||
|
|
||
|
In some scenarios when there is a lot of fluctuation in packet error rates,
|
||
|
rate switching can be amplified when the statistics get skewed by time slots
|
||
|
with very few tries.
|
||
|
Make the input data to the moving average more smooth by adding the
|
||
|
success/attempts count from the last stats window as well. This has the
|
||
|
advantage of smoothing the data without introducing any extra lag to sampling
|
||
|
rates.
|
||
|
This significantly improves rate stability on a strong test link subjected to
|
||
|
periodic noise bursts generated with a SDR
|
||
|
|
||
|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||
|
---
|
||
|
|
||
|
--- a/net/mac80211/rc80211_minstrel_ht.c
|
||
|
+++ b/net/mac80211/rc80211_minstrel_ht.c
|
||
|
@@ -700,7 +700,8 @@ minstrel_ht_calc_rate_stats(struct minst
|
||
|
unsigned int cur_prob;
|
||
|
|
||
|
if (unlikely(mrs->attempts > 0)) {
|
||
|
- cur_prob = MINSTREL_FRAC(mrs->success, mrs->attempts);
|
||
|
+ cur_prob = MINSTREL_FRAC(mrs->success + mrs->last_success,
|
||
|
+ mrs->attempts + mrs->last_attempts);
|
||
|
minstrel_filter_avg_add(&mrs->prob_avg,
|
||
|
&mrs->prob_avg_1, cur_prob);
|
||
|
mrs->att_hist += mrs->attempts;
|