Lines Matching refs:sta
115 struct ieee80211_sta *sta,
127 static bool rs_ant_allow(struct iwl_mvm *mvm, struct ieee80211_sta *sta, in rs_ant_allow() argument
134 static bool rs_mimo_allow(struct iwl_mvm *mvm, struct ieee80211_sta *sta, in rs_mimo_allow() argument
138 if (!sta->deflink.ht_cap.ht_supported) in rs_mimo_allow()
141 if (sta->deflink.smps_mode == IEEE80211_SMPS_STATIC) in rs_mimo_allow()
147 if (!iwl_mvm_bt_coex_is_mimo_allowed(mvm, sta)) in rs_mimo_allow()
156 static bool rs_siso_allow(struct iwl_mvm *mvm, struct ieee80211_sta *sta, in rs_siso_allow() argument
160 if (!sta->deflink.ht_cap.ht_supported) in rs_siso_allow()
166 static bool rs_sgi_allow(struct iwl_mvm *mvm, struct ieee80211_sta *sta, in rs_sgi_allow() argument
170 struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap; in rs_sgi_allow()
171 struct ieee80211_sta_vht_cap *vht_cap = &sta->deflink.vht_cap; in rs_sgi_allow()
375 struct ieee80211_sta *sta,
379 struct ieee80211_sta *sta,
560 struct ieee80211_sta *sta) in rs_tl_turn_on_agg_for_tid() argument
565 sta->addr, tid); in rs_tl_turn_on_agg_for_tid()
568 ret = ieee80211_start_tx_ba_session(sta, tid, 0); in rs_tl_turn_on_agg_for_tid()
577 ieee80211_stop_tx_ba_session(sta, tid); in rs_tl_turn_on_agg_for_tid()
584 struct ieee80211_sta *sta) in rs_tl_turn_on_agg() argument
606 if (rs_tl_turn_on_agg_for_tid(mvm, lq_sta, tid, sta) == 0) in rs_tl_turn_on_agg()
1163 struct ieee80211_sta *sta, void *priv_sta, in rs_drv_mac80211_tx_status() argument
1170 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); in rs_drv_mac80211_tx_status()
1179 iwl_mvm_rs_tx_status(mvm, sta, rs_get_tid(hdr), info, in rs_drv_mac80211_tx_status()
1371 static u32 rs_bw_from_sta_bw(struct ieee80211_sta *sta) in rs_bw_from_sta_bw() argument
1373 struct ieee80211_sta_vht_cap *sta_vht_cap = &sta->deflink.vht_cap; in rs_bw_from_sta_bw()
1379 switch (sta->deflink.bandwidth) { in rs_bw_from_sta_bw()
1392 sta->deflink.rx_nss) < sta->deflink.rx_nss) in rs_bw_from_sta_bw()
1488 static void rs_set_amsdu_len(struct iwl_mvm *mvm, struct ieee80211_sta *sta, in rs_set_amsdu_len() argument
1492 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); in rs_set_amsdu_len()
1496 sta->deflink.agg.max_amsdu_len = in rs_set_amsdu_len()
1497 rs_fw_get_max_amsdu_len(sta, bss_conf, &sta->deflink); in rs_set_amsdu_len()
1512 mvmsta->max_amsdu_len = sta->deflink.agg.max_amsdu_len; in rs_set_amsdu_len()
1515 min_t(int, sta->deflink.agg.max_amsdu_len, 8500); in rs_set_amsdu_len()
1517 sta->deflink.agg.max_rc_amsdu_len = mvmsta->max_amsdu_len; in rs_set_amsdu_len()
1521 sta->deflink.agg.max_tid_amsdu_len[i] = in rs_set_amsdu_len()
1522 iwl_mvm_max_amsdu_size(mvm, sta, i); in rs_set_amsdu_len()
1528 sta->deflink.agg.max_tid_amsdu_len[i] = 1; in rs_set_amsdu_len()
1536 struct ieee80211_sta *sta, in rs_update_rate_tbl() argument
1540 rs_fill_lq_cmd(mvm, sta, lq_sta, &tbl->rate); in rs_update_rate_tbl()
1545 struct ieee80211_sta *sta, in rs_tweak_rate_tbl() argument
1550 if (rs_bw_from_sta_bw(sta) != RATE_MCS_CHAN_WIDTH_80) in rs_tweak_rate_tbl()
1591 struct ieee80211_sta *sta, in rs_get_next_column() argument
1626 if (allow_func && !allow_func(mvm, sta, &tbl->rate, in rs_get_next_column()
1641 rs_bw_from_sta_bw(sta)); in rs_get_next_column()
1675 struct ieee80211_sta *sta, in rs_switch_to_column() argument
1712 rate->bw = rs_bw_from_sta_bw(sta); in rs_switch_to_column()
1835 static bool rs_stbc_allow(struct iwl_mvm *mvm, struct ieee80211_sta *sta, in rs_stbc_allow() argument
1844 if (!iwl_mvm_bt_coex_is_mimo_allowed(mvm, sta)) in rs_stbc_allow()
1960 struct ieee80211_sta *sta, in rs_tpc_perform() argument
1964 struct iwl_mvm_sta *mvm_sta = iwl_mvm_sta_from_mac80211(sta); in rs_tpc_perform()
2052 struct ieee80211_sta *sta, in rs_rate_scale_perform() argument
2073 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); in rs_rate_scale_perform()
2112 rs_update_rate_tbl(mvm, sta, lq_sta, tbl); in rs_rate_scale_perform()
2225 !iwl_mvm_bt_coex_is_mimo_allowed(mvm, sta)) { in rs_rate_scale_perform()
2258 update_lq = rs_tpc_perform(mvm, sta, lq_sta, tbl); in rs_rate_scale_perform()
2269 rs_tweak_rate_tbl(mvm, sta, lq_sta, tbl, scale_action); in rs_rate_scale_perform()
2270 rs_set_amsdu_len(mvm, sta, tbl, scale_action); in rs_rate_scale_perform()
2271 rs_update_rate_tbl(mvm, sta, lq_sta, tbl); in rs_rate_scale_perform()
2295 next_column = rs_get_next_column(mvm, lq_sta, sta, tbl); in rs_rate_scale_perform()
2297 int ret = rs_switch_to_column(mvm, lq_sta, sta, in rs_rate_scale_perform()
2318 rs_update_rate_tbl(mvm, sta, lq_sta, tbl); in rs_rate_scale_perform()
2325 rs_tl_turn_on_agg(mvm, mvmsta, tid, lq_sta, sta); in rs_rate_scale_perform()
2408 struct ieee80211_sta *sta, in rs_init_optimal_rate() argument
2422 rate->bw = rs_bw_from_sta_bw(sta); in rs_init_optimal_rate()
2423 rate->sgi = rs_sgi_allow(mvm, sta, rate, NULL); in rs_init_optimal_rate()
2488 struct ieee80211_sta *sta, in rs_get_initial_rate() argument
2493 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); in rs_get_initial_rate()
2544 if (sta->deflink.vht_cap.vht_supported && in rs_get_initial_rate()
2556 RATE_MCS_CHAN_WIDTH_20 : rs_bw_from_sta_bw(sta); in rs_get_initial_rate()
2571 sta->deflink.bandwidth); in rs_get_initial_rate()
2578 } else if (sta->deflink.ht_cap.ht_supported && in rs_get_initial_rate()
2639 struct ieee80211_sta *sta, in rs_initialize_lq() argument
2647 if (!sta || !lq_sta) in rs_initialize_lq()
2658 rs_get_initial_rate(mvm, sta, lq_sta, band, rate); in rs_initialize_lq()
2659 rs_init_optimal_rate(mvm, sta, lq_sta); in rs_initialize_lq()
2669 rs_fill_lq_cmd(mvm, sta, lq_sta, rate); in rs_initialize_lq()
2674 static void rs_drv_get_rate(void *mvm_r, struct ieee80211_sta *sta, in rs_drv_get_rate() argument
2686 if (sta && !iwl_mvm_sta_from_mac80211(sta)->vif) { in rs_drv_get_rate()
2716 static void *rs_drv_alloc_sta(void *mvm_rate, struct ieee80211_sta *sta, in rs_drv_alloc_sta() argument
2719 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); in rs_drv_alloc_sta()
2757 static void rs_vht_set_enabled_rates(struct ieee80211_sta *sta, in rs_vht_set_enabled_rates() argument
2771 sta->deflink.bandwidth == IEEE80211_STA_RX_BW_20) in rs_vht_set_enabled_rates()
2778 if (sta->deflink.rx_nss < 2) in rs_vht_set_enabled_rates()
2789 sta->deflink.bandwidth == IEEE80211_STA_RX_BW_20) in rs_vht_set_enabled_rates()
2798 struct ieee80211_sta *sta, in rs_ht_init() argument
2829 struct ieee80211_sta *sta, in rs_vht_init() argument
2833 rs_vht_set_enabled_rates(sta, vht_cap, lq_sta); in rs_vht_init()
2920 static void rs_drv_rate_init(struct iwl_mvm *mvm, struct ieee80211_sta *sta, in rs_drv_rate_init() argument
2925 struct ieee80211_sta_ht_cap *ht_cap = &sta->deflink.ht_cap; in rs_drv_rate_init()
2926 struct ieee80211_sta_vht_cap *vht_cap = &sta->deflink.vht_cap; in rs_drv_rate_init()
2927 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); in rs_drv_rate_init()
2941 mvmsta->max_amsdu_len = sta->cur->max_amsdu_len; in rs_drv_rate_init()
2962 supp = sta->deflink.supp_rates[sband->band]; in rs_drv_rate_init()
2969 rs_ht_init(mvm, sta, lq_sta, ht_cap); in rs_drv_rate_init()
2971 rs_vht_init(mvm, sta, lq_sta, vht_cap); in rs_drv_rate_init()
3003 rs_initialize_lq(mvm, sta, lq_sta, band); in rs_drv_rate_init()
3009 struct ieee80211_sta *sta, in rs_drv_rate_update() argument
3013 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); in rs_drv_rate_update()
3022 ieee80211_stop_tx_ba_session(sta, tid); in rs_drv_rate_update()
3024 iwl_mvm_rs_rate_init(mvm, mvmsta->vif, sta, in rs_drv_rate_update()
3025 &mvmsta->vif->bss_conf, &sta->deflink, in rs_drv_rate_update()
3030 struct ieee80211_sta *sta, in __iwl_mvm_rs_tx_status() argument
3045 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); in __iwl_mvm_rs_tx_status()
3103 rs_drv_rate_init(mvm, sta, info->band); in __iwl_mvm_rs_tx_status()
3258 if (sta->deflink.supp_rates[info->band]) in __iwl_mvm_rs_tx_status()
3259 rs_rate_scale_perform(mvm, sta, lq_sta, tid, ndp); in __iwl_mvm_rs_tx_status()
3262 void iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, struct ieee80211_sta *sta, in iwl_mvm_rs_tx_status() argument
3265 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); in iwl_mvm_rs_tx_status()
3273 __iwl_mvm_rs_tx_status(mvm, sta, tid, info, ndp); in iwl_mvm_rs_tx_status()
3371 struct ieee80211_sta *sta, in rs_build_rates_table() argument
3388 rs_stbc_allow(mvm, sta, lq_sta)) in rs_build_rates_table()
3446 struct ieee80211_sta *sta) in rs_bfer_active_iter() argument
3449 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); in rs_bfer_active_iter()
3453 if (sta == data->exclude_sta) in rs_bfer_active_iter()
3464 static int rs_bfer_priority(struct iwl_mvm_sta *sta) in rs_bfer_priority() argument
3467 enum nl80211_iftype viftype = ieee80211_vif_type_p2p(sta->vif); in rs_bfer_priority()
3482 sta->deflink.sta_id); in rs_bfer_priority()
3504 struct ieee80211_sta *sta, in rs_set_lq_ss_params() argument
3509 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); in rs_set_lq_ss_params()
3511 .exclude_sta = sta, in rs_set_lq_ss_params()
3517 if (!iwl_mvm_bt_coex_is_mimo_allowed(mvm, sta)) in rs_set_lq_ss_params()
3581 struct ieee80211_sta *sta, in rs_fill_lq_cmd() argument
3601 if (WARN_ON_ONCE(!sta || !initial_rate)) in rs_fill_lq_cmd()
3604 rs_build_rates_table(mvm, sta, lq_sta, initial_rate); in rs_fill_lq_cmd()
3607 rs_set_lq_ss_params(mvm, sta, lq_sta, initial_rate); in rs_fill_lq_cmd()
3609 mvmsta = iwl_mvm_sta_from_mac80211(sta); in rs_fill_lq_cmd()
3630 cpu_to_le16(iwl_mvm_coex_agg_time_limit(mvm, sta)); in rs_fill_lq_cmd()
3644 static void rs_free_sta(void *mvm_r, struct ieee80211_sta *sta, void *mvm_sta) in rs_free_sta() argument
4089 struct ieee80211_sta *sta, void *mvm_sta) in rs_rate_init_ops() argument
4112 struct ieee80211_sta *sta, in iwl_mvm_rs_rate_init() argument
4118 iwl_mvm_rs_fw_rate_init(mvm, vif, sta, link_conf, in iwl_mvm_rs_rate_init()
4121 struct iwl_mvm_sta *mvmsta = iwl_mvm_sta_from_mac80211(sta); in iwl_mvm_rs_rate_init()
4124 rs_drv_rate_init(mvm, sta, band); in iwl_mvm_rs_rate_init()