Lines Matching full:rates
144 "Use only VHT rates when VHT is supported by sta.");
148 * To enable sufficiently targeted rate sampling, MCS rates are divided into
289 return &mi->groups[group].rates[idx]; in minstrel_ht_get_stats()
295 return &mi->groups[index / MCS_GROUP_RATES].rates[index % MCS_GROUP_RATES]; in minstrel_get_ratestats()
330 * Find & sort topmost throughput rates
332 * If multiple rates provide equal throughput the sorting is based on their
334 * MCS groups, CCK rates do not provide aggregation and are therefore at last.
346 cur_prob = mi->groups[cur_group].rates[cur_idx].prob_ewma; in minstrel_ht_sort_best_tp_rates()
352 tmp_prob = mi->groups[tmp_group].rates[tmp_idx].prob_ewma; in minstrel_ht_sort_best_tp_rates()
385 mrs = &mg->rates[index % MCS_GROUP_RATES]; in minstrel_ht_set_best_prob_rate()
389 tmp_prob = mi->groups[tmp_group].rates[tmp_idx].prob_ewma; in minstrel_ht_set_best_prob_rate()
393 * MCS_GROUP as well as CCK_GROUP rates do not allow aggregation */ in minstrel_ht_set_best_prob_rate()
401 max_gpr_prob = mi->groups[max_gpr_group].rates[max_gpr_idx].prob_ewma; in minstrel_ht_set_best_prob_rate()
424 * Assign new rate set per sta and use CCK rates only if the fastest
426 * rate sets where MCS and CCK rates are mixed, because CCK rates can
439 tmp_prob = mi->groups[tmp_group].rates[tmp_idx].prob_ewma; in minstrel_ht_assign_best_tp_rates()
444 tmp_prob = mi->groups[tmp_group].rates[tmp_idx].prob_ewma; in minstrel_ht_assign_best_tp_rates()
475 tmp_prob = mi->groups[group].rates[tmp_idx].prob_ewma; in minstrel_ht_prob_rate_reduce_streams()
488 * Update rate statistics and select new primary rates
494 * higher throughput rates, even if the probablity is a bit lower
540 mrs = &mg->rates[i]; in minstrel_ht_update_stats()
576 /* try to sample all available rates during each interval */ in minstrel_ht_update_stats()
687 struct ieee80211_tx_rate *ar = info->status.rates; in minstrel_ht_tx_status()
855 * - for fallback rates, to increase chances of getting through in minstrel_ht_set_rate()
873 return mi->groups[group].rates[rate].prob_ewma; in minstrel_ht_get_prob_ewma()
884 if (mi->groups[group].rates[rate].prob_ewma < MINSTREL_FRAC(50, 100)) in minstrel_ht_get_max_amsdu_len()
924 struct ieee80211_sta_rates *rates; in minstrel_ht_update_rates() local
927 rates = kzalloc(sizeof(*rates), GFP_ATOMIC); in minstrel_ht_update_rates()
928 if (!rates) in minstrel_ht_update_rates()
932 minstrel_ht_set_rate(mp, mi, rates, i++, mi->max_tp_rate[0]); in minstrel_ht_update_rates()
935 /* At least 3 tx rates supported, use max_tp_rate[1] next */ in minstrel_ht_update_rates()
936 minstrel_ht_set_rate(mp, mi, rates, i++, mi->max_tp_rate[1]); in minstrel_ht_update_rates()
941 * At least 2 tx rates supported, use max_prob_rate next */ in minstrel_ht_update_rates()
942 minstrel_ht_set_rate(mp, mi, rates, i++, mi->max_prob_rate); in minstrel_ht_update_rates()
946 rates->rate[i].idx = -1; in minstrel_ht_update_rates()
947 rate_control_set_rates(mp->hw, mi->sta, rates); in minstrel_ht_update_rates()
982 mrs = &mg->rates[sample_idx]; in minstrel_get_sample_rate()
1011 * Make sure that lower rates get sampled only occasionally, in minstrel_get_sample_rate()
1039 struct ieee80211_tx_rate *rate = &info->status.rates[0]; in minstrel_ht_get_rate()
1268 /* create an initial rate table with the lowest supported rates */ in minstrel_ht_update_caps()
1370 prob = mi->groups[i].rates[j].prob_ewma; in minstrel_ht_get_expected_throughput()