Lines Matching defs:sdata

217 static void __ieee80211_queue_skb_to_iface(struct ieee80211_sub_if_data *sdata,
231 skb_queue_tail(&sdata->skb_queue, skb);
232 wiphy_work_queue(sdata->local->hw.wiphy, &sdata->work);
237 static void ieee80211_queue_skb_to_iface(struct ieee80211_sub_if_data *sdata,
243 __ieee80211_queue_skb_to_iface(sdata, link_id, sta, skb);
246 static void ieee80211_handle_mu_mimo_mon(struct ieee80211_sub_if_data *sdata,
256 if (!sdata)
265 if (!is_valid_ether_addr(sdata->u.mntr.mu_follow_addr))
279 if (!ether_addr_equal(action.hdr.addr1, sdata->u.mntr.mu_follow_addr))
286 ieee80211_queue_skb_to_iface(sdata, -1, NULL, skb);
760 struct ieee80211_sub_if_data *sdata;
834 list_for_each_entry_rcu(sdata, &local->mon_list, u.mntr.list) {
835 bool last_monitor = list_is_last(&sdata->u.mntr.list,
855 skb->dev = sdata->dev;
1025 char *dev_addr = rx->sdata->vif.addr;
1100 static void ieee80211_release_reorder_frame(struct ieee80211_sub_if_data *sdata,
1133 static void ieee80211_release_reorder_frames(struct ieee80211_sub_if_data *sdata,
1144 ieee80211_release_reorder_frame(sdata, tid_agg_rx, index,
1160 static void ieee80211_sta_reorder_release(struct ieee80211_sub_if_data *sdata,
1193 ht_dbg_ratelimited(sdata,
1195 ieee80211_release_reorder_frame(sdata, tid_agg_rx, j,
1207 ieee80211_release_reorder_frame(sdata, tid_agg_rx, index,
1237 static bool ieee80211_sta_manage_reorder_buf(struct ieee80211_sub_if_data *sdata,
1291 ieee80211_release_reorder_frames(sdata, tid_agg_rx,
1325 ieee80211_sta_reorder_release(sdata, tid_agg_rx, frames);
1368 ieee80211_send_delba(rx->sdata, rx->sta->sta.addr, tid,
1391 ieee80211_queue_skb_to_iface(rx->sdata, rx->link_id, NULL, skb);
1402 if (ieee80211_sta_manage_reorder_buf(rx->sdata, tid_agg_rx, skb,
1461 if (ieee80211_vif_is_mesh(&rx->sdata->vif))
1466 rx->sdata->vif.type != NL80211_IFTYPE_ADHOC &&
1467 rx->sdata->vif.type != NL80211_IFTYPE_OCB &&
1474 if (rx->sta && rx->sdata->vif.type == NL80211_IFTYPE_STATION &&
1485 if (ethertype == rx->sdata->control_port_protocol)
1489 if (rx->sdata->vif.type == NL80211_IFTYPE_AP &&
1490 cfg80211_rx_spurious_frame(rx->sdata->dev,
1530 ieee80211_send_pspoll(local, rx->sdata);
1537 struct ieee80211_sub_if_data *sdata = sta->sdata;
1538 struct ieee80211_local *local = sdata->local;
1542 if (sta->sdata->vif.type == NL80211_IFTYPE_AP ||
1543 sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
1544 ps = &sdata->bss->ps;
1551 drv_sta_notify(local, sdata, STA_NOTIFY_SLEEP, &sta->sta);
1552 ps_dbg(sdata, "STA %pM aid %d enters power save mode\n",
1575 ps_dbg(sta->sdata, "STA %pM aid %d exits power save mode\n",
1586 ps_dbg(sta->sdata, "STA %pM aid %d driver-ps-blocked\n",
1662 struct ieee80211_sub_if_data *sdata = rx->sdata;
1669 if (sdata->vif.type != NL80211_IFTYPE_AP &&
1670 sdata->vif.type != NL80211_IFTYPE_AP_VLAN)
1678 if (ieee80211_hw_check(&sdata->local->hw, AP_LINK_PS))
1731 if (rx->sdata->vif.type == NL80211_IFTYPE_ADHOC) {
1734 if (ether_addr_equal(bssid, rx->sdata->u.ibss.bssid) &&
1742 } else if (rx->sdata->vif.type == NL80211_IFTYPE_OCB) {
1795 (rx->sdata->vif.type == NL80211_IFTYPE_AP ||
1796 rx->sdata->vif.type == NL80211_IFTYPE_AP_VLAN)) {
1807 if (ieee80211_vif_is_mesh(&rx->sdata->vif))
1824 (rx->sdata->vif.type == NL80211_IFTYPE_AP ||
1825 (rx->sdata->vif.type == NL80211_IFTYPE_AP_VLAN &&
1826 !rx->sdata->u.vlan.sta))) {
1829 rx->sdata->dev, sta->sta.addr,
1962 if (rx->sdata->dev)
1963 cfg80211_rx_unprot_mlme_mgmt(rx->sdata->dev,
2052 rx->key = rcu_dereference(rx->sdata->keys[keyidx]);
2116 rx->sdata->dev))
2117 cfg80211_rx_unprot_mlme_mgmt(rx->sdata->dev,
2222 struct ieee80211_fragment_cache *cache = &rx->sdata->frags;
2438 cfg80211_rx_unprot_mlme_mgmt(rx->sdata->dev,
2449 cfg80211_rx_unprot_mlme_mgmt(rx->sdata->dev,
2456 cfg80211_rx_unprot_mlme_mgmt(rx->sdata->dev,
2481 struct ieee80211_sub_if_data *sdata = rx->sdata;
2489 sdata->vif.type == NL80211_IFTYPE_AP_VLAN && !sdata->u.vlan.sta)
2492 if (sdata->vif.type == NL80211_IFTYPE_STATION &&
2493 !!sdata->u.mgd.use_4addr != !!ieee80211_has_a4(hdr->frame_control)) {
2495 if (!sdata->u.mgd.use_4addr)
2497 else if (!ether_addr_equal(hdr->addr1, sdata->vif.addr))
2502 sdata->vif.type == NL80211_IFTYPE_AP_VLAN && sdata->u.vlan.sta)
2505 ret = ieee80211_data_to_8023(rx->skb, sdata->vif.addr, sdata->vif.type);
2510 if (ehdr->h_proto == rx->sdata->control_port_protocol)
2518 bool ieee80211_is_our_addr(struct ieee80211_sub_if_data *sdata,
2524 if (ether_addr_equal(sdata->vif.addr, addr))
2527 if (!ieee80211_vif_is_mld(&sdata->vif))
2530 for (link_id = 0; link_id < ARRAY_SIZE(sdata->vif.link_conf); link_id++) {
2533 conf = rcu_dereference(sdata->vif.link_conf[link_id]);
2561 if (unlikely(ehdr->h_proto == rx->sdata->control_port_protocol))
2562 return ieee80211_is_our_addr(rx->sdata, ehdr->h_dest, NULL) ||
2575 struct ieee80211_sub_if_data *sdata = rx->sdata;
2576 struct net_device *dev = sdata->dev;
2578 if (unlikely((skb->protocol == sdata->control_port_protocol ||
2580 !sdata->control_port_no_preauth)) &&
2581 sdata->control_port_over_nl80211)) {
2607 if (unlikely(skb->protocol == sdata->control_port_protocol &&
2608 !ether_addr_equal(ehdr->h_dest, sdata->vif.addr)))
2609 ether_addr_copy(ehdr->h_dest, sdata->vif.addr);
2625 struct ieee80211_sub_if_data *sdata = rx->sdata;
2626 struct net_device *dev = sdata->dev;
2647 if ((sdata->vif.type == NL80211_IFTYPE_AP ||
2648 sdata->vif.type == NL80211_IFTYPE_AP_VLAN) &&
2649 !(sdata->flags & IEEE80211_SDATA_DONT_BRIDGE_PACKETS) &&
2650 ehdr->h_proto != rx->sdata->control_port_protocol &&
2651 (sdata->vif.type != NL80211_IFTYPE_AP_VLAN || !sdata->u.vlan.sta)) {
2653 ieee80211_vif_get_num_mcast_if(sdata) != 0) {
2664 dsta = sta_info_get(sdata, ehdr->h_dest);
2725 ieee80211_rx_mesh_fast_forward(struct ieee80211_sub_if_data *sdata,
2728 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
2738 entry = mesh_fast_tx_get(sdata, mesh_hdr->eaddr1);
2740 entry = mesh_fast_tx_get(sdata, skb->data);
2761 ieee80211_aggr_check(sdata, sta, skb);
2770 skb->dev = sdata->dev;
2773 __ieee80211_xmit_fast(sdata, sta, &entry->fast_tx, skb, tid_tx,
2783 ieee80211_rx_mesh_data(struct ieee80211_sub_if_data *sdata, struct sta_info *sta,
2787 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
2788 struct ieee80211_local *local = sdata->local;
2803 if (!ieee80211_vif_is_mesh(&sdata->vif))
2824 mesh_rmc_check(sdata, eth->h_source, mesh_hdr))
2828 if (sdata->crypto_tx_tailroom_needed_cnt)
2845 mppath = mpp_path_lookup(sdata, proxied_addr);
2847 mpp_path_add(sdata, proxied_addr, eth->h_source);
2860 mesh_fast_tx_flush_addr(sdata, proxied_addr);
2866 if (ether_addr_equal(sdata->vif.addr, eth->h_dest))
2887 ieee80211_rx_mesh_fast_forward(sdata, skb, mesh_hdrlen))
2929 info->control.vif = &sdata->vif;
2931 fwd_skb->dev = sdata->dev;
2934 memcpy(fwd_hdr->addr2, sdata->vif.addr, ETH_ALEN);
2936 ieee80211_mps_set_frame_flags(sdata, NULL, fwd_hdr);
2937 } else if (!mesh_nexthop_lookup(sdata, fwd_skb)) {
2943 mesh_path_error_tx(sdata, ifmsh->mshcfg.element_ttl,
2968 struct net_device *dev = rx->sdata->dev;
2980 } else switch (rx->sdata->vif.type) {
3002 rx->sdata->vif.addr,
3003 rx->sdata->vif.type,
3028 rx->sdata->vif.type,
3036 res = ieee80211_rx_mesh_data(rx->sdata, rx->sta, rx->skb);
3077 switch (rx->sdata->vif.type) {
3079 if (!rx->sdata->u.vlan.sta)
3083 if (!rx->sdata->u.mgd.use_4addr)
3119 struct ieee80211_sub_if_data *sdata = rx->sdata;
3121 struct net_device *dev = sdata->dev;
3139 sdata->vif.type == NL80211_IFTYPE_AP) {
3143 rx->sdata->dev, rx->sta->sta.addr, GFP_ATOMIC);
3151 res = ieee80211_rx_mesh_data(rx->sdata, rx->sta, rx->skb);
3170 __ieee80211_queue_skb_to_iface(sdata, rx->link_id,
3176 if (rx->sdata->vif.type == NL80211_IFTYPE_AP_VLAN &&
3177 unlikely(port_control) && sdata->bss) {
3178 sdata = container_of(sdata->bss, struct ieee80211_sub_if_data,
3180 dev = sdata->dev;
3181 rx->sdata = sdata;
3191 !test_bit(SDATA_STATE_OFFCHANNEL, &sdata->state)))
3231 ieee80211_send_delba(rx->sdata, rx->sta->sta.addr, tid,
3251 ieee80211_release_reorder_frames(rx->sdata, tid_agg_rx,
3255 drv_event_callback(rx->local, rx->sdata, &event);
3269 static void ieee80211_process_sa_query_req(struct ieee80211_sub_if_data *sdata,
3273 struct ieee80211_local *local = sdata->local;
3277 if (!ether_addr_equal(mgmt->da, sdata->vif.addr)) {
3282 if (!ether_addr_equal(mgmt->sa, sdata->deflink.u.mgd.bssid) ||
3283 !ether_addr_equal(mgmt->bssid, sdata->deflink.u.mgd.bssid)) {
3300 memcpy(resp->sa, sdata->vif.addr, ETH_ALEN);
3301 memcpy(resp->bssid, sdata->deflink.u.mgd.bssid, ETH_ALEN);
3311 ieee80211_tx_skb(sdata, skb);
3328 if (rx->sdata->vif.bss_conf.csa_active)
3340 struct ieee80211_bss_conf *bss_conf = &rx->sdata->vif.bss_conf;
3352 ieee80211_obss_color_collision_notify(&rx->sdata->vif,
3383 if (rx->sdata->vif.type == NL80211_IFTYPE_AP &&
3412 struct ieee80211_sub_if_data *sdata = rx->sdata;
3415 if (sdata->vif.type != NL80211_IFTYPE_AP)
3421 if (!sdata->vif.bss_conf.twt_responder)
3464 struct ieee80211_sub_if_data *sdata = rx->sdata;
3483 if (sdata->vif.type != NL80211_IFTYPE_STATION &&
3484 sdata->vif.type != NL80211_IFTYPE_MESH_POINT &&
3485 sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
3486 sdata->vif.type != NL80211_IFTYPE_AP &&
3487 sdata->vif.type != NL80211_IFTYPE_ADHOC)
3500 if (sdata->vif.type != NL80211_IFTYPE_AP &&
3501 sdata->vif.type != NL80211_IFTYPE_AP_VLAN)
3531 cfg80211_sta_opmode_change_notify(sdata->dev,
3568 cfg80211_sta_opmode_change_notify(sdata->dev,
3582 if (sdata->vif.type != NL80211_IFTYPE_STATION)
3586 if (!ether_addr_equal(mgmt->bssid, sdata->deflink.u.mgd.bssid))
3596 if (sdata->vif.type != NL80211_IFTYPE_STATION &&
3597 sdata->vif.type != NL80211_IFTYPE_MESH_POINT &&
3598 sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
3599 sdata->vif.type != NL80211_IFTYPE_AP &&
3600 sdata->vif.type != NL80211_IFTYPE_ADHOC)
3624 if (sdata->vif.type != NL80211_IFTYPE_STATION &&
3625 sdata->vif.type != NL80211_IFTYPE_MESH_POINT &&
3626 sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
3627 sdata->vif.type != NL80211_IFTYPE_AP &&
3628 sdata->vif.type != NL80211_IFTYPE_ADHOC)
3670 if (sdata->vif.type != NL80211_IFTYPE_STATION)
3673 ieee80211_process_measurement_req(sdata, mgmt, len);
3681 if (sdata->vif.type != NL80211_IFTYPE_STATION &&
3682 sdata->vif.type != NL80211_IFTYPE_ADHOC &&
3683 sdata->vif.type != NL80211_IFTYPE_MESH_POINT)
3686 if (sdata->vif.type == NL80211_IFTYPE_STATION)
3687 bssid = sdata->deflink.u.mgd.bssid;
3688 else if (sdata->vif.type == NL80211_IFTYPE_ADHOC)
3689 bssid = sdata->u.ibss.bssid;
3690 else if (sdata->vif.type == NL80211_IFTYPE_MESH_POINT)
3711 if (!ieee80211_vif_is_mesh(&sdata->vif))
3713 if (sdata->u.mesh.user_mpm)
3719 if (!ieee80211_vif_is_mesh(&sdata->vif))
3729 if (!ieee80211_vif_is_mesh(&sdata->vif))
3732 !mesh_path_sel_is_hwmp(sdata))
3766 ieee80211_queue_skb_to_iface(sdata, rx->link_id, rx->sta, rx->skb);
3803 if (cfg80211_rx_mgmt_ext(&rx->sdata->wdev, &info)) {
3816 struct ieee80211_sub_if_data *sdata = rx->sdata;
3831 if (sdata->vif.type != NL80211_IFTYPE_STATION)
3833 ieee80211_process_sa_query_req(sdata, mgmt, len);
3854 struct ieee80211_sub_if_data *sdata = rx->sdata;
3871 (sdata->vif.type == NL80211_IFTYPE_AP ||
3872 sdata->vif.type == NL80211_IFTYPE_AP_VLAN))
3889 memcpy(nmgmt->sa, rx->sdata->vif.addr, ETH_ALEN);
3893 if (rx->sdata->vif.type == NL80211_IFTYPE_P2P_DEVICE) {
3904 __ieee80211_tx_skb_tid_band(rx->sdata, nskb, 7, -1,
3914 struct ieee80211_sub_if_data *sdata = rx->sdata;
3920 if (sdata->vif.type != NL80211_IFTYPE_STATION)
3924 ieee80211_queue_skb_to_iface(sdata, rx->link_id, rx->sta, rx->skb);
3932 struct ieee80211_sub_if_data *sdata = rx->sdata;
3938 if (!ieee80211_vif_is_mesh(&sdata->vif) &&
3939 sdata->vif.type != NL80211_IFTYPE_ADHOC &&
3940 sdata->vif.type != NL80211_IFTYPE_OCB &&
3941 sdata->vif.type != NL80211_IFTYPE_STATION)
3956 if (sdata->vif.type != NL80211_IFTYPE_STATION &&
3957 sdata->vif.type != NL80211_IFTYPE_ADHOC)
3968 if (sdata->vif.type != NL80211_IFTYPE_STATION)
3973 if (sdata->vif.type != NL80211_IFTYPE_ADHOC &&
3974 sdata->vif.type != NL80211_IFTYPE_MESH_POINT)
3981 ieee80211_queue_skb_to_iface(sdata, rx->link_id, rx->sta, rx->skb);
3990 struct ieee80211_sub_if_data *sdata;
4025 list_for_each_entry_rcu(sdata, &local->interfaces, list) {
4026 if (!ieee80211_sdata_running(sdata))
4029 if (sdata->vif.type != NL80211_IFTYPE_MONITOR ||
4030 !(sdata->u.mntr.flags & MONITOR_FLAG_COOK_FRAMES))
4041 prev_dev = sdata->dev;
4042 dev_sw_netstats_rx_add(sdata->dev, skb->len);
4063 I802_DEBUG_INC(rx->sdata->local->rx_handlers_queued);
4068 I802_DEBUG_INC(rx->sdata->local->rx_handlers_drop);
4188 rx->link = rcu_dereference(rx->sdata->link[link_id]);
4208 rx->local = sta->sdata->local;
4209 if (!rx->sdata)
4210 rx->sdata = sta->sdata;
4217 rx->link = &rx->sdata->deflink;
4253 ieee80211_sta_reorder_release(sta->sdata, tid_agg_rx, &frames);
4262 drv_event_callback(rx.local, rx.sdata, &event);
4290 local = sta->sdata->local;
4311 ieee80211_release_reorder_frames(sta->sdata, tid_agg_rx,
4316 ieee80211_release_reorder_frames(sta->sdata, tid_agg_rx, ssn,
4340 ieee80211_sta_reorder_release(sta->sdata, tid_agg_rx, &frames);
4362 struct ieee80211_sub_if_data *sdata = rx->sdata;
4366 u8 *bssid = ieee80211_get_bssid(hdr, skb->len, sdata->vif.type);
4370 switch (sdata->vif.type) {
4372 if (!bssid && !sdata->u.mgd.use_4addr)
4379 return ieee80211_is_our_addr(sdata, hdr->addr1, &rx->link_id);
4383 if (ether_addr_equal(sdata->vif.addr, hdr->addr2) ||
4384 ether_addr_equal(sdata->u.ibss.bssid, hdr->addr2) ||
4389 if (!ieee80211_bssid_match(bssid, sdata->u.ibss.bssid))
4392 !ether_addr_equal(sdata->vif.addr, hdr->addr1))
4400 ieee80211_ibss_rx_no_sta(sdata, bssid, hdr->addr2,
4412 !ether_addr_equal(sdata->dev->dev_addr, hdr->addr1))
4420 ieee80211_ocb_rx_no_sta(sdata, bssid, hdr->addr2,
4425 if (ether_addr_equal(sdata->vif.addr, hdr->addr2))
4429 return ether_addr_equal(sdata->vif.addr, hdr->addr1);
4433 return ieee80211_is_our_addr(sdata, hdr->addr1,
4437 !ieee80211_is_our_addr(sdata, bssid, NULL)) {
4445 !ieee80211_is_our_addr(sdata, hdr->addr1,
4503 struct ieee80211_sub_if_data *sdata = sta->sdata;
4504 struct ieee80211_local *local = sdata->local;
4507 .dev = sdata->dev,
4508 .vif_type = sdata->vif.type,
4509 .control_port_protocol = sdata->control_port_protocol,
4522 ether_addr_copy(fastrx.vif_addr, sdata->vif.addr);
4531 switch (sdata->vif.type) {
4544 if (sdata->u.mgd.use_4addr && !sta->sta.tdls) {
4551 if (!sdata->u.mgd.powersave)
4573 !(sdata->flags & IEEE80211_SDATA_DONT_BRIDGE_PACKETS) &&
4574 (sdata->vif.type != NL80211_IFTYPE_AP_VLAN ||
4575 !sdata->u.vlan.sta);
4577 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN &&
4578 sdata->u.vlan.sta) {
4602 key = rcu_dereference(sdata->default_unicast_key);
4633 offload_flags = get_bss_sdata(sdata)->vif.offload_flags;
4642 drv_sta_set_decap_offload(local, sdata, &sta->sta, assign);
4666 void __ieee80211_check_fast_rx_iface(struct ieee80211_sub_if_data *sdata)
4668 struct ieee80211_local *local = sdata->local;
4674 if (sdata != sta->sdata &&
4675 (!sta->sdata->bss || sta->sdata->bss != sdata->bss))
4681 void ieee80211_check_fast_rx_iface(struct ieee80211_sub_if_data *sdata)
4683 struct ieee80211_local *local = sdata->local;
4686 __ieee80211_check_fast_rx_iface(sdata);
4767 sta_info_get(rx->sdata, da)) {
4862 if (!ieee80211_vif_is_mesh(&rx->sdata->vif) &&
4902 if (ieee80211_vif_is_mesh(&rx->sdata->vif)) {
4915 res = ieee80211_rx_mesh_data(rx->sdata, rx->sta, rx->skb);
4950 struct ieee80211_sub_if_data *sdata = rx->sdata;
4983 sdata->name);
5003 ether_addr_copy(hdr->addr1, rx->sdata->vif.addr);
5012 ether_addr_copy(hdr->addr3, rx->sdata->vif.addr);
5087 link_sta = link_sta_info_get_bss(rx->sdata, hdr->addr2);
5094 sta = sta_info_get_bss(rx->sdata, hdr->addr2);
5116 struct ieee80211_sub_if_data *sdata;
5182 link_sta = link_sta_info_get_bss(rx.sdata,
5203 rx.sdata = prev_sta->sdata;
5216 rx.sdata = prev_sta->sdata;
5231 list_for_each_entry_rcu(sdata, &local->interfaces, list) {
5232 if (!ieee80211_sdata_running(sdata))
5235 if (sdata->vif.type == NL80211_IFTYPE_MONITOR ||
5236 sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
5246 prev = sdata;
5250 rx.sdata = prev;
5253 prev = sdata;
5257 rx.sdata = prev;