123456789101112131415161718192021222324252627282930313233343536373839404142 |
- From: Felix Fietkau <[email protected]>
- Date: Wed, 5 Jun 2019 20:42:49 +0200
- Subject: [PATCH] mac80211: minstrel_ht: reduce unnecessary rate probing
- attempts
- On hardware with static fallback tables (e.g. mt76x2), rate probing attempts
- can be very expensive.
- On such devices, avoid sampling rates slower than the per-group max throughput
- rate, based on the assumption that the fallback table will take care of probing
- lower rates within that group if the higher rates fail.
- To make this work, this also fixes a wrong initialization in the previously
- unused per-group sorted rate array.
- To further reduce unnecessary probing attempts, skip duplicate attempts on
- rates slower than the max throughput rate.
- Signed-off-by: Felix Fietkau <[email protected]>
- ---
- --- a/net/mac80211/rc80211_minstrel_ht.c
- +++ b/net/mac80211/rc80211_minstrel_ht.c
- @@ -1062,6 +1062,21 @@ minstrel_get_sample_rate(struct minstrel
- minstrel_get_duration(mi->max_prob_rate) * 3 < sample_dur)
- return -1;
-
- +
- + /*
- + * For devices with no configurable multi-rate retry, skip sampling
- + * below the per-group max throughput rate, and only use one sampling
- + * attempt per rate
- + */
- + if (mp->hw->max_rates == 1 &&
- + (minstrel_get_duration(mg->max_group_tp_rate[0]) < sample_dur ||
- + mrs->attempts))
- + return -1;
- +
- + /* Skip already sampled slow rates */
- + if (sample_dur >= minstrel_get_duration(tp_rate1) && mrs->attempts)
- + return -1;
- +
- /*
- * Make sure that lower rates get sampled only occasionally,
- * if the link is working perfectly.
|