Lines Matching refs:sdata
15 struct ieee80211_sub_if_data *sdata; in ieee80211_chanctx_num_assigned() local
20 list_for_each_entry(sdata, &ctx->assigned_vifs, assigned_chanctx_list) in ieee80211_chanctx_num_assigned()
29 struct ieee80211_sub_if_data *sdata; in ieee80211_chanctx_num_reserved() local
34 list_for_each_entry(sdata, &ctx->reserved_vifs, reserved_chanctx_list) in ieee80211_chanctx_num_reserved()
67 ieee80211_vif_get_chanctx(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_get_chanctx() argument
69 struct ieee80211_local *local __maybe_unused = sdata->local; in ieee80211_vif_get_chanctx()
72 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_vif_get_chanctx()
85 struct ieee80211_sub_if_data *sdata; in ieee80211_chanctx_reserved_chandef() local
89 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_chanctx_reserved_chandef()
92 compat = &sdata->reserved_chandef; in ieee80211_chanctx_reserved_chandef()
94 compat = cfg80211_chandef_compatible(&sdata->reserved_chandef, in ieee80211_chanctx_reserved_chandef()
108 struct ieee80211_sub_if_data *sdata; in ieee80211_chanctx_non_reserved_chandef() local
112 list_for_each_entry(sdata, &ctx->assigned_vifs, in ieee80211_chanctx_non_reserved_chandef()
114 if (sdata->reserved_chanctx != NULL) in ieee80211_chanctx_non_reserved_chandef()
118 compat = &sdata->vif.bss_conf.chandef; in ieee80211_chanctx_non_reserved_chandef()
121 &sdata->vif.bss_conf.chandef, compat); in ieee80211_chanctx_non_reserved_chandef()
223 ieee80211_get_max_required_bw(struct ieee80211_sub_if_data *sdata) in ieee80211_get_max_required_bw() argument
229 list_for_each_entry_rcu(sta, &sdata->local->sta_list, list) { in ieee80211_get_max_required_bw()
230 if (sdata != sta->sdata && in ieee80211_get_max_required_bw()
231 !(sta->sdata->bss && sta->sdata->bss == sdata->bss)) in ieee80211_get_max_required_bw()
248 struct ieee80211_sub_if_data *sdata; in ieee80211_get_chanctx_max_required_bw() local
252 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_get_chanctx_max_required_bw()
253 struct ieee80211_vif *vif = &sdata->vif; in ieee80211_get_chanctx_max_required_bw()
256 if (!ieee80211_sdata_running(sdata)) in ieee80211_get_chanctx_max_required_bw()
259 if (rcu_access_pointer(sdata->vif.chanctx_conf) != conf) in ieee80211_get_chanctx_max_required_bw()
265 width = ieee80211_get_max_required_bw(sdata); in ieee80211_get_chanctx_max_required_bw()
287 sdata = rcu_dereference(local->monitor_sdata); in ieee80211_get_chanctx_max_required_bw()
288 if (sdata && rcu_access_pointer(sdata->vif.chanctx_conf) == conf) in ieee80211_get_chanctx_max_required_bw()
393 struct ieee80211_sub_if_data *sdata; in ieee80211_is_radar_required() local
398 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_is_radar_required()
399 if (sdata->radar_required) { in ieee80211_is_radar_required()
414 struct ieee80211_sub_if_data *sdata; in ieee80211_chanctx_radar_required() local
421 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_chanctx_radar_required()
422 if (!ieee80211_sdata_running(sdata)) in ieee80211_chanctx_radar_required()
424 if (rcu_access_pointer(sdata->vif.chanctx_conf) != conf) in ieee80211_chanctx_radar_required()
426 if (!sdata->radar_required) in ieee80211_chanctx_radar_required()
561 struct ieee80211_sub_if_data *sdata; in ieee80211_recalc_chanctx_chantype() local
567 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_recalc_chanctx_chantype()
569 if (!ieee80211_sdata_running(sdata)) in ieee80211_recalc_chanctx_chantype()
571 if (rcu_access_pointer(sdata->vif.chanctx_conf) != conf) in ieee80211_recalc_chanctx_chantype()
573 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) in ieee80211_recalc_chanctx_chantype()
577 compat = &sdata->vif.bss_conf.chandef; in ieee80211_recalc_chanctx_chantype()
580 &sdata->vif.bss_conf.chandef, compat); in ieee80211_recalc_chanctx_chantype()
616 static int ieee80211_assign_vif_chanctx(struct ieee80211_sub_if_data *sdata, in ieee80211_assign_vif_chanctx() argument
619 struct ieee80211_local *local = sdata->local; in ieee80211_assign_vif_chanctx()
624 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_assign_vif_chanctx()
630 drv_unassign_vif_chanctx(local, sdata, curr_ctx); in ieee80211_assign_vif_chanctx()
632 list_del(&sdata->assigned_chanctx_list); in ieee80211_assign_vif_chanctx()
636 ret = drv_assign_vif_chanctx(local, sdata, new_ctx); in ieee80211_assign_vif_chanctx()
641 list_add(&sdata->assigned_chanctx_list, in ieee80211_assign_vif_chanctx()
646 rcu_assign_pointer(sdata->vif.chanctx_conf, conf); in ieee80211_assign_vif_chanctx()
648 sdata->vif.bss_conf.idle = !conf; in ieee80211_assign_vif_chanctx()
658 ieee80211_recalc_txpower(sdata, false); in ieee80211_assign_vif_chanctx()
662 if (sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE && in ieee80211_assign_vif_chanctx()
663 sdata->vif.type != NL80211_IFTYPE_MONITOR) in ieee80211_assign_vif_chanctx()
664 ieee80211_bss_info_change_notify(sdata, in ieee80211_assign_vif_chanctx()
673 struct ieee80211_sub_if_data *sdata; in ieee80211_recalc_smps_chanctx() local
682 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_recalc_smps_chanctx()
685 if (!ieee80211_sdata_running(sdata)) in ieee80211_recalc_smps_chanctx()
688 if (rcu_access_pointer(sdata->vif.chanctx_conf) != in ieee80211_recalc_smps_chanctx()
692 switch (sdata->vif.type) { in ieee80211_recalc_smps_chanctx()
696 if (!sdata->u.mgd.associated) in ieee80211_recalc_smps_chanctx()
711 switch (sdata->smps_mode) { in ieee80211_recalc_smps_chanctx()
714 sdata->smps_mode); in ieee80211_recalc_smps_chanctx()
717 needed_static = sdata->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
718 needed_dynamic = sdata->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
722 needed_dynamic = sdata->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
735 sdata = rcu_dereference(local->monitor_sdata); in ieee80211_recalc_smps_chanctx()
736 if (sdata && in ieee80211_recalc_smps_chanctx()
737 rcu_access_pointer(sdata->vif.chanctx_conf) == &chanctx->conf) in ieee80211_recalc_smps_chanctx()
762 __ieee80211_vif_copy_chanctx_to_vlans(struct ieee80211_sub_if_data *sdata, in __ieee80211_vif_copy_chanctx_to_vlans() argument
765 struct ieee80211_local *local __maybe_unused = sdata->local; in __ieee80211_vif_copy_chanctx_to_vlans()
769 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_AP)) in __ieee80211_vif_copy_chanctx_to_vlans()
780 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in __ieee80211_vif_copy_chanctx_to_vlans()
787 list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) in __ieee80211_vif_copy_chanctx_to_vlans()
791 void ieee80211_vif_copy_chanctx_to_vlans(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_copy_chanctx_to_vlans() argument
794 struct ieee80211_local *local = sdata->local; in ieee80211_vif_copy_chanctx_to_vlans()
798 __ieee80211_vif_copy_chanctx_to_vlans(sdata, clear); in ieee80211_vif_copy_chanctx_to_vlans()
803 int ieee80211_vif_unreserve_chanctx(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_unreserve_chanctx() argument
805 struct ieee80211_chanctx *ctx = sdata->reserved_chanctx; in ieee80211_vif_unreserve_chanctx()
807 lockdep_assert_held(&sdata->local->chanctx_mtx); in ieee80211_vif_unreserve_chanctx()
812 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_unreserve_chanctx()
813 sdata->reserved_chanctx = NULL; in ieee80211_vif_unreserve_chanctx()
815 if (ieee80211_chanctx_refcount(sdata->local, ctx) == 0) { in ieee80211_vif_unreserve_chanctx()
831 ieee80211_free_chanctx(sdata->local, ctx); in ieee80211_vif_unreserve_chanctx()
838 int ieee80211_vif_reserve_chanctx(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_reserve_chanctx() argument
843 struct ieee80211_local *local = sdata->local; in ieee80211_vif_reserve_chanctx()
848 curr_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_reserve_chanctx()
925 list_add(&sdata->reserved_chanctx_list, &new_ctx->reserved_vifs); in ieee80211_vif_reserve_chanctx()
926 sdata->reserved_chanctx = new_ctx; in ieee80211_vif_reserve_chanctx()
927 sdata->reserved_chandef = *chandef; in ieee80211_vif_reserve_chanctx()
928 sdata->reserved_radar_required = radar_required; in ieee80211_vif_reserve_chanctx()
929 sdata->reserved_ready = false; in ieee80211_vif_reserve_chanctx()
935 ieee80211_vif_chanctx_reservation_complete(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_chanctx_reservation_complete() argument
937 switch (sdata->vif.type) { in ieee80211_vif_chanctx_reservation_complete()
942 ieee80211_queue_work(&sdata->local->hw, in ieee80211_vif_chanctx_reservation_complete()
943 &sdata->csa_finalize_work); in ieee80211_vif_chanctx_reservation_complete()
946 ieee80211_queue_work(&sdata->local->hw, in ieee80211_vif_chanctx_reservation_complete()
947 &sdata->u.mgd.chswitch_work); in ieee80211_vif_chanctx_reservation_complete()
963 ieee80211_vif_update_chandef(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_update_chandef() argument
968 sdata->vif.bss_conf.chandef = *chandef; in ieee80211_vif_update_chandef()
970 if (sdata->vif.type != NL80211_IFTYPE_AP) in ieee80211_vif_update_chandef()
973 list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) in ieee80211_vif_update_chandef()
978 ieee80211_vif_use_reserved_reassign(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_use_reserved_reassign() argument
980 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_reserved_reassign()
990 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_use_reserved_reassign()
991 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_reassign()
993 if (WARN_ON(!sdata->reserved_ready)) in ieee80211_vif_use_reserved_reassign()
1007 &sdata->reserved_chandef); in ieee80211_vif_use_reserved_reassign()
1011 vif_chsw[0].vif = &sdata->vif; in ieee80211_vif_use_reserved_reassign()
1015 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_use_reserved_reassign()
1016 sdata->reserved_chanctx = NULL; in ieee80211_vif_use_reserved_reassign()
1027 list_move(&sdata->assigned_chanctx_list, &new_ctx->assigned_vifs); in ieee80211_vif_use_reserved_reassign()
1028 rcu_assign_pointer(sdata->vif.chanctx_conf, &new_ctx->conf); in ieee80211_vif_use_reserved_reassign()
1030 if (sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_vif_use_reserved_reassign()
1031 __ieee80211_vif_copy_chanctx_to_vlans(sdata, false); in ieee80211_vif_use_reserved_reassign()
1036 if (sdata->vif.bss_conf.chandef.width != sdata->reserved_chandef.width) in ieee80211_vif_use_reserved_reassign()
1039 ieee80211_vif_update_chandef(sdata, &sdata->reserved_chandef); in ieee80211_vif_use_reserved_reassign()
1046 ieee80211_bss_info_change_notify(sdata, changed); in ieee80211_vif_use_reserved_reassign()
1049 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_reassign()
1054 ieee80211_vif_use_reserved_assign(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_use_reserved_assign() argument
1056 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_reserved_assign()
1061 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_assign()
1062 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_use_reserved_assign()
1064 if (WARN_ON(!sdata->reserved_ready)) in ieee80211_vif_use_reserved_assign()
1078 &sdata->reserved_chandef); in ieee80211_vif_use_reserved_assign()
1082 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_use_reserved_assign()
1083 sdata->reserved_chanctx = NULL; in ieee80211_vif_use_reserved_assign()
1085 err = ieee80211_assign_vif_chanctx(sdata, new_ctx); in ieee80211_vif_use_reserved_assign()
1094 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_assign()
1099 ieee80211_vif_has_in_place_reservation(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_has_in_place_reservation() argument
1103 lockdep_assert_held(&sdata->local->chanctx_mtx); in ieee80211_vif_has_in_place_reservation()
1105 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_has_in_place_reservation()
1106 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_has_in_place_reservation()
1146 struct ieee80211_sub_if_data *sdata; in ieee80211_chsw_switch_vifs() local
1167 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_chsw_switch_vifs()
1170 sdata)) in ieee80211_chsw_switch_vifs()
1173 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_chsw_switch_vifs()
1174 vif_chsw[i].vif = &sdata->vif; in ieee80211_chsw_switch_vifs()
1231 struct ieee80211_sub_if_data *sdata, *sdata_tmp; in ieee80211_vif_use_reserved_switch() local
1274 list_for_each_entry(sdata, &ctx->replace_ctx->assigned_vifs, in ieee80211_vif_use_reserved_switch()
1277 if (sdata->reserved_chanctx) { in ieee80211_vif_use_reserved_switch()
1279 if (sdata->reserved_ready) in ieee80211_vif_use_reserved_switch()
1296 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1298 if (ieee80211_vif_has_in_place_reservation(sdata) && in ieee80211_vif_use_reserved_switch()
1299 !sdata->reserved_ready) in ieee80211_vif_use_reserved_switch()
1302 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_switch()
1313 if (sdata->reserved_radar_required) in ieee80211_vif_use_reserved_switch()
1366 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1370 if (!ieee80211_vif_has_in_place_reservation(sdata)) in ieee80211_vif_use_reserved_switch()
1373 rcu_assign_pointer(sdata->vif.chanctx_conf, &ctx->conf); in ieee80211_vif_use_reserved_switch()
1375 if (sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_vif_use_reserved_switch()
1376 __ieee80211_vif_copy_chanctx_to_vlans(sdata, in ieee80211_vif_use_reserved_switch()
1379 sdata->radar_required = sdata->reserved_radar_required; in ieee80211_vif_use_reserved_switch()
1381 if (sdata->vif.bss_conf.chandef.width != in ieee80211_vif_use_reserved_switch()
1382 sdata->reserved_chandef.width) in ieee80211_vif_use_reserved_switch()
1385 ieee80211_vif_update_chandef(sdata, &sdata->reserved_chandef); in ieee80211_vif_use_reserved_switch()
1387 ieee80211_bss_info_change_notify(sdata, in ieee80211_vif_use_reserved_switch()
1390 ieee80211_recalc_txpower(sdata, false); in ieee80211_vif_use_reserved_switch()
1398 list_for_each_entry_safe(sdata, sdata_tmp, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1400 if (ieee80211_vif_get_chanctx(sdata) != ctx) in ieee80211_vif_use_reserved_switch()
1403 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_use_reserved_switch()
1404 list_move(&sdata->assigned_chanctx_list, in ieee80211_vif_use_reserved_switch()
1406 sdata->reserved_chanctx = NULL; in ieee80211_vif_use_reserved_switch()
1408 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_switch()
1418 list_for_each_entry_safe(sdata, sdata_tmp, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1421 sdata))) in ieee80211_vif_use_reserved_switch()
1424 if (WARN_ON(sdata->reserved_chanctx != ctx)) in ieee80211_vif_use_reserved_switch()
1427 if (!sdata->reserved_ready) in ieee80211_vif_use_reserved_switch()
1430 if (ieee80211_vif_get_chanctx(sdata)) in ieee80211_vif_use_reserved_switch()
1432 sdata); in ieee80211_vif_use_reserved_switch()
1434 err = ieee80211_vif_use_reserved_assign(sdata); in ieee80211_vif_use_reserved_switch()
1437 sdata_info(sdata, in ieee80211_vif_use_reserved_switch()
1440 ieee80211_vif_unreserve_chanctx(sdata); in ieee80211_vif_use_reserved_switch()
1442 &sdata->wdev, in ieee80211_vif_use_reserved_switch()
1471 list_for_each_entry_safe(sdata, sdata_tmp, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1473 ieee80211_vif_unreserve_chanctx(sdata); in ieee80211_vif_use_reserved_switch()
1474 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_switch()
1481 static void __ieee80211_vif_release_channel(struct ieee80211_sub_if_data *sdata) in __ieee80211_vif_release_channel() argument
1483 struct ieee80211_local *local = sdata->local; in __ieee80211_vif_release_channel()
1490 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in __ieee80211_vif_release_channel()
1497 if (sdata->reserved_chanctx) { in __ieee80211_vif_release_channel()
1498 if (sdata->reserved_chanctx->replace_state == in __ieee80211_vif_release_channel()
1501 sdata->reserved_chanctx) > 1) in __ieee80211_vif_release_channel()
1504 ieee80211_vif_unreserve_chanctx(sdata); in __ieee80211_vif_release_channel()
1507 ieee80211_assign_vif_chanctx(sdata, NULL); in __ieee80211_vif_release_channel()
1511 sdata->radar_required = false; in __ieee80211_vif_release_channel()
1518 int ieee80211_vif_use_channel(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_use_channel() argument
1522 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_channel()
1529 WARN_ON(sdata->dev && netif_carrier_ok(sdata->dev)); in ieee80211_vif_use_channel()
1535 sdata->wdev.iftype); in ieee80211_vif_use_channel()
1541 sdata->radar_required = ret; in ieee80211_vif_use_channel()
1543 ret = ieee80211_check_combinations(sdata, chandef, mode, in ieee80211_vif_use_channel()
1548 __ieee80211_vif_release_channel(sdata); in ieee80211_vif_use_channel()
1558 ieee80211_vif_update_chandef(sdata, chandef); in ieee80211_vif_use_channel()
1560 ret = ieee80211_assign_vif_chanctx(sdata, ctx); in ieee80211_vif_use_channel()
1572 sdata->radar_required = false; in ieee80211_vif_use_channel()
1578 int ieee80211_vif_use_reserved_context(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_use_reserved_context() argument
1580 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_reserved_context()
1588 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_use_reserved_context()
1589 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_context()
1598 if (WARN_ON(sdata->reserved_ready)) in ieee80211_vif_use_reserved_context()
1601 sdata->reserved_ready = true; in ieee80211_vif_use_reserved_context()
1605 err = ieee80211_vif_use_reserved_reassign(sdata); in ieee80211_vif_use_reserved_context()
1607 err = ieee80211_vif_use_reserved_assign(sdata); in ieee80211_vif_use_reserved_context()
1642 int ieee80211_vif_change_bandwidth(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_change_bandwidth() argument
1646 struct ieee80211_local *local = sdata->local; in ieee80211_vif_change_bandwidth()
1652 if (!cfg80211_chandef_usable(sdata->local->hw.wiphy, chandef, in ieee80211_vif_change_bandwidth()
1657 if (cfg80211_chandef_identical(chandef, &sdata->vif.bss_conf.chandef)) { in ieee80211_vif_change_bandwidth()
1663 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_20_NOHT) { in ieee80211_vif_change_bandwidth()
1668 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_vif_change_bandwidth()
1703 ieee80211_vif_update_chandef(sdata, chandef); in ieee80211_vif_change_bandwidth()
1714 void ieee80211_vif_release_channel(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_release_channel() argument
1716 WARN_ON(sdata->dev && netif_carrier_ok(sdata->dev)); in ieee80211_vif_release_channel()
1718 lockdep_assert_held(&sdata->local->mtx); in ieee80211_vif_release_channel()
1720 mutex_lock(&sdata->local->chanctx_mtx); in ieee80211_vif_release_channel()
1721 __ieee80211_vif_release_channel(sdata); in ieee80211_vif_release_channel()
1722 mutex_unlock(&sdata->local->chanctx_mtx); in ieee80211_vif_release_channel()
1725 void ieee80211_vif_vlan_copy_chanctx(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_vlan_copy_chanctx() argument
1727 struct ieee80211_local *local = sdata->local; in ieee80211_vif_vlan_copy_chanctx()
1731 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_AP_VLAN || !sdata->bss)) in ieee80211_vif_vlan_copy_chanctx()
1734 ap = container_of(sdata->bss, struct ieee80211_sub_if_data, u.ap); in ieee80211_vif_vlan_copy_chanctx()
1740 rcu_assign_pointer(sdata->vif.chanctx_conf, conf); in ieee80211_vif_vlan_copy_chanctx()