Lines Matching refs:sta

316 	if (tx->sta)  in ieee80211_tx_h_check_assoc()
317 assoc = test_sta_flag(tx->sta, WLAN_STA_ASSOC); in ieee80211_tx_h_check_assoc()
351 struct sta_info *sta; in purge_old_ps_buffers() local
375 list_for_each_entry_rcu(sta, &local->sta_list, list) { in purge_old_ps_buffers()
379 skb = skb_dequeue(&sta->ps_tx_buf[ac]); in purge_old_ps_buffers()
380 total += skb_queue_len(&sta->ps_tx_buf[ac]); in purge_old_ps_buffers()
458 static int ieee80211_use_mfp(__le16 fc, struct sta_info *sta, in ieee80211_use_mfp() argument
464 if (sta == NULL || !test_sta_flag(sta, WLAN_STA_MFP)) in ieee80211_use_mfp()
476 struct sta_info *sta = tx->sta; in ieee80211_tx_h_unicast_ps_buf() local
481 if (unlikely(!sta)) in ieee80211_tx_h_unicast_ps_buf()
484 if (unlikely((test_sta_flag(sta, WLAN_STA_PS_STA) || in ieee80211_tx_h_unicast_ps_buf()
485 test_sta_flag(sta, WLAN_STA_PS_DRIVER) || in ieee80211_tx_h_unicast_ps_buf()
486 test_sta_flag(sta, WLAN_STA_PS_DELIVER)) && in ieee80211_tx_h_unicast_ps_buf()
496 ps_dbg(sta->sdata, "STA %pM aid %d: PS buffer for AC %d\n", in ieee80211_tx_h_unicast_ps_buf()
497 sta->sta.addr, sta->sta.aid, ac); in ieee80211_tx_h_unicast_ps_buf()
502 spin_lock(&sta->ps_lock); in ieee80211_tx_h_unicast_ps_buf()
508 if (!test_sta_flag(sta, WLAN_STA_PS_STA) && in ieee80211_tx_h_unicast_ps_buf()
509 !test_sta_flag(sta, WLAN_STA_PS_DRIVER) && in ieee80211_tx_h_unicast_ps_buf()
510 !test_sta_flag(sta, WLAN_STA_PS_DELIVER)) { in ieee80211_tx_h_unicast_ps_buf()
511 spin_unlock(&sta->ps_lock); in ieee80211_tx_h_unicast_ps_buf()
515 if (skb_queue_len(&sta->ps_tx_buf[ac]) >= STA_MAX_TX_BUFFER) { in ieee80211_tx_h_unicast_ps_buf()
516 struct sk_buff *old = skb_dequeue(&sta->ps_tx_buf[ac]); in ieee80211_tx_h_unicast_ps_buf()
519 sta->sta.addr, ac); in ieee80211_tx_h_unicast_ps_buf()
528 skb_queue_tail(&sta->ps_tx_buf[ac], tx->skb); in ieee80211_tx_h_unicast_ps_buf()
529 spin_unlock(&sta->ps_lock); in ieee80211_tx_h_unicast_ps_buf()
540 sta_info_recalc_tim(sta); in ieee80211_tx_h_unicast_ps_buf()
543 } else if (unlikely(test_sta_flag(sta, WLAN_STA_PS_STA))) { in ieee80211_tx_h_unicast_ps_buf()
546 sta->sta.addr); in ieee80211_tx_h_unicast_ps_buf()
636 if (tx->sta && in ieee80211_tx_h_select_key()
637 (key = rcu_dereference(tx->sta->ptk[tx->sta->ptk_idx]))) in ieee80211_tx_h_select_key()
664 !ieee80211_use_mfp(hdr->frame_control, tx->sta, in ieee80211_tx_h_select_key()
689 } else if (ieee80211_is_data_present(hdr->frame_control) && tx->sta && in ieee80211_tx_h_select_key()
690 test_sta_flag(tx->sta, WLAN_STA_USES_ENCRYPTION)) { in ieee80211_tx_h_select_key()
749 (tx->sta && test_sta_flag(tx->sta, WLAN_STA_SHORT_PREAMBLE)))) in ieee80211_tx_h_rate_ctrl()
758 if (tx->sta) in ieee80211_tx_h_rate_ctrl()
759 assoc = test_sta_flag(tx->sta, WLAN_STA_ASSOC); in ieee80211_tx_h_rate_ctrl()
766 !rate_usable_index_exists(sband, &tx->sta->sta), in ieee80211_tx_h_rate_ctrl()
779 rate_control_get_rate(tx->sdata, tx->sta, &txrc); in ieee80211_tx_h_rate_ctrl()
781 if (tx->sta && !info->control.skip_table) in ieee80211_tx_h_rate_ctrl()
782 ratetbl = rcu_dereference(tx->sta->sta.rates); in ieee80211_tx_h_rate_ctrl()
805 if (tx->sta && ieee80211_is_tx_data(tx->skb)) in ieee80211_tx_h_rate_ctrl()
806 tx->sta->deflink.tx_stats.last_rate = txrc.reported_rate; in ieee80211_tx_h_rate_ctrl()
807 } else if (tx->sta) in ieee80211_tx_h_rate_ctrl()
808 tx->sta->deflink.tx_stats.last_rate = txrc.reported_rate; in ieee80211_tx_h_rate_ctrl()
823 static __le16 ieee80211_tx_next_seq(struct sta_info *sta, int tid) in ieee80211_tx_next_seq() argument
825 u16 *seq = &sta->tid_seq[tid]; in ieee80211_tx_next_seq()
884 if (tx->sta) in ieee80211_tx_h_sequence()
885 tx->sta->deflink.tx_stats.msdu[IEEE80211_NUM_TIDS]++; in ieee80211_tx_h_sequence()
894 if (!tx->sta) in ieee80211_tx_h_sequence()
899 tx->sta->deflink.tx_stats.msdu[tid]++; in ieee80211_tx_h_sequence()
901 hdr->seq_ctrl = ieee80211_tx_next_seq(tx->sta, tid); in ieee80211_tx_h_sequence()
1047 if (!tx->sta) in ieee80211_tx_h_stats()
1052 tx->sta->deflink.tx_stats.bytes[ac] += skb->len; in ieee80211_tx_h_stats()
1055 tx->sta->deflink.tx_stats.packets[ac]++; in ieee80211_tx_h_stats()
1139 } else if (!tx->sta->sta.txq[tid]) { in ieee80211_tx_prep_agg()
1140 spin_lock(&tx->sta->lock); in ieee80211_tx_prep_agg()
1159 tid_tx = rcu_dereference_protected_tid_tx(tx->sta, tid); in ieee80211_tx_prep_agg()
1169 clear_sta_flag(tx->sta, WLAN_STA_SP); in ieee80211_tx_prep_agg()
1170 ps_dbg(tx->sta->sdata, in ieee80211_tx_prep_agg()
1172 tx->sta->sta.addr, tx->sta->sta.aid); in ieee80211_tx_prep_agg()
1181 spin_unlock(&tx->sta->lock); in ieee80211_tx_prep_agg()
1196 struct sta_info *sta, in ieee80211_aggr_check() argument
1205 if (!sta || !sta->sta.deflink.ht_cap.ht_supported || in ieee80211_aggr_check()
1206 !sta->sta.wme || skb_get_queue_mapping(skb) == IEEE80211_AC_VO || in ieee80211_aggr_check()
1211 if (likely(sta->ampdu_mlme.tid_tx[tid])) in ieee80211_aggr_check()
1214 ieee80211_start_tx_ba_session(&sta->sta, tid, 0); in ieee80211_aggr_check()
1225 struct sta_info *sta, struct sk_buff *skb) in ieee80211_tx_prepare() argument
1248 if (likely(sta)) { in ieee80211_tx_prepare()
1249 if (!IS_ERR(sta)) in ieee80211_tx_prepare()
1250 tx->sta = sta; in ieee80211_tx_prepare()
1253 tx->sta = rcu_dereference(sdata->u.vlan.sta); in ieee80211_tx_prepare()
1254 if (!tx->sta && sdata->wdev.use_4addr) in ieee80211_tx_prepare()
1257 tx->sta = sta_info_get_bss(sdata, hdr->addr1); in ieee80211_tx_prepare()
1259 if (!tx->sta && !is_multicast_ether_addr(hdr->addr1)) { in ieee80211_tx_prepare()
1260 tx->sta = sta_info_get(sdata, hdr->addr1); in ieee80211_tx_prepare()
1265 if (tx->sta && ieee80211_is_data_qos(hdr->frame_control) && in ieee80211_tx_prepare()
1272 tid_tx = rcu_dereference(tx->sta->ampdu_mlme.tid_tx[tid]); in ieee80211_tx_prepare()
1274 ieee80211_aggr_check(sdata, tx->sta, skb); in ieee80211_tx_prepare()
1275 tid_tx = rcu_dereference(tx->sta->ampdu_mlme.tid_tx[tid]); in ieee80211_tx_prepare()
1302 if (!tx->sta) in ieee80211_tx_prepare()
1304 else if (test_and_clear_sta_flag(tx->sta, WLAN_STA_CLEAR_PS_FILT)) { in ieee80211_tx_prepare()
1306 ieee80211_check_fast_xmit(tx->sta); in ieee80211_tx_prepare()
1316 struct sta_info *sta, in ieee80211_get_txq() argument
1332 sta && sta->uploaded) { in ieee80211_get_txq()
1337 txq = sta->sta.txq[IEEE80211_NUM_TIDS]; in ieee80211_get_txq()
1339 } else if (sta) { in ieee80211_get_txq()
1342 if (!sta->uploaded) in ieee80211_get_txq()
1345 txq = sta->sta.txq[tid]; in ieee80211_get_txq()
1422 if (txqi->txq.sta) { in fq_tin_dequeue_func()
1423 struct sta_info *sta = container_of(txqi->txq.sta, in fq_tin_dequeue_func() local
1424 struct sta_info, sta); in fq_tin_dequeue_func()
1425 cparams = &sta->cparams; in fq_tin_dequeue_func()
1520 struct sta_info *sta, in ieee80211_txq_init() argument
1531 if (!sta) { in ieee80211_txq_init()
1555 txqi->txq.sta = &sta->sta; in ieee80211_txq_init()
1557 sta->sta.txq[tid] = &txqi->txq; in ieee80211_txq_init()
1665 struct sta_info *sta, in ieee80211_queue_skb() argument
1680 txqi = ieee80211_get_txq(local, vif, sta, skb); in ieee80211_queue_skb()
1694 struct sta_info *sta, in ieee80211_tx_frags() argument
1756 control.sta = sta ? &sta->sta : NULL; in ieee80211_tx_frags()
1769 struct sk_buff_head *skbs, struct sta_info *sta, in __ieee80211_tx() argument
1784 if (sta && !sta->uploaded) in __ieee80211_tx()
1785 sta = NULL; in __ieee80211_tx()
1813 result = ieee80211_tx_frags(local, vif, sta, skbs, txpending); in __ieee80211_tx()
1916 int band, struct ieee80211_sta **sta) in ieee80211_tx_prepare_skb() argument
1933 if (sta) { in ieee80211_tx_prepare_skb()
1934 if (tx.sta) in ieee80211_tx_prepare_skb()
1935 *sta = &tx.sta->sta; in ieee80211_tx_prepare_skb()
1937 *sta = NULL; in ieee80211_tx_prepare_skb()
1956 struct sta_info *sta, struct sk_buff *skb, in ieee80211_tx() argument
1971 res_prepare = ieee80211_tx_prepare(sdata, &tx, sta, skb); in ieee80211_tx()
1989 if (ieee80211_queue_skb(local, sdata, tx.sta, tx.skb)) in ieee80211_tx()
1993 result = __ieee80211_tx(local, &tx.skbs, tx.sta, txpending); in ieee80211_tx()
2044 struct sta_info *sta, struct sk_buff *skb) in ieee80211_xmit() argument
2085 ieee80211_tx(sdata, sta, skb, false); in ieee80211_xmit()
2479 struct sta_info *sta; in ieee80211_lookup_ra_sta() local
2483 sta = rcu_dereference(sdata->u.vlan.sta); in ieee80211_lookup_ra_sta()
2484 if (sta) { in ieee80211_lookup_ra_sta()
2485 *sta_out = sta; in ieee80211_lookup_ra_sta()
2498 sta = sta_info_get_bss(sdata, skb->data); in ieee80211_lookup_ra_sta()
2508 sta = sta_info_get(sdata, skb->data); in ieee80211_lookup_ra_sta()
2509 if (sta && test_sta_flag(sta, WLAN_STA_TDLS_PEER)) { in ieee80211_lookup_ra_sta()
2510 if (test_sta_flag(sta, in ieee80211_lookup_ra_sta()
2512 *sta_out = sta; in ieee80211_lookup_ra_sta()
2529 sta = sta_info_get(sdata, sdata->vif.cfg.ap_addr); in ieee80211_lookup_ra_sta()
2530 if (!sta) in ieee80211_lookup_ra_sta()
2537 *sta_out = sta ?: ERR_PTR(-ENOENT); in ieee80211_lookup_ra_sta()
2601 struct sta_info *sta, u32 ctrl_flags, in ieee80211_build_hdr() argument
2623 if (IS_ERR(sta)) in ieee80211_build_hdr()
2624 sta = NULL; in ieee80211_build_hdr()
2645 memcpy(hdr.addr1, sta->sta.addr, ETH_ALEN); in ieee80211_build_hdr()
2650 authorized = test_sta_flag(sta, WLAN_STA_AUTHORIZED); in ieee80211_build_hdr()
2651 wme_sta = sta->sta.wme; in ieee80211_build_hdr()
2671 if (sdata->vif.valid_links && sta && !sta->sta.mlo) { in ieee80211_build_hdr()
2674 link_id = sta->deflink.link_id; in ieee80211_build_hdr()
2682 (sta && sta->sta.mlo)) { in ieee80211_build_hdr()
2776 tdls_peer = test_sta_flag(sta, WLAN_STA_TDLS_PEER); in ieee80211_build_hdr()
2836 if (sta) { in ieee80211_build_hdr()
2837 authorized = test_sta_flag(sta, WLAN_STA_AUTHORIZED); in ieee80211_build_hdr()
2838 wme_sta = sta->sta.wme; in ieee80211_build_hdr()
3015 void ieee80211_check_fast_xmit(struct sta_info *sta) in ieee80211_check_fast_xmit() argument
3018 struct ieee80211_local *local = sta->local; in ieee80211_check_fast_xmit()
3019 struct ieee80211_sub_if_data *sdata = sta->sdata; in ieee80211_check_fast_xmit()
3039 spin_lock_bh(&sta->lock); in ieee80211_check_fast_xmit()
3045 if (!test_sta_flag(sta, WLAN_STA_AUTHORIZED)) in ieee80211_check_fast_xmit()
3048 if (test_sta_flag(sta, WLAN_STA_PS_STA) || in ieee80211_check_fast_xmit()
3049 test_sta_flag(sta, WLAN_STA_PS_DRIVER) || in ieee80211_check_fast_xmit()
3050 test_sta_flag(sta, WLAN_STA_PS_DELIVER) || in ieee80211_check_fast_xmit()
3051 test_sta_flag(sta, WLAN_STA_CLEAR_PS_FILT)) in ieee80211_check_fast_xmit()
3088 if (test_sta_flag(sta, WLAN_STA_TDLS_PEER)) { in ieee80211_check_fast_xmit()
3121 memcpy(hdr->addr1, sta->sta.addr, ETH_ALEN); in ieee80211_check_fast_xmit()
3133 if (sta->sta.mlo || !sdata->vif.valid_links) { in ieee80211_check_fast_xmit()
3136 unsigned int link_id = sta->deflink.link_id; in ieee80211_check_fast_xmit()
3156 if (sta->sta.wme) { in ieee80211_check_fast_xmit()
3166 build.key = rcu_access_pointer(sta->ptk[sta->ptk_idx]); in ieee80211_check_fast_xmit()
3244 old = rcu_dereference_protected(sta->fast_tx, in ieee80211_check_fast_xmit()
3245 lockdep_is_held(&sta->lock)); in ieee80211_check_fast_xmit()
3246 rcu_assign_pointer(sta->fast_tx, fast_tx); in ieee80211_check_fast_xmit()
3249 spin_unlock_bh(&sta->lock); in ieee80211_check_fast_xmit()
3254 struct sta_info *sta; in ieee80211_check_fast_xmit_all() local
3257 list_for_each_entry_rcu(sta, &local->sta_list, list) in ieee80211_check_fast_xmit_all()
3258 ieee80211_check_fast_xmit(sta); in ieee80211_check_fast_xmit_all()
3265 struct sta_info *sta; in ieee80211_check_fast_xmit_iface() local
3269 list_for_each_entry_rcu(sta, &local->sta_list, list) { in ieee80211_check_fast_xmit_iface()
3270 if (sdata != sta->sdata && in ieee80211_check_fast_xmit_iface()
3271 (!sta->sdata->bss || sta->sdata->bss != sdata->bss)) in ieee80211_check_fast_xmit_iface()
3273 ieee80211_check_fast_xmit(sta); in ieee80211_check_fast_xmit_iface()
3279 void ieee80211_clear_fast_xmit(struct sta_info *sta) in ieee80211_clear_fast_xmit() argument
3283 spin_lock_bh(&sta->lock); in ieee80211_clear_fast_xmit()
3284 fast_tx = rcu_dereference_protected(sta->fast_tx, in ieee80211_clear_fast_xmit()
3285 lockdep_is_held(&sta->lock)); in ieee80211_clear_fast_xmit()
3286 RCU_INIT_POINTER(sta->fast_tx, NULL); in ieee80211_clear_fast_xmit()
3287 spin_unlock_bh(&sta->lock); in ieee80211_clear_fast_xmit()
3377 struct sta_info *sta, in ieee80211_amsdu_aggregate() argument
3386 struct ieee80211_txq *txq = sta->sta.txq[tid]; in ieee80211_amsdu_aggregate()
3390 u8 max_subframes = sta->sta.max_amsdu_subframes; in ieee80211_amsdu_aggregate()
3392 int max_amsdu_len = sta->sta.cur->max_amsdu_len; in ieee80211_amsdu_aggregate()
3418 if (sta->sta.cur->max_rc_amsdu_len) in ieee80211_amsdu_aggregate()
3420 sta->sta.cur->max_rc_amsdu_len); in ieee80211_amsdu_aggregate()
3422 if (sta->sta.cur->max_tid_amsdu_len[tid]) in ieee80211_amsdu_aggregate()
3424 sta->sta.cur->max_tid_amsdu_len[tid]); in ieee80211_amsdu_aggregate()
3523 struct sta_info *sta, u8 pn_offs, in ieee80211_xmit_fast_finish() argument
3543 hdr->seq_ctrl = ieee80211_tx_next_seq(sta, tid); in ieee80211_xmit_fast_finish()
3551 sta->deflink.tx_stats.msdu[tid] += in ieee80211_xmit_fast_finish()
3554 sta->deflink.tx_stats.msdu[tid]++; in ieee80211_xmit_fast_finish()
3561 sta->deflink.tx_stats.bytes[skb_get_queue_mapping(skb)] += skb->len; in ieee80211_xmit_fast_finish()
3562 sta->deflink.tx_stats.packets[skb_get_queue_mapping(skb)]++; in ieee80211_xmit_fast_finish()
3589 struct sta_info *sta, in ieee80211_xmit_fast() argument
3619 tid_tx = rcu_dereference(sta->ampdu_mlme.tid_tx[tid]); in ieee80211_xmit_fast()
3635 ieee80211_amsdu_aggregate(sdata, sta, fast_tx, skb)) in ieee80211_xmit_fast()
3682 tx.sta = sta; in ieee80211_xmit_fast()
3685 if (ieee80211_queue_skb(local, sdata, sta, skb)) in ieee80211_xmit_fast()
3689 r = ieee80211_xmit_fast_finish(sdata, sta, fast_tx->pn_offs, in ieee80211_xmit_fast()
3702 ieee80211_tx_frags(local, &sdata->vif, sta, &tx.skbs, false); in ieee80211_xmit_fast()
3763 if (txq->sta) { in ieee80211_tx_dequeue()
3764 tx.sta = container_of(txq->sta, struct sta_info, sta); in ieee80211_tx_dequeue()
3774 !test_sta_flag(tx.sta, WLAN_STA_AUTHORIZED) && in ieee80211_tx_dequeue()
3812 struct sta_info *sta = container_of(txq->sta, struct sta_info, in ieee80211_tx_dequeue() local
3813 sta); in ieee80211_tx_dequeue()
3820 r = ieee80211_xmit_fast_finish(sta->sdata, sta, pn_offs, in ieee80211_tx_dequeue()
3877 if (tx.sta && in ieee80211_tx_dequeue()
3882 airtime = ieee80211_calc_expected_tx_airtime(hw, vif, txq->sta, in ieee80211_tx_dequeue()
3886 ieee80211_sta_update_pending_airtime(local, tx.sta, in ieee80211_tx_dequeue()
3902 static inline s32 ieee80211_sta_deficit(struct sta_info *sta, u8 ac) in ieee80211_sta_deficit() argument
3904 struct airtime_info *air_info = &sta->airtime[ac]; in ieee80211_sta_deficit()
3912 struct sta_info *sta; in ieee80211_txq_set_active() local
3914 if (!txqi->txq.sta) in ieee80211_txq_set_active()
3917 sta = container_of(txqi->txq.sta, struct sta_info, sta); in ieee80211_txq_set_active()
3918 sta->airtime[txqi->txq.ac].last_active = (u32)jiffies; in ieee80211_txq_set_active()
3924 struct sta_info *sta; in ieee80211_txq_keep_active() local
3927 if (!txqi->txq.sta) in ieee80211_txq_keep_active()
3930 sta = container_of(txqi->txq.sta, struct sta_info, sta); in ieee80211_txq_keep_active()
3931 if (ieee80211_sta_deficit(sta, txqi->txq.ac) >= 0) in ieee80211_txq_keep_active()
3934 diff = (u32)jiffies - sta->airtime[txqi->txq.ac].last_active; in ieee80211_txq_keep_active()
3968 if (txqi->txq.sta) { in ieee80211_next_txq()
3969 struct sta_info *sta = container_of(txqi->txq.sta, in ieee80211_next_txq() local
3970 struct sta_info, sta); in ieee80211_next_txq()
3972 s32 deficit = ieee80211_sta_deficit(sta, txqi->txq.ac); in ieee80211_next_txq()
3978 sta->airtime[txqi->txq.ac].deficit += in ieee80211_next_txq()
3979 sta->airtime_weight; in ieee80211_next_txq()
4021 if (txqi->txq.sta && local->airtime_flags && has_queue && in __ieee80211_schedule_txq()
4042 struct sta_info *sta; in ieee80211_txq_airtime_check() local
4051 if (!txq->sta) in ieee80211_txq_airtime_check()
4057 sta = container_of(txq->sta, struct sta_info, sta); in ieee80211_txq_airtime_check()
4058 if (atomic_read(&sta->airtime[txq->ac].aql_tx_pending) < in ieee80211_txq_airtime_check()
4059 sta->airtime[txq->ac].aql_limit_low) in ieee80211_txq_airtime_check()
4064 atomic_read(&sta->airtime[txq->ac].aql_tx_pending) < in ieee80211_txq_airtime_check()
4065 sta->airtime[txq->ac].aql_limit_high) in ieee80211_txq_airtime_check()
4096 struct sta_info *sta; in ieee80211_txq_may_transmit() local
4101 if (!txqi->txq.sta) in ieee80211_txq_may_transmit()
4115 if (!iter->txq.sta) { in ieee80211_txq_may_transmit()
4120 sta = container_of(iter->txq.sta, struct sta_info, sta); in ieee80211_txq_may_transmit()
4121 if (ieee80211_sta_deficit(sta, ac) < 0) in ieee80211_txq_may_transmit()
4122 sta->airtime[ac].deficit += sta->airtime_weight; in ieee80211_txq_may_transmit()
4126 sta = container_of(txqi->txq.sta, struct sta_info, sta); in ieee80211_txq_may_transmit()
4127 if (sta->airtime[ac].deficit >= 0) in ieee80211_txq_may_transmit()
4130 sta->airtime[ac].deficit += sta->airtime_weight; in ieee80211_txq_may_transmit()
4170 struct sta_info *sta; in __ieee80211_subif_start_xmit() local
4181 if (ieee80211_lookup_ra_sta(sdata, skb, &sta)) in __ieee80211_subif_start_xmit()
4184 if (IS_ERR(sta)) in __ieee80211_subif_start_xmit()
4185 sta = NULL; in __ieee80211_subif_start_xmit()
4188 u16 queue = __ieee80211_select_queue(sdata, sta, skb); in __ieee80211_subif_start_xmit()
4193 ieee80211_aggr_check(sdata, sta, skb); in __ieee80211_subif_start_xmit()
4197 if (sta) { in __ieee80211_subif_start_xmit()
4200 fast_tx = rcu_dereference(sta->fast_tx); in __ieee80211_subif_start_xmit()
4203 ieee80211_xmit_fast(sdata, sta, fast_tx, skb)) in __ieee80211_subif_start_xmit()
4241 sta, ctrl_flags, cookie); in __ieee80211_subif_start_xmit()
4249 ieee80211_xmit(sdata, sta, skb); in __ieee80211_subif_start_xmit()
4261 static int ieee80211_change_da(struct sk_buff *skb, struct sta_info *sta) in ieee80211_change_da() argument
4271 ether_addr_copy(eth->h_dest, sta->sta.addr); in ieee80211_change_da()
4286 if (sdata->u.vlan.sta) in ieee80211_multicast_to_unicast()
4323 struct sta_info *sta, *first = NULL; in ieee80211_convert_to_unicast() local
4328 list_for_each_entry_rcu(sta, &local->sta_list, list) { in ieee80211_convert_to_unicast()
4329 if (sdata != sta->sdata) in ieee80211_convert_to_unicast()
4332 if (unlikely(ether_addr_equal(eth->h_source, sta->sta.addr))) in ieee80211_convert_to_unicast()
4336 first = sta; in ieee80211_convert_to_unicast()
4342 if (unlikely(ieee80211_change_da(cloned_skb, sta))) { in ieee80211_convert_to_unicast()
4450 struct sk_buff *skb, struct sta_info *sta, in ieee80211_tx_8023() argument
4460 if (sta) in ieee80211_tx_8023()
4465 if (ieee80211_queue_skb(local, sdata, sta, skb)) in ieee80211_tx_8023()
4484 if (sta && sta->uploaded) in ieee80211_tx_8023()
4485 pubsta = &sta->sta; in ieee80211_tx_8023()
4487 control.sta = pubsta; in ieee80211_tx_8023()
4495 struct net_device *dev, struct sta_info *sta, in ieee80211_8023_xmit() argument
4504 u16 queue = __ieee80211_select_queue(sdata, sta, skb); in ieee80211_8023_xmit()
4520 ieee80211_aggr_check(sdata, sta, skb); in ieee80211_8023_xmit()
4523 tid_tx = rcu_dereference(sta->ampdu_mlme.tid_tx[tid]); in ieee80211_8023_xmit()
4547 sta->deflink.tx_stats.bytes[skb_get_queue_mapping(skb)] += skb->len; in ieee80211_8023_xmit()
4548 sta->deflink.tx_stats.packets[skb_get_queue_mapping(skb)]++; in ieee80211_8023_xmit()
4560 ieee80211_tx_8023(sdata, skb, sta, false); in ieee80211_8023_xmit()
4574 struct sta_info *sta; in ieee80211_subif_start_xmit_8023() local
4583 if (ieee80211_lookup_ra_sta(sdata, skb, &sta)) { in ieee80211_subif_start_xmit_8023()
4588 if (unlikely(IS_ERR_OR_NULL(sta) || !sta->uploaded || in ieee80211_subif_start_xmit_8023()
4589 !test_sta_flag(sta, WLAN_STA_AUTHORIZED) || in ieee80211_subif_start_xmit_8023()
4593 key = rcu_dereference(sta->ptk[sta->ptk_idx]); in ieee80211_subif_start_xmit_8023()
4601 ieee80211_8023_xmit(sdata, dev, sta, key, skb); in ieee80211_subif_start_xmit_8023()
4621 struct sta_info *sta; in ieee80211_build_data_template() local
4625 if (ieee80211_lookup_ra_sta(sdata, skb, &sta)) { in ieee80211_build_data_template()
4631 skb = ieee80211_build_hdr(sdata, skb, info_flags, sta, in ieee80211_build_data_template()
4637 tx.sta = sta_info_get(sdata, hdr->addr1); in ieee80211_build_data_template()
4676 struct sta_info *sta; in ieee80211_tx_pending_skb() local
4696 if (ieee80211_lookup_ra_sta(sdata, skb, &sta)) { in ieee80211_tx_pending_skb()
4701 if (IS_ERR(sta) || (sta && !sta->uploaded)) in ieee80211_tx_pending_skb()
4702 sta = NULL; in ieee80211_tx_pending_skb()
4704 result = ieee80211_tx_8023(sdata, skb, sta, true); in ieee80211_tx_pending_skb()
4712 sta = sta_info_get(sdata, hdr->addr1); in ieee80211_tx_pending_skb()
4714 result = __ieee80211_tx(local, &skbs, sta, true); in ieee80211_tx_pending_skb()
5498 struct sta_info *sta; in ieee80211_nullfunc_get() local
5500 sta = sta_info_get(sdata, vif->cfg.ap_addr); in ieee80211_nullfunc_get()
5501 qos = sta && sta->sta.wme; in ieee80211_nullfunc_get()
5692 struct sta_info *sta = container_of(pubsta, struct sta_info, sta); in ieee80211_reserve_tid() local
5693 struct ieee80211_sub_if_data *sdata = sta->sdata; in ieee80211_reserve_tid()
5714 if (sta->reserved_tid == tid) { in ieee80211_reserve_tid()
5719 if (sta->reserved_tid != IEEE80211_TID_UNRESERVED) { in ieee80211_reserve_tid()
5732 set_sta_flag(sta, WLAN_STA_BLOCK_BA); in ieee80211_reserve_tid()
5733 __ieee80211_stop_tx_ba_session(sta, tid, in ieee80211_reserve_tid()
5740 sta->reserved_tid = tid; in ieee80211_reserve_tid()
5746 clear_sta_flag(sta, WLAN_STA_BLOCK_BA); in ieee80211_reserve_tid()
5756 struct sta_info *sta = container_of(pubsta, struct sta_info, sta); in ieee80211_unreserve_tid() local
5757 struct ieee80211_sub_if_data *sdata = sta->sdata; in ieee80211_unreserve_tid()
5772 if (tid != sta->reserved_tid) { in ieee80211_unreserve_tid()
5777 sta->reserved_tid = IEEE80211_TID_UNRESERVED; in ieee80211_unreserve_tid()
5873 struct sta_info *sta; in ieee80211_tx_control_port() local
5948 err = ieee80211_lookup_ra_sta(sdata, skb, &sta); in ieee80211_tx_control_port()
5955 if (!IS_ERR(sta)) { in ieee80211_tx_control_port()
5956 u16 queue = __ieee80211_select_queue(sdata, sta, skb); in ieee80211_tx_control_port()
5965 if (sta && sta->sta.mlo) in ieee80211_tx_control_port()