mac80211: fix an uninitialized variable warning
authorFelix Fietkau <nbd@nbd.name>
Tue, 26 Jan 2021 18:25:10 +0000 (19:25 +0100)
committerFelix Fietkau <nbd@nbd.name>
Tue, 26 Jan 2021 19:00:03 +0000 (20:00 +0100)
Signed-off-by: Felix Fietkau <nbd@nbd.name>
package/kernel/mac80211/patches/subsys/346-mac80211-minstrel_ht-use-bitfields-to-encode-rate-in.patch
package/kernel/mac80211/patches/subsys/347-mac80211-minstrel_ht-update-total-packets-counter-in.patch
package/kernel/mac80211/patches/subsys/348-mac80211-minstrel_ht-reduce-the-need-to-sample-slowe.patch
package/kernel/mac80211/patches/subsys/349-mac80211-minstrel_ht-significantly-redesign-the-rate.patch
package/kernel/mac80211/patches/subsys/351-mac80211-minstrel_ht-remove-sample-rate-switching-co.patch

index a17725d69b272299d16dd2c65b3b122a97ba357d..6aa6f0ed934812af7345c560c4bf07d24d4f8daf 100644 (file)
@@ -172,11 +172,12 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                for (i = 0; supported; supported >>= 1, i++) {
                        if (!(supported & 1))
                                continue;
-@@ -856,22 +856,26 @@ minstrel_ht_update_stats(struct minstrel
+@@ -854,24 +854,27 @@ minstrel_ht_update_stats(struct minstrel
+       mi->sample_slow = 0;
+       mi->sample_count = 0;
  
-       memset(tmp_mcs_tp_rate, 0, sizeof(tmp_mcs_tp_rate));
-       memset(tmp_legacy_tp_rate, 0, sizeof(tmp_legacy_tp_rate));
-+
+-      memset(tmp_mcs_tp_rate, 0, sizeof(tmp_mcs_tp_rate));
+-      memset(tmp_legacy_tp_rate, 0, sizeof(tmp_legacy_tp_rate));
        if (mi->supported[MINSTREL_CCK_GROUP])
 -              for (j = 0; j < ARRAY_SIZE(tmp_legacy_tp_rate); j++)
 -                      tmp_legacy_tp_rate[j] = MINSTREL_CCK_GROUP * MCS_GROUP_RATES;
@@ -185,6 +186,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 -              for (j = 0; j < ARRAY_SIZE(tmp_legacy_tp_rate); j++)
 -                      tmp_legacy_tp_rate[j] = MINSTREL_OFDM_GROUP * MCS_GROUP_RATES;
 +              group = MINSTREL_OFDM_GROUP;
++      else
++              group = 0;
 +
 +      index = MI_RATE(group, 0);
 +      for (j = 0; j < ARRAY_SIZE(tmp_legacy_tp_rate); j++)
@@ -207,7 +210,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        tmp_max_prob_rate = index;
        for (j = 0; j < ARRAY_SIZE(tmp_mcs_tp_rate); j++)
                tmp_mcs_tp_rate[j] = index;
-@@ -888,7 +892,7 @@ minstrel_ht_update_stats(struct minstrel
+@@ -888,7 +891,7 @@ minstrel_ht_update_stats(struct minstrel
  
                /* (re)Initialize group rate indexes */
                for(j = 0; j < MAX_THR_RATES; j++)
@@ -216,7 +219,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
                if (group == MINSTREL_CCK_GROUP && ht_supported)
                        tp_rate = tmp_legacy_tp_rate;
-@@ -897,7 +901,7 @@ minstrel_ht_update_stats(struct minstrel
+@@ -897,7 +900,7 @@ minstrel_ht_update_stats(struct minstrel
                        if (!(mi->supported[group] & BIT(i)))
                                continue;
  
@@ -225,7 +228,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
                        mrs = &mg->rates[i];
                        mrs->retry_updated = false;
-@@ -929,13 +933,13 @@ minstrel_ht_update_stats(struct minstrel
+@@ -929,13 +932,13 @@ minstrel_ht_update_stats(struct minstrel
                        continue;
  
                mg = &mi->groups[group];
@@ -241,7 +244,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
                        /* Find max probability rate per group and global */
                        minstrel_ht_set_best_prob_rate(mi, &tmp_max_prob_rate,
-@@ -1022,7 +1026,7 @@ minstrel_downgrade_rate(struct minstrel_
+@@ -1022,7 +1025,7 @@ minstrel_downgrade_rate(struct minstrel_
  {
        int group, orig_group;
  
@@ -250,7 +253,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        while (group > 0) {
                group--;
  
-@@ -1206,7 +1210,7 @@ minstrel_calc_retransmit(struct minstrel
+@@ -1206,7 +1209,7 @@ minstrel_calc_retransmit(struct minstrel
        ctime += (t_slot * cw) >> 1;
        cw = min((cw << 1) | 1, mp->cw_max);
  
@@ -259,7 +262,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                overhead = mi->overhead_legacy;
                overhead_rtscts = mi->overhead_legacy_rtscts;
        } else {
-@@ -1239,7 +1243,7 @@ static void
+@@ -1239,7 +1242,7 @@ static void
  minstrel_ht_set_rate(struct minstrel_priv *mp, struct minstrel_ht_sta *mi,
                       struct ieee80211_sta_rates *ratetbl, int offset, int index)
  {
@@ -268,7 +271,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        const struct mcs_group *group = &minstrel_mcs_groups[group_idx];
        struct minstrel_rate_stats *mrs;
        u8 idx;
-@@ -1259,7 +1263,7 @@ minstrel_ht_set_rate(struct minstrel_pri
+@@ -1259,7 +1262,7 @@ minstrel_ht_set_rate(struct minstrel_pri
                ratetbl->rate[offset].count_rts = mrs->retry_count_rtscts;
        }
  
@@ -277,7 +280,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        if (group_idx == MINSTREL_CCK_GROUP)
                idx = mp->cck_rates[index % ARRAY_SIZE(mp->cck_rates)];
        else if (group_idx == MINSTREL_OFDM_GROUP)
-@@ -1289,17 +1293,17 @@ minstrel_ht_set_rate(struct minstrel_pri
+@@ -1289,17 +1292,17 @@ minstrel_ht_set_rate(struct minstrel_pri
  static inline int
  minstrel_ht_get_prob_avg(struct minstrel_ht_sta *mi, int rate)
  {
@@ -299,7 +302,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        unsigned int duration;
  
        /* Disable A-MSDU if max_prob_rate is bad */
-@@ -1405,7 +1409,7 @@ minstrel_get_sample_rate(struct minstrel
+@@ -1405,7 +1408,7 @@ minstrel_get_sample_rate(struct minstrel
                return -1;
  
        mrs = &mg->rates[sample_idx];
@@ -308,7 +311,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        tp_rate1 = mi->max_tp_rate[0];
  
-@@ -1455,8 +1459,7 @@ minstrel_get_sample_rate(struct minstrel
+@@ -1455,8 +1458,7 @@ minstrel_get_sample_rate(struct minstrel
         * if the link is working perfectly.
         */
  
@@ -318,7 +321,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        if (sample_dur >= minstrel_get_duration(tp_rate2) &&
            (cur_max_tp_streams - 1 <
             minstrel_mcs_groups[sample_group].streams ||
-@@ -1484,7 +1487,7 @@ minstrel_ht_get_rate(void *priv, struct
+@@ -1484,7 +1486,7 @@ minstrel_ht_get_rate(void *priv, struct
        int sample_idx;
  
        if (!(info->flags & IEEE80211_TX_CTL_AMPDU) &&
@@ -327,7 +330,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                minstrel_aggr_check(sta, txrc->skb);
  
        info->flags |= mi->tx_flags;
-@@ -1512,8 +1515,8 @@ minstrel_ht_get_rate(void *priv, struct
+@@ -1512,8 +1514,8 @@ minstrel_ht_get_rate(void *priv, struct
        if (sample_idx < 0)
                return;
  
@@ -338,7 +341,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        if (sample_group == &minstrel_mcs_groups[MINSTREL_CCK_GROUP] &&
            (sample_idx >= 4) != txrc->short_preamble)
-@@ -1529,7 +1532,7 @@ minstrel_ht_get_rate(void *priv, struct
+@@ -1529,7 +1531,7 @@ minstrel_ht_get_rate(void *priv, struct
                int idx = sample_idx % ARRAY_SIZE(mp->ofdm_rates[0]);
                rate->idx = mp->ofdm_rates[mi->band][idx];
        } else if (sample_group->flags & IEEE80211_TX_RC_VHT_MCS) {
@@ -347,7 +350,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                                       sample_group->streams);
        } else {
                rate->idx = sample_idx + (sample_group->streams - 1) * 8;
-@@ -1898,8 +1901,8 @@ static u32 minstrel_ht_get_expected_thro
+@@ -1898,8 +1900,8 @@ static u32 minstrel_ht_get_expected_thro
        struct minstrel_ht_sta *mi = priv_sta;
        int i, j, prob, tp_avg;
  
index a1cdf99e05bbd9e117251402c208078b0f7e4aa0..dce8104934f46fcb09ea1972de829ca0ea39abb0 100644 (file)
@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/net/mac80211/rc80211_minstrel_ht.c
 +++ b/net/mac80211/rc80211_minstrel_ht.c
-@@ -1093,6 +1093,16 @@ minstrel_ht_tx_status(void *priv, struct
+@@ -1092,6 +1092,16 @@ minstrel_ht_tx_status(void *priv, struct
                info->status.ampdu_len = 1;
        }
  
@@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        mi->ampdu_packets++;
        mi->ampdu_len += info->status.ampdu_len;
  
-@@ -1104,9 +1114,6 @@ minstrel_ht_tx_status(void *priv, struct
+@@ -1103,9 +1113,6 @@ minstrel_ht_tx_status(void *priv, struct
                mi->sample_count--;
        }
  
@@ -37,7 +37,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        if (mi->sample_mode != MINSTREL_SAMPLE_IDLE)
                rate_sample = minstrel_get_ratestats(mi, mi->sample_rate);
  
-@@ -1504,14 +1511,6 @@ minstrel_ht_get_rate(void *priv, struct
+@@ -1503,14 +1510,6 @@ minstrel_ht_get_rate(void *priv, struct
        else
                sample_idx = minstrel_get_sample_rate(mp, mi);
  
index 4b0ba3dbe52a7657eb564851c25c4b8b528a0015..dc6f11e4b941d2ce2af472eb6fc23236b991b3a4 100644 (file)
@@ -37,8 +37,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 -      mi->sample_slow = 0;
        mi->sample_count = 0;
  
-       memset(tmp_mcs_tp_rate, 0, sizeof(tmp_mcs_tp_rate));
-@@ -883,6 +879,7 @@ minstrel_ht_update_stats(struct minstrel
+       if (mi->supported[MINSTREL_CCK_GROUP])
+@@ -882,6 +878,7 @@ minstrel_ht_update_stats(struct minstrel
        /* Find best rate sets within all MCS groups*/
        for (group = 0; group < ARRAY_SIZE(minstrel_mcs_groups); group++) {
                u16 *tp_rate = tmp_mcs_tp_rate;
@@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
                mg = &mi->groups[group];
                if (!mi->supported[group])
-@@ -897,7 +894,7 @@ minstrel_ht_update_stats(struct minstrel
+@@ -896,7 +893,7 @@ minstrel_ht_update_stats(struct minstrel
                if (group == MINSTREL_CCK_GROUP && ht_supported)
                        tp_rate = tmp_legacy_tp_rate;
  
@@ -55,7 +55,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                        if (!(mi->supported[group] & BIT(i)))
                                continue;
  
-@@ -906,6 +903,11 @@ minstrel_ht_update_stats(struct minstrel
+@@ -905,6 +902,11 @@ minstrel_ht_update_stats(struct minstrel
                        mrs = &mg->rates[i];
                        mrs->retry_updated = false;
                        minstrel_ht_calc_rate_stats(mp, mrs);
@@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                        cur_prob = mrs->prob_avg;
  
                        if (minstrel_ht_get_tp_avg(mi, group, i, cur_prob) == 0)
-@@ -1470,13 +1472,9 @@ minstrel_get_sample_rate(struct minstrel
+@@ -1469,13 +1471,9 @@ minstrel_get_sample_rate(struct minstrel
        if (sample_dur >= minstrel_get_duration(tp_rate2) &&
            (cur_max_tp_streams - 1 <
             minstrel_mcs_groups[sample_group].streams ||
index 6626804eb8e5f6c8861132b4408b0e3eda4be950..7af13661a8717732fffee759c637a04a58436052 100644 (file)
@@ -474,10 +474,10 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
 -      mi->sample_count = 0;
 -
-       memset(tmp_mcs_tp_rate, 0, sizeof(tmp_mcs_tp_rate));
-       memset(tmp_legacy_tp_rate, 0, sizeof(tmp_legacy_tp_rate));
-@@ -885,8 +1081,6 @@ minstrel_ht_update_stats(struct minstrel
+       if (mi->supported[MINSTREL_CCK_GROUP])
+               group = MINSTREL_CCK_GROUP;
+       else if (mi->supported[MINSTREL_OFDM_GROUP])
+@@ -884,8 +1080,6 @@ minstrel_ht_update_stats(struct minstrel
                if (!mi->supported[group])
                        continue;
  
@@ -486,7 +486,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                /* (re)Initialize group rate indexes */
                for(j = 0; j < MAX_THR_RATES; j++)
                        tmp_group_tp_rate[j] = MI_RATE(group, 0);
-@@ -953,9 +1147,7 @@ minstrel_ht_update_stats(struct minstrel
+@@ -952,9 +1146,7 @@ minstrel_ht_update_stats(struct minstrel
  
        /* Try to increase robustness of max_prob_rate*/
        minstrel_ht_prob_rate_reduce_streams(mi);
@@ -497,7 +497,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        if (sample)
                minstrel_ht_rate_sample_switch(mp, mi);
-@@ -972,6 +1164,7 @@ minstrel_ht_update_stats(struct minstrel
+@@ -971,6 +1163,7 @@ minstrel_ht_update_stats(struct minstrel
  
        /* Reset update timer */
        mi->last_stats_update = jiffies;
@@ -505,7 +505,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  }
  
  static bool
-@@ -1002,28 +1195,6 @@ minstrel_ht_txstat_valid(struct minstrel
+@@ -1001,28 +1194,6 @@ minstrel_ht_txstat_valid(struct minstrel
  }
  
  static void
@@ -534,7 +534,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  minstrel_downgrade_rate(struct minstrel_ht_sta *mi, u16 *idx, bool primary)
  {
        int group, orig_group;
-@@ -1108,14 +1279,6 @@ minstrel_ht_tx_status(void *priv, struct
+@@ -1107,14 +1278,6 @@ minstrel_ht_tx_status(void *priv, struct
        mi->ampdu_packets++;
        mi->ampdu_len += info->status.ampdu_len;
  
@@ -549,7 +549,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        if (mi->sample_mode != MINSTREL_SAMPLE_IDLE)
                rate_sample = minstrel_get_ratestats(mi, mi->sample_rate);
  
-@@ -1387,97 +1550,20 @@ minstrel_ht_update_rates(struct minstrel
+@@ -1386,97 +1549,20 @@ minstrel_ht_update_rates(struct minstrel
        rate_control_set_rates(mp->hw, mi->sta, rates);
  }
  
@@ -656,7 +656,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  }
  
  static void
-@@ -1489,7 +1575,7 @@ minstrel_ht_get_rate(void *priv, struct
+@@ -1488,7 +1574,7 @@ minstrel_ht_get_rate(void *priv, struct
        struct ieee80211_tx_rate *rate = &info->status.rates[0];
        struct minstrel_ht_sta *mi = priv_sta;
        struct minstrel_priv *mp = priv;
@@ -665,7 +665,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        if (!(info->flags & IEEE80211_TX_CTL_AMPDU) &&
            !minstrel_ht_is_legacy_group(MI_RATE_GROUP(mi->max_prob_rate)))
-@@ -1505,11 +1591,19 @@ minstrel_ht_get_rate(void *priv, struct
+@@ -1504,11 +1590,19 @@ minstrel_ht_get_rate(void *priv, struct
        /* Don't use EAPOL frames for sampling on non-mrr hw */
        if (mp->hw->max_rates == 1 &&
            (info->control.flags & IEEE80211_TX_CTRL_PORT_CTRL_PROTO))
@@ -689,7 +689,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                return;
  
        sample_group = &minstrel_mcs_groups[MI_RATE_GROUP(sample_idx)];
-@@ -1630,16 +1724,6 @@ minstrel_ht_update_caps(void *priv, stru
+@@ -1629,16 +1723,6 @@ minstrel_ht_update_caps(void *priv, stru
  
        mi->avg_ampdu_len = MINSTREL_FRAC(1, 1);
  
index 64bd59b852cac2f65d76a6a5e51f5019e947a07e..8170ff85f8aa4bd861677c5d2ac761001af68f7e 100644 (file)
@@ -70,7 +70,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        if (mi->ampdu_packets > 0) {
                if (!ieee80211_hw_check(mp->hw, TX_STATUS_NO_AMPDU_LEN))
                        mi->avg_ampdu_len = minstrel_ewma(mi->avg_ampdu_len,
-@@ -1149,16 +1115,12 @@ minstrel_ht_update_stats(struct minstrel
+@@ -1148,16 +1114,12 @@ minstrel_ht_update_stats(struct minstrel
        minstrel_ht_prob_rate_reduce_streams(mi);
        minstrel_ht_refill_sample_rates(mi);
  
@@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        }
  #endif
  
-@@ -1248,11 +1210,10 @@ minstrel_ht_tx_status(void *priv, struct
+@@ -1247,11 +1209,10 @@ minstrel_ht_tx_status(void *priv, struct
        struct ieee80211_tx_info *info = st->info;
        struct minstrel_ht_sta *mi = priv_sta;
        struct ieee80211_tx_rate *ar = info->status.rates;
@@ -100,7 +100,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        int i;
  
        /* This packet was aggregated but doesn't carry status info */
-@@ -1279,49 +1240,18 @@ minstrel_ht_tx_status(void *priv, struct
+@@ -1278,49 +1239,18 @@ minstrel_ht_tx_status(void *priv, struct
        mi->ampdu_packets++;
        mi->ampdu_len += info->status.ampdu_len;
  
@@ -150,7 +150,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        if (mp->hw->max_rates > 1) {
                /*
                 * check for sudden death of spatial multiplexing,
-@@ -1344,7 +1274,7 @@ minstrel_ht_tx_status(void *priv, struct
+@@ -1343,7 +1273,7 @@ minstrel_ht_tx_status(void *priv, struct
  
        if (time_after(jiffies, mi->last_stats_update + update_interval)) {
                update = true;
@@ -159,7 +159,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        }
  
        if (update)
-@@ -1523,18 +1453,14 @@ static void
+@@ -1522,18 +1452,14 @@ static void
  minstrel_ht_update_rates(struct minstrel_priv *mp, struct minstrel_ht_sta *mi)
  {
        struct ieee80211_sta_rates *rates;
@@ -179,7 +179,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        if (mp->hw->max_rates >= 3) {
                /* At least 3 tx rates supported, use max_tp_rate[1] next */
-@@ -1593,11 +1519,6 @@ minstrel_ht_get_rate(void *priv, struct
+@@ -1592,11 +1518,6 @@ minstrel_ht_get_rate(void *priv, struct
            (info->control.flags & IEEE80211_TX_CTRL_PORT_CTRL_PROTO))
                return;
  
@@ -191,7 +191,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        if (time_is_before_jiffies(mi->sample_time))
                return;
  
-@@ -1811,7 +1732,7 @@ minstrel_ht_update_caps(void *priv, stru
+@@ -1810,7 +1731,7 @@ minstrel_ht_update_caps(void *priv, stru
        minstrel_ht_update_ofdm(mp, mi, sband, sta);
  
        /* create an initial rate table with the lowest supported rates */
@@ -200,7 +200,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        minstrel_ht_update_rates(mp, mi);
  }
  
-@@ -1927,8 +1848,6 @@ minstrel_ht_alloc(struct ieee80211_hw *h
+@@ -1926,8 +1847,6 @@ minstrel_ht_alloc(struct ieee80211_hw *h
        if (!mp)
                return NULL;
  
@@ -209,7 +209,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        /* contention window settings
         * Just an approximation. Using the per-queue values would complicate
         * the calculations and is probably unnecessary */
-@@ -1948,7 +1867,7 @@ minstrel_ht_alloc(struct ieee80211_hw *h
+@@ -1947,7 +1866,7 @@ minstrel_ht_alloc(struct ieee80211_hw *h
                mp->has_mrr = true;
  
        mp->hw = hw;
@@ -218,7 +218,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        minstrel_ht_init_cck_rates(mp);
        for (i = 0; i < ARRAY_SIZE(mp->hw->wiphy->bands); i++)
-@@ -1966,8 +1885,6 @@ static void minstrel_ht_add_debugfs(stru
+@@ -1965,8 +1884,6 @@ static void minstrel_ht_add_debugfs(stru
        mp->fixed_rate_idx = (u32) -1;
        debugfs_create_u32("fixed_rate_idx", S_IRUGO | S_IWUGO, debugfsdir,
                           &mp->fixed_rate_idx);