Lines Matching full:rates

320 		  "no overlap between basic rates (0x%x) and user mask (0x%x on band %d) - clearing the latter",  in ieee80211_check_rate_mask()
349 return; /* assume basic rates unknown and accept rate */ in rc_send_low_basicrate()
376 info->control.rates[0].flags |= IEEE80211_TX_RC_S1G_MCS; in __rate_control_send_low()
377 info->control.rates[0].idx = 0; in __rate_control_send_low()
385 info->control.rates[0].idx = 0; in __rate_control_send_low()
396 info->control.rates[0].idx = i; in __rate_control_send_low()
400 "no supported rates for sta %pM (0x%x, band %d) in rate_mask 0x%x with flags 0x%x\n", in __rate_control_send_low()
406 info->control.rates[0].count = in __rate_control_send_low()
430 info->control.rates[0].idx = mcast_rate - 1; in rate_control_send_low()
441 rc_send_low_basicrate(&info->control.rates[0], in rate_control_send_low()
557 /* handle VHT rates */ in rate_idx_match_mask()
574 /* also try the legacy rates. */ in rate_idx_match_mask()
581 /* handle HT rates */ in rate_idx_match_mask()
585 /* also try the legacy rates. */ in rate_idx_match_mask()
595 /* handle legacy rates */ in rate_idx_match_mask()
600 /* if HT BSS, and we handle a data frame, also try HT rates */ in rate_idx_match_mask()
628 * configure supported rates and TX rate mask in incompatible way, in rate_idx_match_mask()
637 struct ieee80211_tx_rate *rates, in rate_fixup_ratelist() argument
650 * XXX: Should this check all retry rates? in rate_fixup_ratelist()
652 if (!(rates[0].flags & in rate_fixup_ratelist()
657 rate = &sband->bitrates[rates[0].idx]; in rate_fixup_ratelist()
682 rates[i].idx = -1; in rate_fixup_ratelist()
685 if (rates[i].idx < 0) { in rate_fixup_ratelist()
694 if (rates[i].flags & IEEE80211_TX_RC_MCS) { in rate_fixup_ratelist()
695 WARN_ON(rates[i].idx > 76); in rate_fixup_ratelist()
697 if (!(rates[i].flags & IEEE80211_TX_RC_USE_RTS_CTS) && in rate_fixup_ratelist()
699 rates[i].flags |= in rate_fixup_ratelist()
704 if (rates[i].flags & IEEE80211_TX_RC_VHT_MCS) { in rate_fixup_ratelist()
705 WARN_ON(ieee80211_rate_get_vht_mcs(&rates[i]) > 9); in rate_fixup_ratelist()
711 rates[i].flags |= IEEE80211_TX_RC_USE_RTS_CTS; in rate_fixup_ratelist()
716 if (WARN_ON_ONCE(rates[i].idx >= sband->n_bitrates)) { in rate_fixup_ratelist()
717 rates[i].idx = -1; in rate_fixup_ratelist()
721 rate = &sband->bitrates[rates[i].idx]; in rate_fixup_ratelist()
726 rates[i].flags |= IEEE80211_TX_RC_USE_SHORT_PREAMBLE; in rate_fixup_ratelist()
729 if (!(rates[i].flags & IEEE80211_TX_RC_USE_RTS_CTS) && in rate_fixup_ratelist()
732 rates[i].flags |= IEEE80211_TX_RC_USE_CTS_PROTECT; in rate_fixup_ratelist()
739 struct ieee80211_tx_rate *rates, in rate_control_fill_sta_table() argument
746 ratetbl = rcu_dereference(sta->rates); in rate_control_fill_sta_table()
751 if (i < ARRAY_SIZE(info->control.rates) && in rate_control_fill_sta_table()
752 info->control.rates[i].idx >= 0 && in rate_control_fill_sta_table()
753 info->control.rates[i].count) { in rate_control_fill_sta_table()
754 if (rates != info->control.rates) in rate_control_fill_sta_table()
755 rates[i] = info->control.rates[i]; in rate_control_fill_sta_table()
757 rates[i].idx = ratetbl->rate[i].idx; in rate_control_fill_sta_table()
758 rates[i].flags = ratetbl->rate[i].flags; in rate_control_fill_sta_table()
760 rates[i].count = ratetbl->rate[i].count_rts; in rate_control_fill_sta_table()
762 rates[i].count = ratetbl->rate[i].count_cts; in rate_control_fill_sta_table()
764 rates[i].count = ratetbl->rate[i].count; in rate_control_fill_sta_table()
766 rates[i].idx = -1; in rate_control_fill_sta_table()
767 rates[i].count = 0; in rate_control_fill_sta_table()
770 if (rates[i].idx < 0 || !rates[i].count) in rate_control_fill_sta_table()
811 /* Filter out rates that the STA does not support */ in rate_control_cap_mask()
828 struct ieee80211_sta_rates *rates) in rate_control_apply_mask_ratetbl() argument
842 if (rates->rate[i].idx < 0) in rate_control_apply_mask_ratetbl()
845 rate_idx_match_mask(&rates->rate[i].idx, &rates->rate[i].flags, in rate_control_apply_mask_ratetbl()
854 struct ieee80211_tx_rate *rates, in rate_control_apply_mask() argument
865 * default mask (allow all rates) is used to save some processing for in rate_control_apply_mask()
879 /* Skip invalid rates */ in rate_control_apply_mask()
880 if (rates[i].idx < 0) in rate_control_apply_mask()
883 rate_flags = rates[i].flags; in rate_control_apply_mask()
884 rate_idx_match_mask(&rates[i].idx, &rate_flags, sband, in rate_control_apply_mask()
886 rates[i].flags = rate_flags; in rate_control_apply_mask()
935 info->control.rates[i].idx = -1; in rate_control_get_rate()
936 info->control.rates[i].flags = 0; in rate_control_get_rate()
937 info->control.rates[i].count = 0; in rate_control_get_rate()
963 info->control.rates, in rate_control_get_rate()
964 ARRAY_SIZE(info->control.rates)); in rate_control_get_rate()
969 struct ieee80211_sta_rates *rates) in rate_control_set_rates() argument
978 rate_control_apply_mask_ratetbl(sta, sband, rates); in rate_control_set_rates()
985 old = rcu_dereference_protected(pubsta->rates, true); in rate_control_set_rates()
986 rcu_assign_pointer(pubsta->rates, rates); in rate_control_set_rates()