mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 01:11:14 +00:00
8d90b9fef1
This should help stay in sync with upstream development Signed-off-by: Felix Fietkau <nbd@nbd.name>
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
|
|
@@ -769,7 +769,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;
|