aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/rc80211_minstrel_ht.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211/rc80211_minstrel_ht.c')
-rw-r--r--net/mac80211/rc80211_minstrel_ht.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/net/mac80211/rc80211_minstrel_ht.c b/net/mac80211/rc80211_minstrel_ht.c
index d2b264d1311d..a23a5cff0af5 100644
--- a/net/mac80211/rc80211_minstrel_ht.c
+++ b/net/mac80211/rc80211_minstrel_ht.c
@@ -244,6 +244,7 @@ minstrel_ht_update_stats(struct minstrel_priv *mp, struct minstrel_ht_sta *mi)
244 struct minstrel_rate_stats *mr; 244 struct minstrel_rate_stats *mr;
245 int cur_prob, cur_prob_tp, cur_tp, cur_tp2; 245 int cur_prob, cur_prob_tp, cur_tp, cur_tp2;
246 int group, i, index; 246 int group, i, index;
247 bool mi_rates_valid = false;
247 248
248 if (mi->ampdu_packets > 0) { 249 if (mi->ampdu_packets > 0) {
249 mi->avg_ampdu_len = minstrel_ewma(mi->avg_ampdu_len, 250 mi->avg_ampdu_len = minstrel_ewma(mi->avg_ampdu_len,
@@ -254,11 +255,10 @@ minstrel_ht_update_stats(struct minstrel_priv *mp, struct minstrel_ht_sta *mi)
254 255
255 mi->sample_slow = 0; 256 mi->sample_slow = 0;
256 mi->sample_count = 0; 257 mi->sample_count = 0;
257 mi->max_tp_rate = 0;
258 mi->max_tp_rate2 = 0;
259 mi->max_prob_rate = 0;
260 258
261 for (group = 0; group < ARRAY_SIZE(minstrel_mcs_groups); group++) { 259 for (group = 0; group < ARRAY_SIZE(minstrel_mcs_groups); group++) {
260 bool mg_rates_valid = false;
261
262 cur_prob = 0; 262 cur_prob = 0;
263 cur_prob_tp = 0; 263 cur_prob_tp = 0;
264 cur_tp = 0; 264 cur_tp = 0;
@@ -268,15 +268,24 @@ minstrel_ht_update_stats(struct minstrel_priv *mp, struct minstrel_ht_sta *mi)
268 if (!mg->supported) 268 if (!mg->supported)
269 continue; 269 continue;
270 270
271 mg->max_tp_rate = 0;
272 mg->max_tp_rate2 = 0;
273 mg->max_prob_rate = 0;
274 mi->sample_count++; 271 mi->sample_count++;
275 272
276 for (i = 0; i < MCS_GROUP_RATES; i++) { 273 for (i = 0; i < MCS_GROUP_RATES; i++) {
277 if (!(mg->supported & BIT(i))) 274 if (!(mg->supported & BIT(i)))
278 continue; 275 continue;
279 276
277 /* initialize rates selections starting indexes */
278 if (!mg_rates_valid) {
279 mg->max_tp_rate = mg->max_tp_rate2 =
280 mg->max_prob_rate = i;
281 if (!mi_rates_valid) {
282 mi->max_tp_rate = mi->max_tp_rate2 =
283 mi->max_prob_rate = i;
284 mi_rates_valid = true;
285 }
286 mg_rates_valid = true;
287 }
288
280 mr = &mg->rates[i]; 289 mr = &mg->rates[i];
281 mr->retry_updated = false; 290 mr->retry_updated = false;
282 index = MCS_GROUP_RATES * group + i; 291 index = MCS_GROUP_RATES * group + i;