mac80211: minstrel_ht: remove old ewma based rate average code
authorFelix Fietkau <nbd@nbd.name>
Fri, 15 Jan 2021 12:02:37 +0000 (13:02 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 22 Jan 2021 08:11:37 +0000 (09:11 +0100)
The new noise filter has been the default for a while now with no reported
downside and significant improvement compared to the old code.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
Link: https://lore.kernel.org/r/20210115120242.89616-5-nbd@nbd.name
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/rc80211_minstrel_ht.c
net/mac80211/rc80211_minstrel_ht.h

index 1fc3e836fe95d4d81e3e20a87482d5048cb4bbe7..9280461ed3cc068c1fa3c936404e76ac06996143 100644 (file)
@@ -769,17 +769,8 @@ minstrel_ht_calc_rate_stats(struct minstrel_priv *mp,
        if (unlikely(mrs->attempts > 0)) {
                mrs->sample_skipped = 0;
                cur_prob = MINSTREL_FRAC(mrs->success, mrs->attempts);
-               if (mp->new_avg) {
-                       minstrel_filter_avg_add(&mrs->prob_avg,
-                                               &mrs->prob_avg_1, cur_prob);
-               } else if (unlikely(!mrs->att_hist)) {
-                       mrs->prob_avg = cur_prob;
-               } else {
-                       /*update exponential weighted moving avarage */
-                       mrs->prob_avg = minstrel_ewma(mrs->prob_avg,
-                                                     cur_prob,
-                                                     EWMA_LEVEL);
-               }
+               minstrel_filter_avg_add(&mrs->prob_avg,
+                                       &mrs->prob_avg_1, cur_prob);
                mrs->att_hist += mrs->attempts;
                mrs->succ_hist += mrs->success;
        } else {
@@ -913,10 +904,8 @@ minstrel_ht_update_stats(struct minstrel_priv *mp, struct minstrel_ht_sta *mi,
        /* Try to increase robustness of max_prob_rate*/
        minstrel_ht_prob_rate_reduce_streams(mi);
 
-       /* try to sample all available rates during each interval */
-       mi->sample_count *= 8;
-       if (mp->new_avg)
-               mi->sample_count /= 2;
+       /* try to sample half of all available rates during each interval */
+       mi->sample_count *= 4;
 
        if (sample)
                minstrel_ht_rate_sample_switch(mp, mi);
@@ -1040,7 +1029,7 @@ minstrel_ht_tx_status(void *priv, struct ieee80211_supported_band *sband,
        struct ieee80211_tx_rate *ar = info->status.rates;
        struct minstrel_rate_stats *rate, *rate2, *rate_sample = NULL;
        struct minstrel_priv *mp = priv;
-       u32 update_interval = mp->update_interval / 2;
+       u32 update_interval = mp->update_interval;
        bool last, update = false;
        bool sample_status = false;
        int i;
@@ -1090,9 +1079,8 @@ minstrel_ht_tx_status(void *priv, struct ieee80211_supported_band *sband,
 
        switch (mi->sample_mode) {
        case MINSTREL_SAMPLE_IDLE:
-               if (mp->new_avg &&
-                   (mp->hw->max_rates > 1 ||
-                    mi->total_packets_cur < SAMPLE_SWITCH_THR))
+               if (mp->hw->max_rates > 1 ||
+                    mi->total_packets_cur < SAMPLE_SWITCH_THR)
                        update_interval /= 2;
                break;
 
@@ -1832,8 +1820,7 @@ minstrel_ht_alloc(struct ieee80211_hw *hw)
                mp->has_mrr = true;
 
        mp->hw = hw;
-       mp->update_interval = HZ / 10;
-       mp->new_avg = true;
+       mp->update_interval = HZ / 20;
 
        minstrel_ht_init_cck_rates(mp);
        for (i = 0; i < ARRAY_SIZE(mp->hw->wiphy->bands); i++)
@@ -1853,8 +1840,6 @@ static void minstrel_ht_add_debugfs(struct ieee80211_hw *hw, void *priv,
                           &mp->fixed_rate_idx);
        debugfs_create_u32("sample_switch", S_IRUGO | S_IWUSR, debugfsdir,
                           &mp->sample_switch);
-       debugfs_create_bool("new_avg", S_IRUGO | S_IWUSR, debugfsdir,
-                          &mp->new_avg);
 }
 #endif
 
index 25c3664bddde6ef53e1349b5c9a9b220a9518f43..7d6d0b720f6d0680df1150b4adedd538dfc197e5 100644 (file)
@@ -60,7 +60,6 @@
 struct minstrel_priv {
        struct ieee80211_hw *hw;
        bool has_mrr;
-       bool new_avg;
        u32 sample_switch;
        unsigned int cw_min;
        unsigned int cw_max;