Lines Matching refs:link_sta
120 struct link_sta_info *link_sta) in ieee80211_vht_cap_ie_to_sta_vht_cap() argument
122 struct ieee80211_sta_vht_cap *vht_cap = &link_sta->pub->vht_cap; in ieee80211_vht_cap_ie_to_sta_vht_cap()
130 if (!link_sta->pub->ht_cap.ht_supported) in ieee80211_vht_cap_ie_to_sta_vht_cap()
167 !test_sta_flag(link_sta->sta, WLAN_STA_TDLS_PEER)) in ieee80211_vht_cap_ie_to_sta_vht_cap()
293 link_sta->sta->addr, link_sta->addr); in ieee80211_vht_cap_ie_to_sta_vht_cap()
301 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_160; in ieee80211_vht_cap_ie_to_sta_vht_cap()
304 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_80; in ieee80211_vht_cap_ie_to_sta_vht_cap()
316 link_sta->cur_max_bandwidth = in ieee80211_vht_cap_ie_to_sta_vht_cap()
320 link_sta->pub->bandwidth = ieee80211_sta_cur_vht_bw(link_sta); in ieee80211_vht_cap_ie_to_sta_vht_cap()
338 link_sta->pub->agg.max_amsdu_len = IEEE80211_MAX_MPDU_LEN_VHT_11454; in ieee80211_vht_cap_ie_to_sta_vht_cap()
341 link_sta->pub->agg.max_amsdu_len = IEEE80211_MAX_MPDU_LEN_VHT_7991; in ieee80211_vht_cap_ie_to_sta_vht_cap()
345 link_sta->pub->agg.max_amsdu_len = IEEE80211_MAX_MPDU_LEN_VHT_3895; in ieee80211_vht_cap_ie_to_sta_vht_cap()
349 ieee80211_sta_recalc_aggregates(&link_sta->sta->sta); in ieee80211_vht_cap_ie_to_sta_vht_cap()
354 _ieee80211_sta_cap_rx_bw(struct link_sta_info *link_sta, in _ieee80211_sta_cap_rx_bw() argument
357 unsigned int link_id = link_sta->link_id; in _ieee80211_sta_cap_rx_bw()
358 struct ieee80211_sub_if_data *sdata = link_sta->sta->sdata; in _ieee80211_sta_cap_rx_bw()
359 struct ieee80211_sta_vht_cap *vht_cap = &link_sta->pub->vht_cap; in _ieee80211_sta_cap_rx_bw()
360 struct ieee80211_sta_he_cap *he_cap = &link_sta->pub->he_cap; in _ieee80211_sta_cap_rx_bw()
361 struct ieee80211_sta_eht_cap *eht_cap = &link_sta->pub->eht_cap; in _ieee80211_sta_cap_rx_bw()
405 return link_sta->pub->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40 ? in _ieee80211_sta_cap_rx_bw()
427 ieee80211_sta_cap_chan_bw(struct link_sta_info *link_sta) in ieee80211_sta_cap_chan_bw() argument
429 struct ieee80211_sta_vht_cap *vht_cap = &link_sta->pub->vht_cap; in ieee80211_sta_cap_chan_bw()
433 if (!link_sta->pub->ht_cap.ht_supported) in ieee80211_sta_cap_chan_bw()
436 return link_sta->pub->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40 ? in ieee80211_sta_cap_chan_bw()
451 ieee80211_sta_rx_bw_to_chan_width(struct link_sta_info *link_sta) in ieee80211_sta_rx_bw_to_chan_width() argument
454 link_sta->pub->bandwidth; in ieee80211_sta_rx_bw_to_chan_width()
456 &link_sta->pub->vht_cap; in ieee80211_sta_rx_bw_to_chan_width()
461 if (!link_sta->pub->ht_cap.ht_supported) in ieee80211_sta_rx_bw_to_chan_width()
506 _ieee80211_sta_cur_vht_bw(struct link_sta_info *link_sta, in _ieee80211_sta_cur_vht_bw() argument
509 struct sta_info *sta = link_sta->sta; in _ieee80211_sta_cur_vht_bw()
519 link_conf = rcu_dereference(sta->sdata->vif.link_conf[link_sta->link_id]); in _ieee80211_sta_cur_vht_bw()
528 bw = _ieee80211_sta_cap_rx_bw(link_sta, chandef); in _ieee80211_sta_cur_vht_bw()
529 bw = min(bw, link_sta->cur_max_bandwidth); in _ieee80211_sta_cur_vht_bw()
551 void ieee80211_sta_init_nss(struct link_sta_info *link_sta) in ieee80211_sta_init_nss() argument
556 if (link_sta->pub->eht_cap.has_eht) { in ieee80211_sta_init_nss()
558 const u8 *rx_nss_mcs = (void *)&link_sta->pub->eht_cap.eht_mcs_nss_supp; in ieee80211_sta_init_nss()
567 if (link_sta->pub->he_cap.has_he) { in ieee80211_sta_init_nss()
570 const struct ieee80211_sta_he_cap *he_cap = &link_sta->pub->he_cap; in ieee80211_sta_init_nss()
601 if (link_sta->pub->ht_cap.ht_supported) { in ieee80211_sta_init_nss()
602 if (link_sta->pub->ht_cap.mcs.rx_mask[0]) in ieee80211_sta_init_nss()
604 if (link_sta->pub->ht_cap.mcs.rx_mask[1]) in ieee80211_sta_init_nss()
606 if (link_sta->pub->ht_cap.mcs.rx_mask[2]) in ieee80211_sta_init_nss()
608 if (link_sta->pub->ht_cap.mcs.rx_mask[3]) in ieee80211_sta_init_nss()
613 if (link_sta->pub->vht_cap.vht_supported) { in ieee80211_sta_init_nss()
617 rx_mcs_map = le16_to_cpu(link_sta->pub->vht_cap.vht_mcs.rx_mcs_map); in ieee80211_sta_init_nss()
634 link_sta->capa_nss = rx_nss; in ieee80211_sta_init_nss()
637 if (link_sta->op_mode_nss) in ieee80211_sta_init_nss()
638 link_sta->pub->rx_nss = in ieee80211_sta_init_nss()
639 min_t(u8, rx_nss, link_sta->op_mode_nss); in ieee80211_sta_init_nss()
641 link_sta->pub->rx_nss = rx_nss; in ieee80211_sta_init_nss()
645 struct link_sta_info *link_sta, in __ieee80211_vht_handle_opmode() argument
661 if (link_sta->op_mode_nss != nss) { in __ieee80211_vht_handle_opmode()
662 if (nss <= link_sta->capa_nss) { in __ieee80211_vht_handle_opmode()
663 link_sta->op_mode_nss = nss; in __ieee80211_vht_handle_opmode()
665 if (nss != link_sta->pub->rx_nss) { in __ieee80211_vht_handle_opmode()
666 link_sta->pub->rx_nss = nss; in __ieee80211_vht_handle_opmode()
668 sta_opmode.rx_nss = link_sta->pub->rx_nss; in __ieee80211_vht_handle_opmode()
673 link_sta->pub->addr, nss); in __ieee80211_vht_handle_opmode()
680 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_20; in __ieee80211_vht_handle_opmode()
684 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_40; in __ieee80211_vht_handle_opmode()
688 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_160; in __ieee80211_vht_handle_opmode()
690 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_80; in __ieee80211_vht_handle_opmode()
694 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_160; in __ieee80211_vht_handle_opmode()
698 new_bw = ieee80211_sta_cur_vht_bw(link_sta); in __ieee80211_vht_handle_opmode()
699 if (new_bw != link_sta->pub->bandwidth) { in __ieee80211_vht_handle_opmode()
700 link_sta->pub->bandwidth = new_bw; in __ieee80211_vht_handle_opmode()
701 sta_opmode.bw = ieee80211_sta_rx_bw_to_chan_width(link_sta); in __ieee80211_vht_handle_opmode()
707 cfg80211_sta_opmode_change_notify(sdata->dev, link_sta->addr, in __ieee80211_vht_handle_opmode()
758 struct link_sta_info *link_sta, in ieee80211_vht_handle_opmode() argument
764 u32 changed = __ieee80211_vht_handle_opmode(sdata, link_sta, in ieee80211_vht_handle_opmode()
768 ieee80211_recalc_min_chandef(sdata, link_sta->link_id); in ieee80211_vht_handle_opmode()
769 rate_control_rate_update(local, sband, link_sta->sta, in ieee80211_vht_handle_opmode()
770 link_sta->link_id, changed); in ieee80211_vht_handle_opmode()