Lines Matching full:rates

201 		 "Use only VHT rates when VHT is supported by sta.");
204 * To enable sufficiently targeted rate sampling, MCS rates are divided into
384 return &mi->groups[group].rates[idx]; in minstrel_ht_get_stats()
390 return &mi->groups[MI_RATE_GROUP(index)].rates[MI_RATE_IDX(index)]; in minstrel_get_ratestats()
462 * Find & sort topmost throughput rates
464 * If multiple rates provide equal throughput the sorting is based on their
466 * MCS groups, CCK rates do not provide aggregation and are therefore at last.
478 cur_prob = mi->groups[cur_group].rates[cur_idx].prob_avg; in minstrel_ht_sort_best_tp_rates()
484 tmp_prob = mi->groups[tmp_group].rates[tmp_idx].prob_avg; in minstrel_ht_sort_best_tp_rates()
518 mrs = &mg->rates[cur_idx]; in minstrel_ht_set_best_prob_rate()
522 tmp_prob = mi->groups[tmp_group].rates[tmp_idx].prob_avg; in minstrel_ht_set_best_prob_rate()
526 * MCS_GROUP as well as CCK_GROUP rates do not allow aggregation */ in minstrel_ht_set_best_prob_rate()
529 max_tp_prob = mi->groups[max_tp_group].rates[max_tp_idx].prob_avg; in minstrel_ht_set_best_prob_rate()
535 /* skip rates faster than max tp rate with lower prob */ in minstrel_ht_set_best_prob_rate()
542 max_gpr_prob = mi->groups[max_gpr_group].rates[max_gpr_idx].prob_avg; in minstrel_ht_set_best_prob_rate()
565 * Assign new rate set per sta and use CCK rates only if the fastest
567 * rate sets where MCS and CCK rates are mixed, because CCK rates can
580 tmp_prob = mi->groups[tmp_group].rates[tmp_idx].prob_avg; in minstrel_ht_assign_best_tp_rates()
585 tmp_prob = mi->groups[tmp_group].rates[tmp_idx].prob_avg; in minstrel_ht_assign_best_tp_rates()
619 tmp_prob = mi->groups[group].rates[tmp_idx].prob_avg; in minstrel_ht_prob_rate_reduce_streams()
635 u16 *rates = mi->sample[type].sample_rates; in __minstrel_ht_get_sample_rate() local
640 if (!rates[i]) in __minstrel_ht_get_sample_rate()
643 cur = rates[i]; in __minstrel_ht_get_sample_rate()
644 rates[i] = 0; in __minstrel_ht_get_sample_rate()
738 u16 *rates = mi->sample[type].sample_rates; in minstrel_ht_move_sample_rates() local
746 cur = rates[i]; in minstrel_ht_move_sample_rates()
766 rates[i] = 0; in minstrel_ht_move_sample_rates()
773 rates[j++] = cur; in minstrel_ht_move_sample_rates()
774 rates[i] = 0; in minstrel_ht_move_sample_rates()
801 * Incremental update rates:
862 * Jump rates:
863 * Sample random rates, use those that are faster than the highest
864 * currently selected rate. Rates between the fastest and the slowest
921 /* skip slow rates with high success probability */ in minstrel_ht_next_jump_rate()
946 u16 *rates; in minstrel_ht_refill_sample_rates() local
949 rates = mi->sample[MINSTREL_SAMPLE_TYPE_INC].sample_rates; in minstrel_ht_refill_sample_rates()
953 rates[i] = minstrel_ht_next_inc_rate(mi, tp_dur); in minstrel_ht_refill_sample_rates()
954 if (!rates[i]) in minstrel_ht_refill_sample_rates()
960 rates = mi->sample[MINSTREL_SAMPLE_TYPE_JUMP].sample_rates; in minstrel_ht_refill_sample_rates()
966 rates[i] = minstrel_ht_next_jump_rate(mi, fast_rate_dur, in minstrel_ht_refill_sample_rates()
968 if (!rates[i]) in minstrel_ht_refill_sample_rates()
981 * Update rate statistics and select new primary rates
987 * higher throughput rates, even if the probablity is a bit lower
1058 mrs = &mg->rates[i]; in minstrel_ht_update_stats()
1184 struct ieee80211_tx_rate *ar = info->status.rates; in minstrel_ht_tx_status()
1358 * - for fallback rates, to increase chances of getting through in minstrel_ht_set_rate()
1376 return mi->groups[group].rates[rate].prob_avg; in minstrel_ht_get_prob_avg()
1388 if (mi->groups[group].rates[rate].prob_avg < MINSTREL_FRAC(50, 100)) in minstrel_ht_get_max_amsdu_len()
1431 struct ieee80211_sta_rates *rates; in minstrel_ht_update_rates() local
1434 rates = kzalloc(sizeof(*rates), GFP_ATOMIC); in minstrel_ht_update_rates()
1435 if (!rates) in minstrel_ht_update_rates()
1439 minstrel_ht_set_rate(mp, mi, rates, i++, mi->max_tp_rate[0]); in minstrel_ht_update_rates()
1442 /* At least 3 tx rates supported, use max_tp_rate[1] next */ in minstrel_ht_update_rates()
1443 minstrel_ht_set_rate(mp, mi, rates, i++, mi->max_tp_rate[1]); in minstrel_ht_update_rates()
1447 minstrel_ht_set_rate(mp, mi, rates, i++, mi->max_prob_rate); in minstrel_ht_update_rates()
1451 rates->rate[i].idx = -1; in minstrel_ht_update_rates()
1452 rate_control_set_rates(mp->hw, mi->sta, rates); in minstrel_ht_update_rates()
1477 struct ieee80211_tx_rate *rate = &info->status.rates[0]; in minstrel_ht_get_rate()
1558 const u8 *rates; in minstrel_ht_update_ofdm() local
1564 rates = mp->ofdm_rates[sband->band]; in minstrel_ht_update_ofdm()
1566 if (rates[i] == 0xff || in minstrel_ht_update_ofdm()
1567 !rate_supported(sta, sband->band, rates[i])) in minstrel_ht_update_ofdm()
1706 /* create an initial rate table with the lowest supported rates */ in minstrel_ht_update_caps()
1876 prob = mi->groups[i].rates[j].prob_avg; in minstrel_ht_get_expected_throughput()