Lines Matching refs:rates
174 "Use only VHT rates when VHT is supported by sta.");
177 * To enable sufficiently targeted rate sampling, MCS rates are divided into
326 return &mi->groups[group].rates[idx];
332 return &mi->groups[index / MCS_GROUP_RATES].rates[index % MCS_GROUP_RATES];
377 * Find & sort topmost throughput rates
379 * If multiple rates provide equal throughput the sorting is based on their
381 * MCS groups, CCK rates do not provide aggregation and are therefore at last.
393 cur_prob = mi->groups[cur_group].rates[cur_idx].prob_avg;
399 tmp_prob = mi->groups[tmp_group].rates[tmp_idx].prob_avg;
432 mrs = &mg->rates[index % MCS_GROUP_RATES];
436 tmp_prob = mi->groups[tmp_group].rates[tmp_idx].prob_avg;
440 * MCS_GROUP as well as CCK_GROUP rates do not allow aggregation */
448 max_gpr_prob = mi->groups[max_gpr_group].rates[max_gpr_idx].prob_avg;
471 * Assign new rate set per sta and use CCK rates only if the fastest
473 * rate sets where MCS and CCK rates are mixed, because CCK rates can
486 tmp_prob = mi->groups[tmp_group].rates[tmp_idx].prob_avg;
491 tmp_prob = mi->groups[tmp_group].rates[tmp_idx].prob_avg;
522 tmp_prob = mi->groups[group].rates[tmp_idx].prob_avg;
559 minstrel_ht_find_probe_rates(struct minstrel_ht_sta *mi, u16 *rates, int *n_rates,
596 rates[(*n_rates)++] = idx;
607 u16 rates[MINSTREL_GROUPS_NB];
628 minstrel_ht_find_probe_rates(mi, rates, &n_rates, faster_rate);
630 minstrel_ht_find_probe_rates(mi, rates, &n_rates, false);
654 probe_rate = rates[i];
662 * Update rate statistics and select new primary rates
668 * higher throughput rates, even if the probablity is a bit lower
739 mrs = &mg->rates[i];
775 /* try to sample all available rates during each interval */
892 struct ieee80211_tx_rate *ar = info->status.rates;
1093 * - for fallback rates, to increase chances of getting through
1111 return mi->groups[group].rates[rate].prob_avg;
1123 if (mi->groups[group].rates[rate].prob_avg < MINSTREL_FRAC(50, 100))
1166 struct ieee80211_sta_rates *rates;
1173 rates = kzalloc(sizeof(*rates), GFP_ATOMIC);
1174 if (!rates)
1178 minstrel_ht_set_rate(mp, mi, rates, i++, first_rate);
1181 /* At least 3 tx rates supported, use max_tp_rate[1] next */
1182 minstrel_ht_set_rate(mp, mi, rates, i++, mi->max_tp_rate[1]);
1186 minstrel_ht_set_rate(mp, mi, rates, i++, mi->max_prob_rate);
1190 rates->rate[i].idx = -1;
1191 rate_control_set_rates(mp->hw, mi->sta, rates);
1224 mrs = &mg->rates[sample_idx];
1266 /* Skip already sampled slow rates */
1271 * Make sure that lower rates get sampled only occasionally,
1298 struct ieee80211_tx_rate *rate = &info->status.rates[0];
1528 /* create an initial rate table with the lowest supported rates */
1655 /* number of packets (in %) to use for sampling other rates
1715 prob = mi->groups[i].rates[j].prob_avg;