Lines Matching refs:sta
220 struct sta_info *sta, in __ieee80211_queue_skb_to_iface() argument
234 if (sta) { in __ieee80211_queue_skb_to_iface()
238 link_sta_info = rcu_dereference(sta->link[link_id]); in __ieee80211_queue_skb_to_iface()
242 link_sta_info = &sta->deflink; in __ieee80211_queue_skb_to_iface()
251 struct sta_info *sta, in ieee80211_queue_skb_to_iface() argument
255 __ieee80211_queue_skb_to_iface(sdata, link_id, sta, skb); in ieee80211_queue_skb_to_iface()
1074 if (!rx->sta || sta_plink_state(rx->sta) != NL80211_PLINK_ESTAB) { in ieee80211_rx_mesh_check()
1369 struct sta_info *sta = rx->sta; in ieee80211_rx_reorder_ampdu() local
1383 if (!sta) in ieee80211_rx_reorder_ampdu()
1390 tid_agg_rx = rcu_dereference(sta->ampdu_mlme.tid_rx[tid]); in ieee80211_rx_reorder_ampdu()
1393 !test_bit(tid, rx->sta->ampdu_mlme.agg_session_valid) && in ieee80211_rx_reorder_ampdu()
1394 !test_and_set_bit(tid, rx->sta->ampdu_mlme.unexpected_agg)) in ieee80211_rx_reorder_ampdu()
1395 ieee80211_send_delba(rx->sdata, rx->sta->sta.addr, tid, in ieee80211_rx_reorder_ampdu()
1458 if (!rx->sta) in ieee80211_rx_h_check_dup()
1481 rx->sta->last_seq_ctrl[rx->seqno_idx] == hdr->seq_ctrl)) { in ieee80211_rx_h_check_dup()
1486 rx->sta->last_seq_ctrl[rx->seqno_idx] = hdr->seq_ctrl; in ieee80211_rx_h_check_dup()
1513 (!rx->sta || !test_sta_flag(rx->sta, WLAN_STA_ASSOC)))) { in ieee80211_rx_h_check()
1519 if (rx->sta && rx->sdata->vif.type == NL80211_IFTYPE_STATION && in ieee80211_rx_h_check()
1579 static void sta_ps_start(struct sta_info *sta) in sta_ps_start() argument
1581 struct ieee80211_sub_if_data *sdata = sta->sdata; in sta_ps_start()
1586 if (sta->sdata->vif.type == NL80211_IFTYPE_AP || in sta_ps_start()
1587 sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN) in sta_ps_start()
1593 set_sta_flag(sta, WLAN_STA_PS_STA); in sta_ps_start()
1595 drv_sta_notify(local, sdata, STA_NOTIFY_SLEEP, &sta->sta); in sta_ps_start()
1597 sta->sta.addr, sta->sta.aid); in sta_ps_start()
1599 ieee80211_clear_fast_xmit(sta); in sta_ps_start()
1602 struct ieee80211_txq *txq = sta->sta.txq[tid]; in sta_ps_start()
1611 set_bit(tid, &sta->txq_buffered_tids); in sta_ps_start()
1613 clear_bit(tid, &sta->txq_buffered_tids); in sta_ps_start()
1617 static void sta_ps_end(struct sta_info *sta) in sta_ps_end() argument
1619 ps_dbg(sta->sdata, "STA %pM aid %d exits power save mode\n", in sta_ps_end()
1620 sta->sta.addr, sta->sta.aid); in sta_ps_end()
1622 if (test_sta_flag(sta, WLAN_STA_PS_DRIVER)) { in sta_ps_end()
1629 clear_sta_flag(sta, WLAN_STA_PS_STA); in sta_ps_end()
1630 ps_dbg(sta->sdata, "STA %pM aid %d driver-ps-blocked\n", in sta_ps_end()
1631 sta->sta.addr, sta->sta.aid); in sta_ps_end()
1635 set_sta_flag(sta, WLAN_STA_PS_DELIVER); in sta_ps_end()
1636 clear_sta_flag(sta, WLAN_STA_PS_STA); in sta_ps_end()
1637 ieee80211_sta_ps_deliver_wakeup(sta); in sta_ps_end()
1642 struct sta_info *sta = container_of(pubsta, struct sta_info, sta); in ieee80211_sta_ps_transition() local
1645 WARN_ON(!ieee80211_hw_check(&sta->local->hw, AP_LINK_PS)); in ieee80211_sta_ps_transition()
1648 in_ps = test_sta_flag(sta, WLAN_STA_PS_STA); in ieee80211_sta_ps_transition()
1653 sta_ps_start(sta); in ieee80211_sta_ps_transition()
1655 sta_ps_end(sta); in ieee80211_sta_ps_transition()
1663 struct sta_info *sta = container_of(pubsta, struct sta_info, sta); in ieee80211_sta_pspoll() local
1665 if (test_sta_flag(sta, WLAN_STA_SP)) in ieee80211_sta_pspoll()
1668 if (!test_sta_flag(sta, WLAN_STA_PS_DRIVER)) in ieee80211_sta_pspoll()
1669 ieee80211_sta_ps_deliver_poll_response(sta); in ieee80211_sta_pspoll()
1671 set_sta_flag(sta, WLAN_STA_PSPOLL); in ieee80211_sta_pspoll()
1677 struct sta_info *sta = container_of(pubsta, struct sta_info, sta); in ieee80211_sta_uapsd_trigger() local
1688 if (!(sta->sta.uapsd_queues & ieee80211_ac_to_qos_mask[ac]) && in ieee80211_sta_uapsd_trigger()
1693 if (test_sta_flag(sta, WLAN_STA_SP)) in ieee80211_sta_uapsd_trigger()
1696 if (!test_sta_flag(sta, WLAN_STA_PS_DRIVER)) in ieee80211_sta_uapsd_trigger()
1697 ieee80211_sta_ps_deliver_uapsd(sta); in ieee80211_sta_uapsd_trigger()
1699 set_sta_flag(sta, WLAN_STA_UAPSD); in ieee80211_sta_uapsd_trigger()
1710 if (!rx->sta) in ieee80211_rx_h_uapsd_and_pspoll()
1730 if (!test_sta_flag(rx->sta, WLAN_STA_PS_STA)) in ieee80211_rx_h_uapsd_and_pspoll()
1734 ieee80211_sta_pspoll(&rx->sta->sta); in ieee80211_rx_h_uapsd_and_pspoll()
1748 ieee80211_sta_uapsd_trigger(&rx->sta->sta, tid); in ieee80211_rx_h_uapsd_and_pspoll()
1757 struct sta_info *sta = rx->sta; in ieee80211_rx_h_sta_process() local
1764 if (!sta || !link_sta) in ieee80211_rx_h_sta_process()
1779 test_sta_flag(sta, WLAN_STA_AUTHORIZED)) { in ieee80211_rx_h_sta_process()
1833 if (!ieee80211_hw_check(&sta->local->hw, AP_LINK_PS) && in ieee80211_rx_h_sta_process()
1841 if (test_sta_flag(sta, WLAN_STA_PS_STA)) { in ieee80211_rx_h_sta_process()
1843 sta_ps_end(sta); in ieee80211_rx_h_sta_process()
1846 sta_ps_start(sta); in ieee80211_rx_h_sta_process()
1852 ieee80211_mps_rx_h_sta_process(sta, hdr); in ieee80211_rx_h_sta_process()
1870 !rx->sdata->u.vlan.sta))) { in ieee80211_rx_h_sta_process()
1871 if (!test_and_set_sta_flag(sta, WLAN_STA_4ADDR_EVENT)) in ieee80211_rx_h_sta_process()
1873 rx->sdata->dev, sta->sta.addr, in ieee80211_rx_h_sta_process()
1971 if (rx->sta) { in ieee80211_rx_h_decrypt()
1972 int keyid = rx->sta->ptk_idx; in ieee80211_rx_h_decrypt()
1973 sta_ptk = rcu_dereference(rx->sta->ptk[keyid]); in ieee80211_rx_h_decrypt()
1982 ptk_idx = rcu_dereference(rx->sta->ptk[keyid]); in ieee80211_rx_h_decrypt()
2027 test_sta_flag(rx->sta, WLAN_STA_MFP)) in ieee80211_rx_h_decrypt()
2284 if (rx->sta) in ieee80211_rx_h_defragment()
2285 cache = &rx->sta->frags; in ieee80211_rx_h_defragment()
2418 if (rx->sta) in ieee80211_rx_h_defragment()
2425 if (unlikely(!rx->sta || !test_sta_flag(rx->sta, WLAN_STA_AUTHORIZED))) in ieee80211_802_1x_port_control()
2471 if (rx->sta && test_sta_flag(rx->sta, WLAN_STA_MFP)) { in ieee80211_drop_unencrypted_mgmt()
2526 (!rx->sta || !test_sta_flag(rx->sta, WLAN_STA_ASSOC))) in ieee80211_drop_unencrypted_mgmt()
2544 sdata->vif.type == NL80211_IFTYPE_AP_VLAN && !sdata->u.vlan.sta) in __ieee80211_data_to_8023()
2556 sdata->vif.type == NL80211_IFTYPE_AP_VLAN && sdata->u.vlan.sta) in __ieee80211_data_to_8023()
2690 if (rx->sta) { in ieee80211_deliver_skb()
2705 (sdata->vif.type != NL80211_IFTYPE_AP_VLAN || !sdata->u.vlan.sta)) { in ieee80211_deliver_skb()
2789 struct sta_info *sta; in ieee80211_rx_mesh_fast_forward() local
2805 sta = rcu_dereference(entry->mpath->next_hop); in ieee80211_rx_mesh_fast_forward()
2806 if (!sta) in ieee80211_rx_mesh_fast_forward()
2813 tid_tx = rcu_dereference(sta->ampdu_mlme.tid_tx[tid]); in ieee80211_rx_mesh_fast_forward()
2822 ieee80211_aggr_check(sdata, sta, skb); in ieee80211_rx_mesh_fast_forward()
2834 __ieee80211_xmit_fast(sdata, sta, &entry->fast_tx, skb, tid_tx, in ieee80211_rx_mesh_fast_forward()
2844 ieee80211_rx_mesh_data(struct ieee80211_sub_if_data *sdata, struct sta_info *sta, in ieee80211_rx_mesh_data() argument
3003 if (sta) in ieee80211_rx_mesh_data()
3007 sta->sta.addr); in ieee80211_rx_mesh_data()
3047 if (!test_sta_flag(rx->sta, WLAN_STA_TDLS_PEER)) in __ieee80211_rx_h_amsdu()
3067 if (rx->sta->amsdu_mesh_control < 0) { in __ieee80211_rx_h_amsdu()
3084 rx->sta->amsdu_mesh_control = valid; in __ieee80211_rx_h_amsdu()
3091 rx->sta->amsdu_mesh_control); in __ieee80211_rx_h_amsdu()
3096 switch (ieee80211_rx_mesh_data(rx->sdata, rx->sta, rx->skb)) { in __ieee80211_rx_h_amsdu()
3133 if (!rx->sdata->u.vlan.sta) in ieee80211_rx_h_amsdu()
3147 if (is_multicast_ether_addr(hdr->addr1) || !rx->sta) in ieee80211_rx_h_amsdu()
3190 if (rx->sta && in ieee80211_rx_h_data()
3191 !test_and_set_sta_flag(rx->sta, WLAN_STA_4ADDR_EVENT)) in ieee80211_rx_h_data()
3193 rx->sdata->dev, rx->sta->sta.addr, rx->link_id, in ieee80211_rx_h_data()
3202 res = ieee80211_rx_mesh_data(rx->sdata, rx->sta, rx->skb); in ieee80211_rx_h_data()
3222 rx->sta, rx->skb); in ieee80211_rx_h_data()
3271 if (!rx->sta) in ieee80211_rx_h_ctrl()
3280 if (!test_bit(tid, rx->sta->ampdu_mlme.agg_session_valid) && in ieee80211_rx_h_ctrl()
3281 !test_and_set_bit(tid, rx->sta->ampdu_mlme.unexpected_agg)) in ieee80211_rx_h_ctrl()
3282 ieee80211_send_delba(rx->sdata, rx->sta->sta.addr, tid, in ieee80211_rx_h_ctrl()
3286 tid_agg_rx = rcu_dereference(rx->sta->ampdu_mlme.tid_rx[tid]); in ieee80211_rx_h_ctrl()
3293 event.u.ba.sta = &rx->sta->sta; in ieee80211_rx_h_ctrl()
3469 if (!rx->sta) in ieee80211_process_rx_twt_action()
3517 if (!rx->sta && mgmt->u.action.category != WLAN_CATEGORY_PUBLIC && in ieee80211_rx_h_action()
3577 rx->sta->addr, in ieee80211_rx_h_action()
3607 if (!rx->sta) in ieee80211_rx_h_action()
3846 if (rx->sta) in ieee80211_rx_h_action()
3852 ieee80211_queue_skb_to_iface(sdata, rx->link_id, rx->sta, rx->skb); in ieee80211_rx_h_action()
3890 if (rx->sta) in ieee80211_rx_h_userspace_mgmt()
3928 if (rx->sta) in ieee80211_rx_h_action_post_userspace()
4009 ieee80211_queue_skb_to_iface(sdata, rx->link_id, rx->sta, rx->skb); in ieee80211_rx_h_ext()
4066 ieee80211_queue_skb_to_iface(sdata, rx->link_id, rx->sta, rx->skb); in ieee80211_rx_h_mgmt()
4081 if (rx->sta) in ieee80211_rx_handlers_result()
4181 ieee80211_rx_is_valid_sta_link_id(struct ieee80211_sta *sta, u8 link_id) in ieee80211_rx_is_valid_sta_link_id() argument
4183 return !!(sta->valid_links & BIT(link_id)); in ieee80211_rx_is_valid_sta_link_id()
4192 if (!rx->sta) in ieee80211_rx_data_set_link()
4195 if (!ieee80211_rx_is_valid_sta_link_id(&rx->sta->sta, link_id)) in ieee80211_rx_data_set_link()
4198 rx->link_sta = rcu_dereference(rx->sta->link[link_id]); in ieee80211_rx_data_set_link()
4204 struct sta_info *sta, int link_id) in ieee80211_rx_data_set_sta() argument
4207 rx->sta = sta; in ieee80211_rx_data_set_sta()
4209 if (sta) { in ieee80211_rx_data_set_sta()
4210 rx->local = sta->sdata->local; in ieee80211_rx_data_set_sta()
4212 rx->sdata = sta->sdata; in ieee80211_rx_data_set_sta()
4213 rx->link_sta = &sta->deflink; in ieee80211_rx_data_set_sta()
4220 sta && !sta->sta.valid_links) in ieee80211_rx_data_set_sta()
4222 rcu_dereference(rx->sdata->link[sta->deflink.link_id]); in ieee80211_rx_data_set_sta()
4236 void ieee80211_release_reorder_timeout(struct sta_info *sta, int tid) in ieee80211_release_reorder_timeout() argument
4248 if (sta->sta.valid_links) in ieee80211_release_reorder_timeout()
4249 link_id = ffs(sta->sta.valid_links) - 1; in ieee80211_release_reorder_timeout()
4251 if (!ieee80211_rx_data_set_sta(&rx, sta, link_id)) in ieee80211_release_reorder_timeout()
4254 tid_agg_rx = rcu_dereference(sta->ampdu_mlme.tid_rx[tid]); in ieee80211_release_reorder_timeout()
4261 ieee80211_sta_reorder_release(sta->sdata, tid_agg_rx, &frames); in ieee80211_release_reorder_timeout()
4268 .u.ba.sta = &sta->sta, in ieee80211_release_reorder_timeout()
4281 struct sta_info *sta; in ieee80211_mark_rx_ba_filtered_frames() local
4296 sta = container_of(pubsta, struct sta_info, sta); in ieee80211_mark_rx_ba_filtered_frames()
4298 local = sta->sdata->local; in ieee80211_mark_rx_ba_filtered_frames()
4303 if (!ieee80211_rx_data_set_sta(&rx, sta, -1)) in ieee80211_mark_rx_ba_filtered_frames()
4307 tid_agg_rx = rcu_dereference(sta->ampdu_mlme.tid_rx[tid]); in ieee80211_mark_rx_ba_filtered_frames()
4319 ieee80211_release_reorder_frames(sta->sdata, tid_agg_rx, in ieee80211_mark_rx_ba_filtered_frames()
4324 ieee80211_release_reorder_frames(sta->sdata, tid_agg_rx, ssn, in ieee80211_mark_rx_ba_filtered_frames()
4348 ieee80211_sta_reorder_release(sta->sdata, tid_agg_rx, &frames); in ieee80211_mark_rx_ba_filtered_frames()
4383 ieee80211_is_robust_mgmt_frame(skb) && !rx->sta) in ieee80211_accept_frame()
4402 if (!rx->sta) { in ieee80211_accept_frame()
4426 if (!rx->sta) { in ieee80211_accept_frame()
4515 void ieee80211_check_fast_rx(struct sta_info *sta) in ieee80211_check_fast_rx() argument
4517 struct ieee80211_sub_if_data *sdata = sta->sdata; in ieee80211_check_fast_rx()
4547 if (sta->sta.tdls) { in ieee80211_check_fast_rx()
4558 if (sdata->u.mgd.use_4addr && !sta->sta.tdls) { in ieee80211_check_fast_rx()
4589 !sdata->u.vlan.sta); in ieee80211_check_fast_rx()
4592 sdata->u.vlan.sta) { in ieee80211_check_fast_rx()
4610 if (!test_sta_flag(sta, WLAN_STA_AUTHORIZED)) in ieee80211_check_fast_rx()
4614 key = rcu_dereference(sta->ptk[sta->ptk_idx]); in ieee80211_check_fast_rx()
4651 set_offload = !test_and_set_sta_flag(sta, WLAN_STA_DECAP_OFFLOAD); in ieee80211_check_fast_rx()
4653 set_offload = test_and_clear_sta_flag(sta, WLAN_STA_DECAP_OFFLOAD); in ieee80211_check_fast_rx()
4656 drv_sta_set_decap_offload(local, sdata, &sta->sta, assign); in ieee80211_check_fast_rx()
4658 spin_lock_bh(&sta->lock); in ieee80211_check_fast_rx()
4659 old = rcu_dereference_protected(sta->fast_rx, true); in ieee80211_check_fast_rx()
4660 rcu_assign_pointer(sta->fast_rx, new); in ieee80211_check_fast_rx()
4661 spin_unlock_bh(&sta->lock); in ieee80211_check_fast_rx()
4667 void ieee80211_clear_fast_rx(struct sta_info *sta) in ieee80211_clear_fast_rx() argument
4671 spin_lock_bh(&sta->lock); in ieee80211_clear_fast_rx()
4672 old = rcu_dereference_protected(sta->fast_rx, true); in ieee80211_clear_fast_rx()
4673 RCU_INIT_POINTER(sta->fast_rx, NULL); in ieee80211_clear_fast_rx()
4674 spin_unlock_bh(&sta->lock); in ieee80211_clear_fast_rx()
4683 struct sta_info *sta; in __ieee80211_check_fast_rx_iface() local
4687 list_for_each_entry(sta, &local->sta_list, list) { in __ieee80211_check_fast_rx_iface()
4688 if (sdata != sta->sdata && in __ieee80211_check_fast_rx_iface()
4689 (!sta->sdata->bss || sta->sdata->bss != sdata->bss)) in __ieee80211_check_fast_rx_iface()
4691 ieee80211_check_fast_rx(sta); in __ieee80211_check_fast_rx_iface()
4710 struct sta_info *sta = rx->sta; in ieee80211_rx_8023() local
4717 link_sta = rcu_dereference(sta->link[rx->link_id]); in ieee80211_rx_8023()
4723 link_sta = &sta->deflink; in ieee80211_rx_8023()
4929 res = ieee80211_rx_mesh_data(rx->sdata, rx->sta, rx->skb); in ieee80211_invoke_fast_rx()
4978 if (consume && rx->sta) { in ieee80211_prepare_and_rx_handle()
4981 fast_rx = rcu_dereference(rx->sta->fast_rx); in ieee80211_prepare_and_rx_handle()
5011 if (unlikely(rx->sta && rx->sta->sta.mlo) && in ieee80211_prepare_and_rx_handle()
5019 ether_addr_copy(hdr->addr2, rx->sta->addr); in ieee80211_prepare_and_rx_handle()
5024 ether_addr_copy(hdr->addr3, rx->sta->addr); in ieee80211_prepare_and_rx_handle()
5044 struct sta_info *sta; in __ieee80211_rx_handle_8023() local
5072 sta = container_of(pubsta, struct sta_info, sta); in __ieee80211_rx_handle_8023()
5073 if (!ieee80211_rx_data_set_sta(&rx, sta, link_id)) in __ieee80211_rx_handle_8023()
5076 fast_rx = rcu_dereference(rx.sta->fast_rx); in __ieee80211_rx_handle_8023()
5092 struct sta_info *sta; in ieee80211_rx_for_interface() local
5103 sta = link_sta->sta; in ieee80211_rx_for_interface()
5108 sta = sta_info_get_bss(rx->sdata, hdr->addr2); in ieee80211_rx_for_interface()
5129 if (!ieee80211_rx_data_set_sta(rx, sta, link_id)) in ieee80211_rx_for_interface()
5189 struct sta_info *sta, *prev_sta; in __ieee80211_rx_handle_packet() local
5196 sta = container_of(pubsta, struct sta_info, sta); in __ieee80211_rx_handle_packet()
5197 if (!ieee80211_rx_data_set_sta(&rx, sta, link_id)) in __ieee80211_rx_handle_packet()
5226 for_each_sta_info(local, hdr->addr2, sta, tmp) { in __ieee80211_rx_handle_packet()
5228 prev_sta = sta; in __ieee80211_rx_handle_packet()
5236 if (!status->link_valid && prev_sta->sta.mlo) in __ieee80211_rx_handle_packet()
5241 prev_sta = sta; in __ieee80211_rx_handle_packet()
5249 if (!status->link_valid && prev_sta->sta.mlo) in __ieee80211_rx_handle_packet()