Lines Matching defs:sdata

60 	chanctx_conf = rcu_dereference(tx->sdata->vif.bss_conf.chanctx_conf);
145 if (tx->sdata->vif.bss_conf.basic_rates & BIT(i))
152 if (tx->sdata->deflink.operating_11g_mode)
188 tx->sdata->vif.bss_conf.use_short_preamble,
198 tx->sdata->vif.bss_conf.use_short_preamble,
237 if (tx->sdata->vif.type != NL80211_IFTYPE_STATION)
243 ifmgd = &tx->sdata->u.mgd;
295 test_bit(SDATA_STATE_OFFCHANNEL, &tx->sdata->state) &&
311 if (tx->sdata->vif.type == NL80211_IFTYPE_OCB)
324 sdata_info(tx->sdata,
332 ieee80211_vif_get_num_mcast_if(tx->sdata) == 0)) {
351 struct ieee80211_sub_if_data *sdata;
354 list_for_each_entry_rcu(sdata, &local->interfaces, list) {
357 if (sdata->vif.type == NL80211_IFTYPE_AP)
358 ps = &sdata->u.ap.ps;
359 else if (ieee80211_vif_is_mesh(&sdata->vif))
360 ps = &sdata->u.mesh.ps;
410 if (tx->sdata->vif.type == NL80211_IFTYPE_AP ||
411 tx->sdata->vif.type == NL80211_IFTYPE_AP_VLAN) {
412 if (!tx->sdata->bss)
415 ps = &tx->sdata->bss->ps;
416 } else if (ieee80211_vif_is_mesh(&tx->sdata->vif)) {
417 ps = &tx->sdata->u.mesh.ps;
431 info->hw_queue = tx->sdata->vif.cab_queue;
448 ps_dbg(tx->sdata,
497 ps_dbg(sta->sdata, "STA %pM aid %d: PS buffer for AC %d\n",
518 ps_dbg(tx->sdata,
526 info->control.vif = &tx->sdata->vif;
545 ps_dbg(tx->sdata,
570 if (unlikely(tx->sdata->control_port_protocol == tx->skb->protocol)) {
571 if (tx->sdata->control_port_no_encrypt)
590 link = &tx->sdata->deflink;
592 link = rcu_dereference(tx->sdata->link[link_id]);
627 (key = rcu_dereference(tx->sdata->default_unicast_key)))
669 tx->skb->protocol != tx->sdata->control_port_protocol)
705 txrc.bss_conf = &tx->sdata->vif.bss_conf;
708 txrc.rate_idx_mask = tx->sdata->rc_rateidx_mask[info->band];
710 if (tx->sdata->rc_has_mcs_mask[info->band])
712 tx->sdata->rc_rateidx_mcs_mask[info->band];
714 txrc.bss = (tx->sdata->vif.type == NL80211_IFTYPE_AP ||
715 tx->sdata->vif.type == NL80211_IFTYPE_MESH_POINT ||
716 tx->sdata->vif.type == NL80211_IFTYPE_ADHOC ||
717 tx->sdata->vif.type == NL80211_IFTYPE_OCB);
725 info->control.use_cts_prot = tx->sdata->vif.bss_conf.use_cts_prot;
733 if (tx->sdata->vif.bss_conf.use_short_preamble &&
756 tx->sdata->name,
765 rate_control_get_rate(tx->sdata, tx->sta, &txrc);
852 tx->sdata->mld_mcast_seq += 0x10;
853 hdr->seq_ctrl = cpu_to_le16(tx->sdata->mld_mcast_seq);
868 hdr->seq_ctrl = cpu_to_le16(tx->sdata->sequence_number);
869 tx->sdata->sequence_number += 0x10;
1154 ps_dbg(tx->sta->sdata,
1158 info->control.vif = &tx->sdata->vif;
1178 void ieee80211_aggr_check(struct ieee80211_sub_if_data *sdata,
1181 struct rate_control_ref *ref = sdata->local->rate_ctrl;
1189 skb->protocol == sdata->control_port_protocol)
1205 ieee80211_tx_prepare(struct ieee80211_sub_if_data *sdata,
1209 struct ieee80211_local *local = sdata->local;
1218 tx->sdata = sdata;
1234 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) {
1235 tx->sta = rcu_dereference(sdata->u.vlan.sta);
1236 if (!tx->sta && sdata->wdev.use_4addr)
1238 } else if (tx->sdata->control_port_protocol == tx->skb->protocol) {
1239 tx->sta = sta_info_get_bss(sdata, hdr->addr1);
1242 tx->sta = sta_info_get(sdata, hdr->addr1);
1256 ieee80211_aggr_check(sdata, tx->sta, skb);
1481 struct ieee80211_sub_if_data *sdata)
1488 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_AP_VLAN))
1491 ap = container_of(sdata->bss, struct ieee80211_sub_if_data, u.ap);
1500 fq_tin_filter(fq, tin, fq_vlan_filter_func, &sdata->vif,
1505 void ieee80211_txq_init(struct ieee80211_sub_if_data *sdata,
1515 txqi->txq.vif = &sdata->vif;
1518 sdata->vif.txq = &txqi->txq;
1526 if (sdata->vif.type == NL80211_IFTYPE_STATION) {
1528 if (!ieee80211_hw_check(&sdata->local->hw,
1531 } else if (!ieee80211_hw_check(&sdata->local->hw,
1644 struct ieee80211_sub_if_data *sdata,
1651 if (sdata->vif.type == NL80211_IFTYPE_MONITOR)
1654 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
1655 sdata = container_of(sdata->bss,
1658 vif = &sdata->vif;
1752 struct ieee80211_sub_if_data *sdata;
1762 sdata = vif_to_sdata(info->control.vif);
1766 switch (sdata->vif.type) {
1768 if (sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE) {
1769 vif = &sdata->vif;
1772 sdata = rcu_dereference(local->monitor_sdata);
1773 if (sdata) {
1774 vif = &sdata->vif;
1784 sdata = container_of(sdata->bss,
1788 vif = &sdata->vif;
1897 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
1902 if (ieee80211_tx_prepare(sdata, &tx, NULL, skb) == TX_DROP)
1934 static bool ieee80211_tx(struct ieee80211_sub_if_data *sdata,
1938 struct ieee80211_local *local = sdata->local;
1950 res_prepare = ieee80211_tx_prepare(sdata, &tx, sta, skb);
1963 sdata->vif.hw_queue[skb_get_queue_mapping(skb)];
1968 if (ieee80211_queue_skb(local, sdata, tx.sta, tx.skb))
1985 static int ieee80211_skb_resize(struct ieee80211_sub_if_data *sdata,
1990 struct ieee80211_local *local = sdata->local;
1996 sdata->crypto_tx_tailroom_needed_cnt);
2022 void ieee80211_xmit(struct ieee80211_sub_if_data *sdata,
2025 struct ieee80211_local *local = sdata->local;
2044 if (ieee80211_skb_resize(sdata, skb, headroom, encrypt)) {
2051 info->control.vif = &sdata->vif;
2053 if (ieee80211_vif_is_mesh(&sdata->vif)) {
2056 if (mesh_nexthop_resolve(sdata, skb))
2059 ieee80211_mps_set_frame_flags(sdata, NULL, hdr);
2063 ieee80211_set_qos_hdr(sdata, skb);
2064 ieee80211_tx(sdata, sta, skb, false);
2296 struct ieee80211_sub_if_data *tmp_sdata, *sdata;
2301 sdata = IEEE80211_DEV_TO_SUB_IF(dev);
2302 if (unlikely(!ieee80211_sdata_running(sdata)))
2371 sdata = tmp_sdata;
2376 chanctx_conf = rcu_dereference(sdata->vif.bss_conf.chanctx_conf);
2408 sdata->vif.type))
2419 ieee80211_select_queue_80211(sdata, skb, hdr);
2433 ieee80211_xmit(sdata, NULL, skb);
2454 int ieee80211_lookup_ra_sta(struct ieee80211_sub_if_data *sdata,
2460 switch (sdata->vif.type) {
2462 sta = rcu_dereference(sdata->u.vlan.sta);
2466 } else if (sdata->wdev.use_4addr) {
2477 sta = sta_info_get_bss(sdata, skb->data);
2486 if (sdata->wdev.wiphy->flags & WIPHY_FLAG_SUPPORTS_TDLS) {
2487 sta = sta_info_get(sdata, skb->data);
2508 sta = sta_info_get(sdata, sdata->vif.cfg.ap_addr);
2559 * @sdata: virtual interface to build the header for
2578 static struct sk_buff *ieee80211_build_hdr(struct ieee80211_sub_if_data *sdata,
2583 struct ieee80211_local *local = sdata->local;
2615 if (!ieee80211_vif_is_mld(&sdata->vif))
2617 rcu_dereference(sdata->vif.bss_conf.chanctx_conf);
2619 switch (sdata->vif.type) {
2621 if (sdata->wdev.use_4addr) {
2625 memcpy(hdr.addr2, sdata->vif.addr, ETH_ALEN);
2632 if (!ieee80211_vif_is_mld(&sdata->vif)) {
2636 ap_sdata = container_of(sdata->bss,
2642 if (sdata->wdev.use_4addr)
2650 if (ieee80211_vif_is_mld(&sdata->vif) && sta && !sta->sta.mlo) {
2654 link = rcu_dereference(sdata->link[link_id]);
2662 memcpy(hdr.addr2, sdata->vif.addr, ETH_ALEN);
2666 conf = rcu_dereference(sdata->vif.link_conf[link_id]);
2684 mpath = mesh_path_lookup(sdata, skb->data);
2695 mppath = mpp_path_lookup(sdata, skb->data);
2701 mesh_path_del(sdata, mpath->dst);
2710 if (ether_addr_equal(sdata->vif.addr, skb->data + ETH_ALEN) &&
2714 meshhdrlen = ieee80211_new_mesh_header(sdata, &mesh_hdr,
2731 mesh_da, sdata->vif.addr);
2735 sdata, &mesh_hdr,
2740 sdata, &mesh_hdr, skb->data,
2766 link = rcu_dereference(sdata->link[tdls_link_id]);
2773 } else if (sdata->u.mgd.use_4addr &&
2774 cpu_to_be16(ethertype) != sdata->control_port_protocol) {
2778 memcpy(hdr.addr1, sdata->deflink.u.mgd.bssid, ETH_ALEN);
2779 memcpy(hdr.addr2, sdata->vif.addr, ETH_ALEN);
2786 memcpy(hdr.addr1, sdata->vif.cfg.ap_addr, ETH_ALEN);
2803 memcpy(hdr.addr3, sdata->u.ibss.bssid, ETH_ALEN);
2812 if (!ieee80211_vif_is_mld(&sdata->vif)) {
2828 } else if (ieee80211_vif_is_mesh(&sdata->vif)) {
2843 if (unlikely(!ieee80211_vif_is_mesh(&sdata->vif) &&
2844 (sdata->vif.type != NL80211_IFTYPE_OCB) &&
2846 (cpu_to_be16(ethertype) != sdata->control_port_protocol ||
2847 !ieee80211_is_our_addr(sdata, skb->data + ETH_ALEN, NULL)))) {
2850 sdata->name, hdr.addr1);
2911 if (ieee80211_skb_resize(sdata, skb, head_need, ENCRYPT_DATA)) {
2967 sdata->name, hdr.addr1,
3008 struct ieee80211_sub_if_data *sdata = sta->sdata;
3016 if (ieee80211_vif_is_mesh(&sdata->vif))
3017 mesh_fast_tx_flush_sta(sdata, sta);
3034 sdata->vif.type == NL80211_IFTYPE_STATION)
3046 if (sdata->noack_map)
3054 if (!ieee80211_vif_is_mld(&sdata->vif)) {
3057 rcu_dereference(sdata->vif.bss_conf.chanctx_conf);
3071 switch (sdata->vif.type) {
3076 memcpy(hdr->addr3, sdata->u.ibss.bssid, ETH_ALEN);
3090 link = rcu_dereference(sdata->link[tdls_link_id]);
3098 if (sdata->u.mgd.use_4addr) {
3103 memcpy(hdr->addr1, sdata->deflink.u.mgd.bssid, ETH_ALEN);
3104 memcpy(hdr->addr2, sdata->vif.addr, ETH_ALEN);
3112 memcpy(hdr->addr1, sdata->vif.cfg.ap_addr, ETH_ALEN);
3118 if (sdata->wdev.use_4addr) {
3123 memcpy(hdr->addr2, sdata->vif.addr, ETH_ALEN);
3134 if (sta->sta.mlo || !ieee80211_vif_is_mld(&sdata->vif)) {
3135 memcpy(hdr->addr2, sdata->vif.addr, ETH_ALEN);
3141 link = rcu_dereference(sdata->link[link_id]);
3169 build.key = rcu_access_pointer(sdata->default_unicast_key);
3263 void ieee80211_check_fast_xmit_iface(struct ieee80211_sub_if_data *sdata)
3265 struct ieee80211_local *local = sdata->local;
3271 if (sdata != sta->sdata &&
3272 (!sta->sdata->bss || sta->sdata->bss != sdata->bss))
3310 static bool ieee80211_amsdu_prepare_head(struct ieee80211_sub_if_data *sdata,
3314 struct ieee80211_local *local = sdata->local;
3351 switch (sdata->vif.type) {
3353 bssid = sdata->vif.cfg.ap_addr;
3357 bssid = sdata->vif.addr;
3377 static bool ieee80211_amsdu_aggregate(struct ieee80211_sub_if_data *sdata,
3383 struct ieee80211_local *local = sdata->local;
3407 if (sdata->vif.offload_flags & IEEE80211_OFFLOAD_ENCAP_ENABLED)
3410 if (ieee80211_vif_is_mesh(&sdata->vif))
3469 if (!ieee80211_amsdu_prepare_head(sdata, fast_tx, head))
3528 ieee80211_xmit_fast_finish(struct ieee80211_sub_if_data *sdata,
3552 hdr->seq_ctrl = cpu_to_le16(sdata->sequence_number);
3553 sdata->sequence_number += 0x10;
3562 info->hw_queue = sdata->vif.hw_queue[skb_get_queue_mapping(skb)];
3595 ieee80211_sdata_netdev_features(struct ieee80211_sub_if_data *sdata)
3597 if (sdata->vif.type != NL80211_IFTYPE_AP_VLAN)
3598 return sdata->vif.netdev_features;
3600 if (!sdata->bss)
3603 sdata = container_of(sdata->bss, struct ieee80211_sub_if_data, u.ap);
3604 return sdata->vif.netdev_features;
3646 void __ieee80211_xmit_fast(struct ieee80211_sub_if_data *sdata,
3652 struct ieee80211_local *local = sdata->local;
3657 int hw_headroom = sdata->local->hw.extra_tx_headroom;
3665 ieee80211_amsdu_aggregate(sdata, sta, fast_tx, skb, da, sa))
3672 if (unlikely(ieee80211_skb_resize(sdata, skb,
3686 info->control.vif = &sdata->vif;
3708 tx.sdata = sdata;
3712 if (ieee80211_queue_skb(local, sdata, sta, skb))
3716 r = ieee80211_xmit_fast_finish(sdata, sta, fast_tx->pn_offs,
3722 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
3723 sdata = container_of(sdata->bss,
3727 ieee80211_tx_frags(local, &sdata->vif, sta, &tx.skbs, false);
3734 static bool ieee80211_xmit_fast(struct ieee80211_sub_if_data *sdata,
3747 if (cpu_to_be16(ethertype) == sdata->control_port_protocol)
3772 skb = ieee80211_tx_skb_fixup(skb, ieee80211_sdata_netdev_features(sdata));
3778 __ieee80211_xmit_fast(sdata, sta, fast_tx, skb, tid_tx,
3847 tx.sdata = vif_to_sdata(info->control.vif);
3857 !ieee80211_vif_is_mesh(&tx.sdata->vif) &&
3858 tx.sdata->vif.type != NL80211_IFTYPE_OCB &&
3863 !ieee80211_is_our_addr(tx.sdata, hdr->addr2,
3905 r = ieee80211_xmit_fast_finish(sta->sdata, sta, pn_offs,
3933 switch (tx.sdata->vif.type) {
3935 if (tx.sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE) {
3936 vif = &tx.sdata->vif;
3939 tx.sdata = rcu_dereference(local->monitor_sdata);
3940 if (tx.sdata) {
3941 vif = &tx.sdata->vif;
3952 tx.sdata = container_of(tx.sdata->bss,
3956 vif = &tx.sdata->vif;
4254 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
4255 struct ieee80211_local *local = sdata->local;
4260 if (unlikely(!ieee80211_sdata_running(sdata) || skb->len < ETH_HLEN)) {
4265 sk_pacing_shift_update(skb->sk, sdata->local->hw.tx_sk_pacing_shift);
4269 if (ieee80211_vif_is_mesh(&sdata->vif) &&
4271 ieee80211_mesh_xmit_fast(sdata, skb, ctrl_flags))
4274 if (ieee80211_lookup_ra_sta(sdata, skb, &sta))
4280 skb_set_queue_mapping(skb, ieee80211_select_queue(sdata, sta, skb));
4281 ieee80211_aggr_check(sdata, sta, skb);
4289 ieee80211_xmit_fast(sdata, sta, fast_tx, skb))
4306 if (skb->protocol == sdata->control_port_protocol)
4309 skb = ieee80211_build_hdr(sdata, skb, info_flags,
4318 ieee80211_xmit(sdata, sta, skb);
4348 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
4353 switch (sdata->vif.type) {
4355 if (sdata->u.vlan.sta)
4357 if (sdata->wdev.use_4addr)
4362 if (!sdata->bss->multicast_to_unicast)
4389 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
4390 struct ieee80211_local *local = sdata->local;
4398 if (sdata != sta->sdata)
4436 static void ieee80211_mlo_multicast_tx_one(struct ieee80211_sub_if_data *sdata,
4447 __ieee80211_subif_start_xmit(out, sdata->dev, 0, ctrl_flags, NULL);
4453 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
4454 unsigned long links = sdata->vif.active_links;
4462 __ieee80211_subif_start_xmit(skb, sdata->dev, 0, ctrl_flags,
4468 ieee80211_mlo_multicast_tx_one(sdata, skb, ctrl_flags, link);
4484 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
4490 if (unlikely(!ieee80211_sdata_running(sdata))) {
4504 } else if (ieee80211_vif_is_mld(&sdata->vif) &&
4505 sdata->vif.type == NL80211_IFTYPE_AP &&
4506 !ieee80211_hw_check(&sdata->local->hw, MLO_MCAST_MULTI_LINK_TX)) {
4520 static bool __ieee80211_tx_8023(struct ieee80211_sub_if_data *sdata,
4524 struct ieee80211_local *local = sdata->local;
4557 static bool ieee80211_tx_8023(struct ieee80211_sub_if_data *sdata,
4561 struct ieee80211_local *local = sdata->local;
4565 if (ieee80211_queue_skb(local, sdata, sta, skb))
4570 if (!__ieee80211_tx_8023(sdata, skb, sta, txpending))
4577 static void ieee80211_8023_xmit(struct ieee80211_sub_if_data *sdata,
4582 struct ieee80211_local *local = sdata->local;
4589 queue = ieee80211_select_queue(sdata, sta, skb);
4593 test_bit(SDATA_STATE_OFFCHANNEL, &sdata->state))
4600 ieee80211_aggr_check(sdata, sta, skb);
4617 skb = ieee80211_tx_skb_fixup(skb, ieee80211_sdata_netdev_features(sdata));
4624 info->hw_queue = sdata->vif.hw_queue[queue];
4626 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
4627 sdata = container_of(sdata->bss,
4631 info->control.vif = &sdata->vif;
4654 ieee80211_tx_8023(sdata, skb, sta, false);
4665 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
4670 if (unlikely(!ieee80211_sdata_running(sdata) || skb->len < ETH_HLEN)) {
4677 if (ieee80211_lookup_ra_sta(sdata, skb, &sta)) {
4684 sdata->control_port_protocol == ehdr->h_proto))
4689 key = rcu_dereference(sdata->default_unicast_key);
4695 sk_pacing_shift_update(skb->sk, sdata->local->hw.tx_sk_pacing_shift);
4696 ieee80211_8023_xmit(sdata, dev, sta, key, skb);
4708 ieee80211_build_data_template(struct ieee80211_sub_if_data *sdata,
4713 .local = sdata->local,
4714 .sdata = sdata,
4720 if (ieee80211_lookup_ra_sta(sdata, skb, &sta)) {
4726 skb = ieee80211_build_hdr(sdata, skb, info_flags, sta,
4732 tx.sta = sta_info_get(sdata, hdr->addr1);
4770 struct ieee80211_sub_if_data *sdata;
4776 sdata = vif_to_sdata(info->control.vif);
4780 if (!ieee80211_vif_is_mld(&sdata->vif)) {
4782 rcu_dereference(sdata->vif.bss_conf.chanctx_conf);
4789 result = ieee80211_tx(sdata, NULL, skb, true);
4791 if (ieee80211_lookup_ra_sta(sdata, skb, &sta)) {
4799 result = ieee80211_tx_8023(sdata, skb, sta, true);
4807 sta = sta_info_get(sdata, hdr->addr1);
4864 static void __ieee80211_beacon_add_tim(struct ieee80211_sub_if_data *sdata,
4935 static int ieee80211_beacon_add_tim(struct ieee80211_sub_if_data *sdata,
4940 struct ieee80211_local *local = sdata->local;
4950 __ieee80211_beacon_add_tim(sdata, link, ps, skb, is_template);
4953 __ieee80211_beacon_add_tim(sdata, link, ps, skb, is_template);
4960 static void ieee80211_set_beacon_cntdwn(struct ieee80211_sub_if_data *sdata,
4970 switch (sdata->vif.type) {
5001 if (sdata->vif.type == NL80211_IFTYPE_AP && resp) {
5021 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
5027 if (sdata->vif.type == NL80211_IFTYPE_AP)
5028 beacon = rcu_dereference(sdata->deflink.u.ap.beacon);
5029 else if (sdata->vif.type == NL80211_IFTYPE_ADHOC)
5030 beacon = rcu_dereference(sdata->u.ibss.presp);
5031 else if (ieee80211_vif_is_mesh(&sdata->vif))
5032 beacon = rcu_dereference(sdata->u.mesh.beacon);
5047 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
5052 if (sdata->vif.type == NL80211_IFTYPE_AP)
5053 beacon = rcu_dereference(sdata->deflink.u.ap.beacon);
5054 else if (sdata->vif.type == NL80211_IFTYPE_ADHOC)
5055 beacon = rcu_dereference(sdata->u.ibss.presp);
5056 else if (ieee80211_vif_is_mesh(&sdata->vif))
5057 beacon = rcu_dereference(sdata->u.mesh.beacon);
5072 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
5078 if (!ieee80211_sdata_running(sdata))
5083 beacon = rcu_dereference(sdata->deflink.u.ap.beacon);
5089 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
5098 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
5129 struct ieee80211_sub_if_data *sdata,
5151 tx.sdata = sdata;
5175 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
5206 if (sdata->beacon_rate_set && sdata->beacon_rateidx_mask[band])
5207 txrc.rate_idx_mask = sdata->beacon_rateidx_mask[band];
5209 txrc.rate_idx_mask = sdata->rc_rateidx_mask[band];
5211 rate_control_get_rate(sdata, NULL, &txrc);
5261 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
5262 struct ieee80211_if_ap *ap = &sdata->u.ap;
5271 ieee80211_set_beacon_cntdwn(sdata, beacon, link);
5290 ieee80211_beacon_add_tim(sdata, link, &ap->ps, skb, is_template);
5309 if (ieee80211_beacon_protect(skb, local, sdata, link) < 0)
5366 struct ieee80211_sub_if_data *sdata = NULL;
5372 sdata = vif_to_sdata(vif);
5373 link = rcu_dereference(sdata->link[link_id]);
5379 if (!ieee80211_sdata_running(sdata) || !chanctx_conf)
5385 if (sdata->vif.type == NL80211_IFTYPE_AP) {
5413 } else if (sdata->vif.type == NL80211_IFTYPE_ADHOC) {
5414 struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
5425 ieee80211_set_beacon_cntdwn(sdata, beacon, link);
5441 } else if (ieee80211_vif_is_mesh(&sdata->vif)) {
5442 struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
5457 ieee80211_set_beacon_cntdwn(sdata, beacon, link);
5461 ifmsh->sync_ops->adjust_tsf(sdata, beacon);
5472 ieee80211_beacon_add_tim(sdata, link, &ifmsh->ps, skb,
5588 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
5590 if (sdata->vif.type != NL80211_IFTYPE_AP)
5594 presp = rcu_dereference(sdata->deflink.u.ap.probe_resp);
5618 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
5620 if (sdata->vif.type != NL80211_IFTYPE_AP)
5624 tmpl = rcu_dereference(sdata->deflink.u.ap.fils_discovery);
5630 skb = dev_alloc_skb(sdata->local->hw.extra_tx_headroom + tmpl->len);
5632 skb_reserve(skb, sdata->local->hw.extra_tx_headroom);
5647 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
5649 if (sdata->vif.type != NL80211_IFTYPE_AP)
5653 tmpl = rcu_dereference(sdata->deflink.u.ap.unsol_bcast_probe_resp);
5659 skb = dev_alloc_skb(sdata->local->hw.extra_tx_headroom + tmpl->len);
5661 skb_reserve(skb, sdata->local->hw.extra_tx_headroom);
5673 struct ieee80211_sub_if_data *sdata;
5681 sdata = vif_to_sdata(vif);
5682 local = sdata->local;
5693 pspoll->aid = cpu_to_le16(sdata->vif.cfg.aid);
5698 memcpy(pspoll->bssid, sdata->deflink.u.mgd.bssid, ETH_ALEN);
5709 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
5710 struct ieee80211_local *local = sdata->local;
5728 sta = sta_info_get(sdata, vif->cfg.ap_addr);
5733 link = rcu_dereference(sdata->link[link_id]);
5851 struct ieee80211_sub_if_data *sdata;
5856 sdata = vif_to_sdata(vif);
5859 chanctx_conf = rcu_dereference(sdata->vif.bss_conf.chanctx_conf);
5864 if (sdata->vif.type == NL80211_IFTYPE_AP) {
5866 rcu_dereference(sdata->deflink.u.ap.beacon);
5871 ps = &sdata->u.ap.ps;
5872 } else if (ieee80211_vif_is_mesh(&sdata->vif)) {
5873 ps = &sdata->u.mesh.ps;
5897 if (sdata->vif.type == NL80211_IFTYPE_AP)
5898 sdata = IEEE80211_DEV_TO_SUB_IF(skb->dev);
5899 if (!ieee80211_tx_prepare(sdata, &tx, NULL, skb))
5921 struct ieee80211_sub_if_data *sdata = sta->sdata;
5922 struct ieee80211_local *local = sdata->local;
5929 switch (sdata->vif.type) {
5948 sdata_err(sdata, "TID reservation already active\n");
5953 ieee80211_stop_vif_queues(sdata->local, sdata,
5965 queues = BIT(sdata->vif.hw_queue[ieee802_1d_to_ac[tid]]);
5966 __ieee80211_flush_queues(local, sdata, queues, false);
5970 ieee80211_wake_vif_queues(local, sdata,
5985 struct ieee80211_sub_if_data *sdata = sta->sdata;
5987 lockdep_assert_held(&sdata->local->sta_mtx);
5990 switch (sdata->vif.type) {
6001 sdata_err(sdata, "TID to unreserve (%d) isn't reserved\n", tid);
6009 void __ieee80211_tx_skb_tid_band(struct ieee80211_sub_if_data *sdata,
6021 skb->dev = sdata->dev;
6027 if (!ieee80211_vif_is_mld(&sdata->vif)) {
6031 } else if (memcmp(sdata->vif.addr, hdr->addr2, ETH_ALEN) == 0) {
6037 for (link = 0; link < ARRAY_SIZE(sdata->vif.link_conf); link++) {
6040 link_conf = rcu_dereference(sdata->vif.link_conf[link]);
6048 if (WARN_ON_ONCE(link == ARRAY_SIZE(sdata->vif.link_conf)))
6049 link = ffs(sdata->vif.active_links) - 1;
6062 ieee80211_xmit(sdata, NULL, skb);
6066 void ieee80211_tx_skb_tid(struct ieee80211_sub_if_data *sdata,
6073 if (!ieee80211_vif_is_mld(&sdata->vif)) {
6076 rcu_dereference(sdata->vif.bss_conf.chanctx_conf);
6085 !(sdata->vif.active_links & BIT(link_id)));
6090 __ieee80211_tx_skb_tid_band(sdata, skb, tid, link_id, band);
6099 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
6100 struct ieee80211_local *local = sdata->local;
6111 if (proto != sdata->control_port_protocol &&
6115 if (proto == sdata->control_port_protocol)
6143 memcpy(ehdr->h_source, sdata->vif.addr, ETH_ALEN);
6151 link_conf = rcu_dereference(sdata->vif.link_conf[link_id]);
6176 err = ieee80211_lookup_ra_sta(sdata, skb, &sta);
6184 u16 queue = ieee80211_select_queue(sdata, sta, skb);
6193 memcpy(ehdr->h_source, sdata->vif.addr, ETH_ALEN);
6213 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
6214 struct ieee80211_local *local = sdata->local;