Lines Matching refs:link_sta

120 				    struct link_sta_info *link_sta)
122 struct ieee80211_sta_vht_cap *vht_cap = &link_sta->pub->vht_cap;
130 if (!link_sta->pub->ht_cap.ht_supported)
167 !test_sta_flag(link_sta->sta, WLAN_STA_TDLS_PEER))
293 link_sta->sta->addr, link_sta->addr);
301 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_160;
304 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_80;
316 link_sta->cur_max_bandwidth =
320 link_sta->pub->bandwidth = ieee80211_sta_cur_vht_bw(link_sta);
338 link_sta->pub->agg.max_amsdu_len = IEEE80211_MAX_MPDU_LEN_VHT_11454;
341 link_sta->pub->agg.max_amsdu_len = IEEE80211_MAX_MPDU_LEN_VHT_7991;
345 link_sta->pub->agg.max_amsdu_len = IEEE80211_MAX_MPDU_LEN_VHT_3895;
349 ieee80211_sta_recalc_aggregates(&link_sta->sta->sta);
354 ieee80211_sta_cap_rx_bw(struct link_sta_info *link_sta)
356 unsigned int link_id = link_sta->link_id;
357 struct ieee80211_sub_if_data *sdata = link_sta->sta->sdata;
358 struct ieee80211_sta_vht_cap *vht_cap = &link_sta->pub->vht_cap;
359 struct ieee80211_sta_he_cap *he_cap = &link_sta->pub->he_cap;
360 struct ieee80211_sta_eht_cap *eht_cap = &link_sta->pub->eht_cap;
405 return link_sta->pub->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40 ?
427 ieee80211_sta_cap_chan_bw(struct link_sta_info *link_sta)
429 struct ieee80211_sta_vht_cap *vht_cap = &link_sta->pub->vht_cap;
433 if (!link_sta->pub->ht_cap.ht_supported)
436 return link_sta->pub->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40 ?
451 ieee80211_sta_rx_bw_to_chan_width(struct link_sta_info *link_sta)
454 link_sta->pub->bandwidth;
456 &link_sta->pub->vht_cap;
461 if (!link_sta->pub->ht_cap.ht_supported)
506 ieee80211_sta_cur_vht_bw(struct link_sta_info *link_sta)
508 struct sta_info *sta = link_sta->sta;
514 link_conf = rcu_dereference(sta->sdata->vif.link_conf[link_sta->link_id]);
521 bw = ieee80211_sta_cap_rx_bw(link_sta);
522 bw = min(bw, link_sta->cur_max_bandwidth);
544 void ieee80211_sta_set_rx_nss(struct link_sta_info *link_sta)
550 if (link_sta->pub->rx_nss)
553 if (link_sta->pub->eht_cap.has_eht) {
555 const u8 *rx_nss_mcs = (void *)&link_sta->pub->eht_cap.eht_mcs_nss_supp;
564 if (link_sta->pub->he_cap.has_he) {
567 const struct ieee80211_sta_he_cap *he_cap = &link_sta->pub->he_cap;
598 if (link_sta->pub->ht_cap.ht_supported) {
599 if (link_sta->pub->ht_cap.mcs.rx_mask[0])
601 if (link_sta->pub->ht_cap.mcs.rx_mask[1])
603 if (link_sta->pub->ht_cap.mcs.rx_mask[2])
605 if (link_sta->pub->ht_cap.mcs.rx_mask[3])
610 if (link_sta->pub->vht_cap.vht_supported) {
614 rx_mcs_map = le16_to_cpu(link_sta->pub->vht_cap.vht_mcs.rx_mcs_map);
630 link_sta->pub->rx_nss = max_t(u8, 1, rx_nss);
634 struct link_sta_info *link_sta,
650 if (link_sta->pub->rx_nss != nss) {
651 cur_nss = link_sta->pub->rx_nss;
655 link_sta->pub->rx_nss = 0;
656 ieee80211_sta_set_rx_nss(link_sta);
660 if (nss <= link_sta->pub->rx_nss) {
661 link_sta->pub->rx_nss = nss;
666 link_sta->pub->rx_nss = cur_nss;
668 link_sta->pub->addr, nss);
675 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_20;
679 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_40;
683 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_160;
685 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_80;
689 link_sta->cur_max_bandwidth = IEEE80211_STA_RX_BW_160;
693 new_bw = ieee80211_sta_cur_vht_bw(link_sta);
694 if (new_bw != link_sta->pub->bandwidth) {
695 link_sta->pub->bandwidth = new_bw;
696 sta_opmode.bw = ieee80211_sta_rx_bw_to_chan_width(link_sta);
702 cfg80211_sta_opmode_change_notify(sdata->dev, link_sta->addr,
753 struct link_sta_info *link_sta,
759 u32 changed = __ieee80211_vht_handle_opmode(sdata, link_sta,
763 ieee80211_recalc_min_chandef(sdata, link_sta->link_id);
764 rate_control_rate_update(local, sband, link_sta->sta,
765 link_sta->link_id, changed);