Lines Matching refs:sta

21 #include "sta.h"
116 struct ieee80211_sta *sta,
128 static bool rs_ant_allow(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
135 static bool rs_mimo_allow(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
139 if (!sta->deflink.ht_cap.ht_supported)
142 if (sta->deflink.smps_mode == IEEE80211_SMPS_STATIC)
148 if (!iwl_mvm_bt_coex_is_mimo_allowed(mvm, sta))
157 static bool rs_siso_allow(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
161 if (!sta->deflink.ht_cap.ht_supported)
167 static bool rs_sgi_allow(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
171 struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap;
172 struct ieee80211_sta_vht_cap *vht_cap = &sta->deflink.vht_cap;
376 struct ieee80211_sta *sta,
380 struct ieee80211_sta *sta,
561 struct ieee80211_sta *sta)
566 sta->addr, tid);
569 ret = ieee80211_start_tx_ba_session(sta, tid, 0);
578 ieee80211_stop_tx_ba_session(sta, tid);
585 struct ieee80211_sta *sta)
607 if (rs_tl_turn_on_agg_for_tid(mvm, lq_sta, tid, sta) == 0)
1164 struct ieee80211_sta *sta, void *priv_sta,
1171 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
1180 iwl_mvm_rs_tx_status(mvm, sta, rs_get_tid(hdr), info,
1372 static u32 rs_bw_from_sta_bw(struct ieee80211_sta *sta)
1374 struct ieee80211_sta_vht_cap *sta_vht_cap = &sta->deflink.vht_cap;
1380 switch (sta->deflink.bandwidth) {
1393 sta->deflink.rx_nss) < sta->deflink.rx_nss)
1489 static void rs_set_amsdu_len(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
1493 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
1497 sta->deflink.agg.max_amsdu_len =
1498 rs_fw_get_max_amsdu_len(sta, bss_conf, &sta->deflink);
1513 mvmsta->max_amsdu_len = sta->deflink.agg.max_amsdu_len;
1516 min_t(int, sta->deflink.agg.max_amsdu_len, 8500);
1518 sta->deflink.agg.max_rc_amsdu_len = mvmsta->max_amsdu_len;
1522 sta->deflink.agg.max_tid_amsdu_len[i] =
1523 iwl_mvm_max_amsdu_size(mvm, sta, i);
1529 sta->deflink.agg.max_tid_amsdu_len[i] = 1;
1537 struct ieee80211_sta *sta,
1541 rs_fill_lq_cmd(mvm, sta, lq_sta, &tbl->rate);
1546 struct ieee80211_sta *sta,
1551 if (rs_bw_from_sta_bw(sta) != RATE_MCS_CHAN_WIDTH_80)
1592 struct ieee80211_sta *sta,
1627 if (allow_func && !allow_func(mvm, sta, &tbl->rate,
1642 rs_bw_from_sta_bw(sta));
1676 struct ieee80211_sta *sta,
1713 rate->bw = rs_bw_from_sta_bw(sta);
1836 static bool rs_stbc_allow(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
1845 if (!iwl_mvm_bt_coex_is_mimo_allowed(mvm, sta))
1961 struct ieee80211_sta *sta,
1965 struct iwl_mvm_sta *mvm_sta = iwl_mvm_sta_from_mac80211(sta);
2053 struct ieee80211_sta *sta,
2074 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
2113 rs_update_rate_tbl(mvm, sta, lq_sta, tbl);
2226 !iwl_mvm_bt_coex_is_mimo_allowed(mvm, sta)) {
2259 update_lq = rs_tpc_perform(mvm, sta, lq_sta, tbl);
2270 rs_tweak_rate_tbl(mvm, sta, lq_sta, tbl, scale_action);
2271 rs_set_amsdu_len(mvm, sta, tbl, scale_action);
2272 rs_update_rate_tbl(mvm, sta, lq_sta, tbl);
2296 next_column = rs_get_next_column(mvm, lq_sta, sta, tbl);
2298 int ret = rs_switch_to_column(mvm, lq_sta, sta,
2319 rs_update_rate_tbl(mvm, sta, lq_sta, tbl);
2326 rs_tl_turn_on_agg(mvm, mvmsta, tid, lq_sta, sta);
2409 struct ieee80211_sta *sta,
2423 rate->bw = rs_bw_from_sta_bw(sta);
2424 rate->sgi = rs_sgi_allow(mvm, sta, rate, NULL);
2489 struct ieee80211_sta *sta,
2494 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
2545 if (sta->deflink.vht_cap.vht_supported &&
2551 * sta bandwidth might be wider than the phy context allows.
2557 RATE_MCS_CHAN_WIDTH_20 : rs_bw_from_sta_bw(sta);
2572 sta->deflink.bandwidth);
2579 } else if (sta->deflink.ht_cap.ht_supported &&
2640 struct ieee80211_sta *sta,
2648 if (!sta || !lq_sta)
2659 rs_get_initial_rate(mvm, sta, lq_sta, band, rate);
2660 rs_init_optimal_rate(mvm, sta, lq_sta);
2670 rs_fill_lq_cmd(mvm, sta, lq_sta, rate);
2675 static void rs_drv_get_rate(void *mvm_r, struct ieee80211_sta *sta,
2687 if (sta && !iwl_mvm_sta_from_mac80211(sta)->vif) {
2723 static void *rs_drv_alloc_sta(void *mvm_rate, struct ieee80211_sta *sta,
2726 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
2764 static void rs_vht_set_enabled_rates(struct ieee80211_sta *sta,
2778 sta->deflink.bandwidth == IEEE80211_STA_RX_BW_20)
2785 if (sta->deflink.rx_nss < 2)
2796 sta->deflink.bandwidth == IEEE80211_STA_RX_BW_20)
2805 struct ieee80211_sta *sta,
2836 struct ieee80211_sta *sta,
2840 rs_vht_set_enabled_rates(sta, vht_cap, lq_sta);
2927 static void rs_drv_rate_init(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
2932 struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap;
2933 struct ieee80211_sta_vht_cap *vht_cap = &sta->deflink.vht_cap;
2934 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
2948 mvmsta->max_amsdu_len = sta->cur->max_amsdu_len;
2969 supp = sta->deflink.supp_rates[sband->band];
2976 rs_ht_init(mvm, sta, lq_sta, ht_cap);
2978 rs_vht_init(mvm, sta, lq_sta, vht_cap);
3010 rs_initialize_lq(mvm, sta, lq_sta, band);
3016 struct ieee80211_sta *sta,
3020 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
3029 ieee80211_stop_tx_ba_session(sta, tid);
3031 iwl_mvm_rs_rate_init(mvm, mvmsta->vif, sta,
3032 &mvmsta->vif->bss_conf, &sta->deflink,
3037 struct ieee80211_sta *sta,
3052 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
3110 rs_drv_rate_init(mvm, sta, info->band);
3265 if (sta->deflink.supp_rates[info->band])
3266 rs_rate_scale_perform(mvm, sta, lq_sta, tid, ndp);
3269 void iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
3272 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
3280 __iwl_mvm_rs_tx_status(mvm, sta, tid, info, ndp);
3378 struct ieee80211_sta *sta,
3395 rs_stbc_allow(mvm, sta, lq_sta))
3453 struct ieee80211_sta *sta)
3456 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
3460 if (sta == data->exclude_sta)
3463 /* The current sta has BFER allowed */
3471 static int rs_bfer_priority(struct iwl_mvm_sta *sta)
3474 enum nl80211_iftype viftype = ieee80211_vif_type_p2p(sta->vif);
3489 sta->deflink.sta_id);
3511 struct ieee80211_sta *sta,
3516 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
3518 .exclude_sta = sta,
3524 if (!iwl_mvm_bt_coex_is_mimo_allowed(mvm, sta))
3559 IWL_DEBUG_RATE(mvm, "No sta with BFER allowed found. Allow\n");
3565 IWL_DEBUG_RATE(mvm, "Found existing sta %d with BFER activated\n",
3580 "Lower priority BFER sta found (%d). Switch BFER\n",
3588 struct ieee80211_sta *sta,
3608 if (WARN_ON_ONCE(!sta || !initial_rate))
3611 rs_build_rates_table(mvm, sta, lq_sta, initial_rate);
3614 rs_set_lq_ss_params(mvm, sta, lq_sta, initial_rate);
3616 mvmsta = iwl_mvm_sta_from_mac80211(sta);
3637 cpu_to_le16(iwl_mvm_coex_agg_time_limit(mvm, sta));
3651 static void rs_free_sta(void *mvm_r, struct ieee80211_sta *sta, void *mvm_sta)
4095 struct ieee80211_sta *sta, void *mvm_sta)
4118 struct ieee80211_sta *sta,
4124 iwl_mvm_rs_fw_rate_init(mvm, vif, sta, link_conf,
4127 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta);
4130 rs_drv_rate_init(mvm, sta, band);