Lines Matching refs:sta
119 struct sta_info *sta) in ieee80211_vht_cap_ie_to_sta_vht_cap() argument
121 struct ieee80211_sta_vht_cap *vht_cap = &sta->sta.vht_cap; in ieee80211_vht_cap_ie_to_sta_vht_cap()
128 if (!sta->sta.ht_cap.ht_supported) in ieee80211_vht_cap_ie_to_sta_vht_cap()
165 !test_sta_flag(sta, WLAN_STA_TDLS_PEER)) in ieee80211_vht_cap_ie_to_sta_vht_cap()
290 sta->addr); in ieee80211_vht_cap_ie_to_sta_vht_cap()
298 sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_160; in ieee80211_vht_cap_ie_to_sta_vht_cap()
301 sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_80; in ieee80211_vht_cap_ie_to_sta_vht_cap()
313 sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_160; in ieee80211_vht_cap_ie_to_sta_vht_cap()
316 sta->sta.bandwidth = ieee80211_sta_cur_vht_bw(sta); in ieee80211_vht_cap_ie_to_sta_vht_cap()
320 sta->sta.max_amsdu_len = IEEE80211_MAX_MPDU_LEN_VHT_11454; in ieee80211_vht_cap_ie_to_sta_vht_cap()
323 sta->sta.max_amsdu_len = IEEE80211_MAX_MPDU_LEN_VHT_7991; in ieee80211_vht_cap_ie_to_sta_vht_cap()
327 sta->sta.max_amsdu_len = IEEE80211_MAX_MPDU_LEN_VHT_3895; in ieee80211_vht_cap_ie_to_sta_vht_cap()
333 enum ieee80211_sta_rx_bandwidth ieee80211_sta_cap_rx_bw(struct sta_info *sta) in ieee80211_sta_cap_rx_bw() argument
335 struct ieee80211_sta_vht_cap *vht_cap = &sta->sta.vht_cap; in ieee80211_sta_cap_rx_bw()
336 struct ieee80211_sta_he_cap *he_cap = &sta->sta.he_cap; in ieee80211_sta_cap_rx_bw()
342 if (sta->sdata->vif.bss_conf.chandef.chan->band == in ieee80211_sta_cap_rx_bw()
360 return sta->sta.ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40 ? in ieee80211_sta_cap_rx_bw()
381 enum nl80211_chan_width ieee80211_sta_cap_chan_bw(struct sta_info *sta) in ieee80211_sta_cap_chan_bw() argument
383 struct ieee80211_sta_vht_cap *vht_cap = &sta->sta.vht_cap; in ieee80211_sta_cap_chan_bw()
387 if (!sta->sta.ht_cap.ht_supported) in ieee80211_sta_cap_chan_bw()
390 return sta->sta.ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40 ? in ieee80211_sta_cap_chan_bw()
405 ieee80211_sta_rx_bw_to_chan_width(struct sta_info *sta) in ieee80211_sta_rx_bw_to_chan_width() argument
407 enum ieee80211_sta_rx_bandwidth cur_bw = sta->sta.bandwidth; in ieee80211_sta_rx_bw_to_chan_width()
408 struct ieee80211_sta_vht_cap *vht_cap = &sta->sta.vht_cap; in ieee80211_sta_rx_bw_to_chan_width()
413 if (!sta->sta.ht_cap.ht_supported) in ieee80211_sta_rx_bw_to_chan_width()
455 enum ieee80211_sta_rx_bandwidth ieee80211_sta_cur_vht_bw(struct sta_info *sta) in ieee80211_sta_cur_vht_bw() argument
457 struct ieee80211_sub_if_data *sdata = sta->sdata; in ieee80211_sta_cur_vht_bw()
461 bw = ieee80211_sta_cap_rx_bw(sta); in ieee80211_sta_cur_vht_bw()
462 bw = min(bw, sta->cur_max_bandwidth); in ieee80211_sta_cur_vht_bw()
473 if (test_sta_flag(sta, WLAN_STA_TDLS_PEER) && in ieee80211_sta_cur_vht_bw()
474 test_sta_flag(sta, WLAN_STA_TDLS_WIDER_BW) && in ieee80211_sta_cur_vht_bw()
475 test_sta_flag(sta, WLAN_STA_AUTHORIZED) && in ieee80211_sta_cur_vht_bw()
476 sta->tdls_chandef.chan) in ieee80211_sta_cur_vht_bw()
477 bw = min(bw, ieee80211_chan_width_to_rx_bw(sta->tdls_chandef.width)); in ieee80211_sta_cur_vht_bw()
484 void ieee80211_sta_set_rx_nss(struct sta_info *sta) in ieee80211_sta_set_rx_nss() argument
490 if (sta->sta.rx_nss) in ieee80211_sta_set_rx_nss()
493 if (sta->sta.he_cap.has_he) { in ieee80211_sta_set_rx_nss()
496 const struct ieee80211_sta_he_cap *he_cap = &sta->sta.he_cap; in ieee80211_sta_set_rx_nss()
527 if (sta->sta.ht_cap.ht_supported) { in ieee80211_sta_set_rx_nss()
528 if (sta->sta.ht_cap.mcs.rx_mask[0]) in ieee80211_sta_set_rx_nss()
530 if (sta->sta.ht_cap.mcs.rx_mask[1]) in ieee80211_sta_set_rx_nss()
532 if (sta->sta.ht_cap.mcs.rx_mask[2]) in ieee80211_sta_set_rx_nss()
534 if (sta->sta.ht_cap.mcs.rx_mask[3]) in ieee80211_sta_set_rx_nss()
539 if (sta->sta.vht_cap.vht_supported) { in ieee80211_sta_set_rx_nss()
543 rx_mcs_map = le16_to_cpu(sta->sta.vht_cap.vht_mcs.rx_mcs_map); in ieee80211_sta_set_rx_nss()
558 sta->sta.rx_nss = max_t(u8, 1, rx_nss); in ieee80211_sta_set_rx_nss()
562 struct sta_info *sta, u8 opmode, in __ieee80211_vht_handle_opmode() argument
578 if (sta->sta.rx_nss != nss) { in __ieee80211_vht_handle_opmode()
579 sta->sta.rx_nss = nss; in __ieee80211_vht_handle_opmode()
588 sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_20; in __ieee80211_vht_handle_opmode()
592 sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_40; in __ieee80211_vht_handle_opmode()
596 sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_160; in __ieee80211_vht_handle_opmode()
598 sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_80; in __ieee80211_vht_handle_opmode()
602 sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_160; in __ieee80211_vht_handle_opmode()
606 new_bw = ieee80211_sta_cur_vht_bw(sta); in __ieee80211_vht_handle_opmode()
607 if (new_bw != sta->sta.bandwidth) { in __ieee80211_vht_handle_opmode()
608 sta->sta.bandwidth = new_bw; in __ieee80211_vht_handle_opmode()
609 sta_opmode.bw = ieee80211_sta_rx_bw_to_chan_width(sta); in __ieee80211_vht_handle_opmode()
615 cfg80211_sta_opmode_change_notify(sdata->dev, sta->addr, in __ieee80211_vht_handle_opmode()
659 struct sta_info *sta, u8 opmode, in ieee80211_vht_handle_opmode() argument
665 u32 changed = __ieee80211_vht_handle_opmode(sdata, sta, opmode, band); in ieee80211_vht_handle_opmode()
669 rate_control_rate_update(local, sband, sta, changed); in ieee80211_vht_handle_opmode()