[openwrt/openwrt.git] / package / kernel / mac80211 / patches / subsys / 354-mac80211-minstrel_ht-reduce-fluctuations-in-rate-pro.patch

1 From: Felix Fietkau <nbd@nbd.name>

2 Date: Sat, 6 Feb 2021 16:08:01 +0100

3 Subject: [PATCH] mac80211: minstrel_ht: reduce fluctuations in rate

4 probability stats

6 In some scenarios when there is a lot of fluctuation in packet error rates,

7 rate switching can be amplified when the statistics get skewed by time slots

8 with very few tries.

9 Make the input data to the moving average more smooth by adding the

10 success/attempts count from the last stats window as well. This has the

11 advantage of smoothing the data without introducing any extra lag to sampling

12 rates.

13 This significantly improves rate stability on a strong test link subjected to

14 periodic noise bursts generated with a SDR

16 Signed-off-by: Felix Fietkau <nbd@nbd.name>

17 ---

19 --- a/net/mac80211/rc80211_minstrel_ht.c

20 +++ b/net/mac80211/rc80211_minstrel_ht.c

21 @@ -700,7 +700,8 @@ minstrel_ht_calc_rate_stats(struct minst

22 unsigned int cur_prob;

24 if (unlikely(mrs->attempts > 0)) {

25 - cur_prob = MINSTREL_FRAC(mrs->success, mrs->attempts);

26 + cur_prob = MINSTREL_FRAC(mrs->success + mrs->last_success,

27 + mrs->attempts + mrs->last_attempts);

28 minstrel_filter_avg_add(&mrs->prob_avg,

29 &mrs->prob_avg_1, cur_prob);

30 mrs->att_hist += mrs->attempts;