Lines Matching refs:link_sta

119 				    struct link_sta_info *link_sta)  in ieee80211_vht_cap_ie_to_sta_vht_cap()  argument
121 struct ieee80211_sta_vht_cap *vht_cap = &link_sta->pub->vht_cap; in ieee80211_vht_cap_ie_to_sta_vht_cap()
128 if (!link_sta->pub->ht_cap.ht_supported) in ieee80211_vht_cap_ie_to_sta_vht_cap()
165 !test_sta_flag(link_sta->sta, WLAN_STA_TDLS_PEER)) in ieee80211_vht_cap_ie_to_sta_vht_cap()
291 link_sta->sta->addr, link_sta->addr); in ieee80211_vht_cap_ie_to_sta_vht_cap()
299 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_160; in ieee80211_vht_cap_ie_to_sta_vht_cap()
302 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_80; in ieee80211_vht_cap_ie_to_sta_vht_cap()
314 link_sta->cur_max_bandwidth = in ieee80211_vht_cap_ie_to_sta_vht_cap()
318 link_sta->pub->bandwidth = ieee80211_sta_cur_vht_bw(link_sta); in ieee80211_vht_cap_ie_to_sta_vht_cap()
326 link_sta->pub->agg.max_amsdu_len = IEEE80211_MAX_MPDU_LEN_VHT_11454; in ieee80211_vht_cap_ie_to_sta_vht_cap()
329 link_sta->pub->agg.max_amsdu_len = IEEE80211_MAX_MPDU_LEN_VHT_7991; in ieee80211_vht_cap_ie_to_sta_vht_cap()
333 link_sta->pub->agg.max_amsdu_len = IEEE80211_MAX_MPDU_LEN_VHT_3895; in ieee80211_vht_cap_ie_to_sta_vht_cap()
337 ieee80211_sta_recalc_aggregates(&link_sta->sta->sta); in ieee80211_vht_cap_ie_to_sta_vht_cap()
342 ieee80211_sta_cap_rx_bw(struct link_sta_info *link_sta) in ieee80211_sta_cap_rx_bw() argument
344 unsigned int link_id = link_sta->link_id; in ieee80211_sta_cap_rx_bw()
345 struct ieee80211_sub_if_data *sdata = link_sta->sta->sdata; in ieee80211_sta_cap_rx_bw()
346 struct ieee80211_sta_vht_cap *vht_cap = &link_sta->pub->vht_cap; in ieee80211_sta_cap_rx_bw()
347 struct ieee80211_sta_he_cap *he_cap = &link_sta->pub->he_cap; in ieee80211_sta_cap_rx_bw()
348 struct ieee80211_sta_eht_cap *eht_cap = &link_sta->pub->eht_cap; in ieee80211_sta_cap_rx_bw()
393 return link_sta->pub->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40 ? in ieee80211_sta_cap_rx_bw()
415 ieee80211_sta_cap_chan_bw(struct link_sta_info *link_sta) in ieee80211_sta_cap_chan_bw() argument
417 struct ieee80211_sta_vht_cap *vht_cap = &link_sta->pub->vht_cap; in ieee80211_sta_cap_chan_bw()
421 if (!link_sta->pub->ht_cap.ht_supported) in ieee80211_sta_cap_chan_bw()
424 return link_sta->pub->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40 ? in ieee80211_sta_cap_chan_bw()
439 ieee80211_sta_rx_bw_to_chan_width(struct link_sta_info *link_sta) in ieee80211_sta_rx_bw_to_chan_width() argument
442 link_sta->pub->bandwidth; in ieee80211_sta_rx_bw_to_chan_width()
444 &link_sta->pub->vht_cap; in ieee80211_sta_rx_bw_to_chan_width()
449 if (!link_sta->pub->ht_cap.ht_supported) in ieee80211_sta_rx_bw_to_chan_width()
494 ieee80211_sta_cur_vht_bw(struct link_sta_info *link_sta) in ieee80211_sta_cur_vht_bw() argument
496 struct sta_info *sta = link_sta->sta; in ieee80211_sta_cur_vht_bw()
502 link_conf = rcu_dereference(sta->sdata->vif.link_conf[link_sta->link_id]); in ieee80211_sta_cur_vht_bw()
509 bw = ieee80211_sta_cap_rx_bw(link_sta); in ieee80211_sta_cur_vht_bw()
510 bw = min(bw, link_sta->cur_max_bandwidth); in ieee80211_sta_cur_vht_bw()
532 void ieee80211_sta_set_rx_nss(struct link_sta_info *link_sta) in ieee80211_sta_set_rx_nss() argument
538 if (link_sta->pub->rx_nss) in ieee80211_sta_set_rx_nss()
541 if (link_sta->pub->eht_cap.has_eht) { in ieee80211_sta_set_rx_nss()
543 const u8 *rx_nss_mcs = (void *)&link_sta->pub->eht_cap.eht_mcs_nss_supp; in ieee80211_sta_set_rx_nss()
552 if (link_sta->pub->he_cap.has_he) { in ieee80211_sta_set_rx_nss()
555 const struct ieee80211_sta_he_cap *he_cap = &link_sta->pub->he_cap; in ieee80211_sta_set_rx_nss()
586 if (link_sta->pub->ht_cap.ht_supported) { in ieee80211_sta_set_rx_nss()
587 if (link_sta->pub->ht_cap.mcs.rx_mask[0]) in ieee80211_sta_set_rx_nss()
589 if (link_sta->pub->ht_cap.mcs.rx_mask[1]) in ieee80211_sta_set_rx_nss()
591 if (link_sta->pub->ht_cap.mcs.rx_mask[2]) in ieee80211_sta_set_rx_nss()
593 if (link_sta->pub->ht_cap.mcs.rx_mask[3]) in ieee80211_sta_set_rx_nss()
598 if (link_sta->pub->vht_cap.vht_supported) { in ieee80211_sta_set_rx_nss()
602 rx_mcs_map = le16_to_cpu(link_sta->pub->vht_cap.vht_mcs.rx_mcs_map); in ieee80211_sta_set_rx_nss()
618 link_sta->pub->rx_nss = max_t(u8, 1, rx_nss); in ieee80211_sta_set_rx_nss()
622 struct link_sta_info *link_sta, in __ieee80211_vht_handle_opmode() argument
638 if (link_sta->pub->rx_nss != nss) { in __ieee80211_vht_handle_opmode()
639 link_sta->pub->rx_nss = nss; in __ieee80211_vht_handle_opmode()
648 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_20; in __ieee80211_vht_handle_opmode()
652 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_40; in __ieee80211_vht_handle_opmode()
656 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_160; in __ieee80211_vht_handle_opmode()
658 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_80; in __ieee80211_vht_handle_opmode()
662 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_160; in __ieee80211_vht_handle_opmode()
666 new_bw = ieee80211_sta_cur_vht_bw(link_sta); in __ieee80211_vht_handle_opmode()
667 if (new_bw != link_sta->pub->bandwidth) { in __ieee80211_vht_handle_opmode()
668 link_sta->pub->bandwidth = new_bw; in __ieee80211_vht_handle_opmode()
669 sta_opmode.bw = ieee80211_sta_rx_bw_to_chan_width(link_sta); in __ieee80211_vht_handle_opmode()
675 cfg80211_sta_opmode_change_notify(sdata->dev, link_sta->addr, in __ieee80211_vht_handle_opmode()
726 struct link_sta_info *link_sta, in ieee80211_vht_handle_opmode() argument
732 u32 changed = __ieee80211_vht_handle_opmode(sdata, link_sta, in ieee80211_vht_handle_opmode()
736 ieee80211_recalc_min_chandef(sdata, link_sta->link_id); in ieee80211_vht_handle_opmode()
737 rate_control_rate_update(local, sband, link_sta->sta, in ieee80211_vht_handle_opmode()
738 link_sta->link_id, changed); in ieee80211_vht_handle_opmode()