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()
245 struct ieee80211_sub_if_data *sdata; in ieee80211_get_chanctx_max_required_bw() local
249 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_get_chanctx_max_required_bw()
250 struct ieee80211_vif *vif = &sdata->vif; in ieee80211_get_chanctx_max_required_bw()
253 if (!ieee80211_sdata_running(sdata)) in ieee80211_get_chanctx_max_required_bw()
256 if (rcu_access_pointer(sdata->vif.chanctx_conf) != conf) in ieee80211_get_chanctx_max_required_bw()
262 width = ieee80211_get_max_required_bw(sdata); in ieee80211_get_chanctx_max_required_bw()
271 ieee80211_get_max_required_bw(sdata)); in ieee80211_get_chanctx_max_required_bw()
293 sdata = rcu_dereference(local->monitor_sdata); in ieee80211_get_chanctx_max_required_bw()
294 if (sdata && rcu_access_pointer(sdata->vif.chanctx_conf) == conf) in ieee80211_get_chanctx_max_required_bw()
401 struct ieee80211_sub_if_data *sdata; in ieee80211_is_radar_required() local
406 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_is_radar_required()
407 if (sdata->radar_required) { in ieee80211_is_radar_required()
422 struct ieee80211_sub_if_data *sdata; in ieee80211_chanctx_radar_required() local
429 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_chanctx_radar_required()
430 if (!ieee80211_sdata_running(sdata)) in ieee80211_chanctx_radar_required()
432 if (rcu_access_pointer(sdata->vif.chanctx_conf) != conf) in ieee80211_chanctx_radar_required()
434 if (!sdata->radar_required) in ieee80211_chanctx_radar_required()
569 struct ieee80211_sub_if_data *sdata; in ieee80211_recalc_chanctx_chantype() local
576 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_recalc_chanctx_chantype()
578 if (!ieee80211_sdata_running(sdata)) in ieee80211_recalc_chanctx_chantype()
580 if (rcu_access_pointer(sdata->vif.chanctx_conf) != conf) in ieee80211_recalc_chanctx_chantype()
582 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) in ieee80211_recalc_chanctx_chantype()
586 compat = &sdata->vif.bss_conf.chandef; in ieee80211_recalc_chanctx_chantype()
589 &sdata->vif.bss_conf.chandef, compat); in ieee80211_recalc_chanctx_chantype()
639 static int ieee80211_assign_vif_chanctx(struct ieee80211_sub_if_data *sdata, in ieee80211_assign_vif_chanctx() argument
642 struct ieee80211_local *local = sdata->local; in ieee80211_assign_vif_chanctx()
647 if (WARN_ON(sdata->vif.type == NL80211_IFTYPE_NAN)) in ieee80211_assign_vif_chanctx()
650 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_assign_vif_chanctx()
656 drv_unassign_vif_chanctx(local, sdata, curr_ctx); in ieee80211_assign_vif_chanctx()
658 list_del(&sdata->assigned_chanctx_list); in ieee80211_assign_vif_chanctx()
662 ret = drv_assign_vif_chanctx(local, sdata, new_ctx); in ieee80211_assign_vif_chanctx()
667 list_add(&sdata->assigned_chanctx_list, in ieee80211_assign_vif_chanctx()
672 rcu_assign_pointer(sdata->vif.chanctx_conf, conf); in ieee80211_assign_vif_chanctx()
674 sdata->vif.bss_conf.idle = !conf; in ieee80211_assign_vif_chanctx()
684 ieee80211_recalc_txpower(sdata, false); in ieee80211_assign_vif_chanctx()
688 if (sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE && in ieee80211_assign_vif_chanctx()
689 sdata->vif.type != NL80211_IFTYPE_MONITOR) in ieee80211_assign_vif_chanctx()
690 ieee80211_bss_info_change_notify(sdata, in ieee80211_assign_vif_chanctx()
693 ieee80211_check_fast_xmit_iface(sdata); in ieee80211_assign_vif_chanctx()
701 struct ieee80211_sub_if_data *sdata; in ieee80211_recalc_smps_chanctx() local
710 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_recalc_smps_chanctx()
713 if (!ieee80211_sdata_running(sdata)) in ieee80211_recalc_smps_chanctx()
716 if (rcu_access_pointer(sdata->vif.chanctx_conf) != in ieee80211_recalc_smps_chanctx()
720 switch (sdata->vif.type) { in ieee80211_recalc_smps_chanctx()
725 if (!sdata->u.mgd.associated) in ieee80211_recalc_smps_chanctx()
740 switch (sdata->smps_mode) { in ieee80211_recalc_smps_chanctx()
743 sdata->smps_mode); in ieee80211_recalc_smps_chanctx()
746 needed_static = sdata->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
747 needed_dynamic = sdata->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
751 needed_dynamic = sdata->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
764 sdata = rcu_dereference(local->monitor_sdata); in ieee80211_recalc_smps_chanctx()
765 if (sdata && in ieee80211_recalc_smps_chanctx()
766 rcu_access_pointer(sdata->vif.chanctx_conf) == &chanctx->conf) in ieee80211_recalc_smps_chanctx()
791 __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 __maybe_unused = sdata->local; in __ieee80211_vif_copy_chanctx_to_vlans()
798 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_AP)) in __ieee80211_vif_copy_chanctx_to_vlans()
809 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in __ieee80211_vif_copy_chanctx_to_vlans()
816 list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) in __ieee80211_vif_copy_chanctx_to_vlans()
820 void ieee80211_vif_copy_chanctx_to_vlans(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_copy_chanctx_to_vlans() argument
823 struct ieee80211_local *local = sdata->local; in ieee80211_vif_copy_chanctx_to_vlans()
827 __ieee80211_vif_copy_chanctx_to_vlans(sdata, clear); in ieee80211_vif_copy_chanctx_to_vlans()
832 int ieee80211_vif_unreserve_chanctx(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_unreserve_chanctx() argument
834 struct ieee80211_chanctx *ctx = sdata->reserved_chanctx; in ieee80211_vif_unreserve_chanctx()
836 lockdep_assert_held(&sdata->local->chanctx_mtx); in ieee80211_vif_unreserve_chanctx()
841 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_unreserve_chanctx()
842 sdata->reserved_chanctx = NULL; in ieee80211_vif_unreserve_chanctx()
844 if (ieee80211_chanctx_refcount(sdata->local, ctx) == 0) { in ieee80211_vif_unreserve_chanctx()
860 ieee80211_free_chanctx(sdata->local, ctx); in ieee80211_vif_unreserve_chanctx()
867 int ieee80211_vif_reserve_chanctx(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_reserve_chanctx() argument
872 struct ieee80211_local *local = sdata->local; in ieee80211_vif_reserve_chanctx()
877 curr_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_reserve_chanctx()
954 list_add(&sdata->reserved_chanctx_list, &new_ctx->reserved_vifs); in ieee80211_vif_reserve_chanctx()
955 sdata->reserved_chanctx = new_ctx; in ieee80211_vif_reserve_chanctx()
956 sdata->reserved_chandef = *chandef; in ieee80211_vif_reserve_chanctx()
957 sdata->reserved_radar_required = radar_required; in ieee80211_vif_reserve_chanctx()
958 sdata->reserved_ready = false; in ieee80211_vif_reserve_chanctx()
964 ieee80211_vif_chanctx_reservation_complete(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_chanctx_reservation_complete() argument
966 switch (sdata->vif.type) { in ieee80211_vif_chanctx_reservation_complete()
971 ieee80211_queue_work(&sdata->local->hw, in ieee80211_vif_chanctx_reservation_complete()
972 &sdata->csa_finalize_work); in ieee80211_vif_chanctx_reservation_complete()
975 ieee80211_queue_work(&sdata->local->hw, in ieee80211_vif_chanctx_reservation_complete()
976 &sdata->u.mgd.chswitch_work); in ieee80211_vif_chanctx_reservation_complete()
993 ieee80211_vif_update_chandef(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_update_chandef() argument
998 sdata->vif.bss_conf.chandef = *chandef; in ieee80211_vif_update_chandef()
1000 if (sdata->vif.type != NL80211_IFTYPE_AP) in ieee80211_vif_update_chandef()
1003 list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) in ieee80211_vif_update_chandef()
1008 ieee80211_vif_use_reserved_reassign(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_use_reserved_reassign() argument
1010 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_reserved_reassign()
1020 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_use_reserved_reassign()
1021 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_reassign()
1023 if (WARN_ON(!sdata->reserved_ready)) in ieee80211_vif_use_reserved_reassign()
1037 &sdata->reserved_chandef); in ieee80211_vif_use_reserved_reassign()
1043 vif_chsw[0].vif = &sdata->vif; in ieee80211_vif_use_reserved_reassign()
1047 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_use_reserved_reassign()
1048 sdata->reserved_chanctx = NULL; in ieee80211_vif_use_reserved_reassign()
1059 list_move(&sdata->assigned_chanctx_list, &new_ctx->assigned_vifs); in ieee80211_vif_use_reserved_reassign()
1060 rcu_assign_pointer(sdata->vif.chanctx_conf, &new_ctx->conf); in ieee80211_vif_use_reserved_reassign()
1062 if (sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_vif_use_reserved_reassign()
1063 __ieee80211_vif_copy_chanctx_to_vlans(sdata, false); in ieee80211_vif_use_reserved_reassign()
1065 ieee80211_check_fast_xmit_iface(sdata); in ieee80211_vif_use_reserved_reassign()
1070 if (sdata->vif.bss_conf.chandef.width != sdata->reserved_chandef.width) in ieee80211_vif_use_reserved_reassign()
1073 ieee80211_vif_update_chandef(sdata, &sdata->reserved_chandef); in ieee80211_vif_use_reserved_reassign()
1080 ieee80211_bss_info_change_notify(sdata, changed); in ieee80211_vif_use_reserved_reassign()
1083 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_reassign()
1088 ieee80211_vif_use_reserved_assign(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_use_reserved_assign() argument
1090 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_reserved_assign()
1095 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_assign()
1096 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_use_reserved_assign()
1098 if (WARN_ON(!sdata->reserved_ready)) in ieee80211_vif_use_reserved_assign()
1112 &sdata->reserved_chandef); in ieee80211_vif_use_reserved_assign()
1118 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_use_reserved_assign()
1119 sdata->reserved_chanctx = NULL; in ieee80211_vif_use_reserved_assign()
1121 err = ieee80211_assign_vif_chanctx(sdata, new_ctx); in ieee80211_vif_use_reserved_assign()
1130 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_assign()
1135 ieee80211_vif_has_in_place_reservation(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_has_in_place_reservation() argument
1139 lockdep_assert_held(&sdata->local->chanctx_mtx); in ieee80211_vif_has_in_place_reservation()
1141 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_has_in_place_reservation()
1142 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_has_in_place_reservation()
1182 struct ieee80211_sub_if_data *sdata; in ieee80211_chsw_switch_vifs() local
1203 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_chsw_switch_vifs()
1206 sdata)) in ieee80211_chsw_switch_vifs()
1209 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_chsw_switch_vifs()
1210 vif_chsw[i].vif = &sdata->vif; in ieee80211_chsw_switch_vifs()
1267 struct ieee80211_sub_if_data *sdata, *sdata_tmp; in ieee80211_vif_use_reserved_switch() local
1310 list_for_each_entry(sdata, &ctx->replace_ctx->assigned_vifs, in ieee80211_vif_use_reserved_switch()
1313 if (sdata->reserved_chanctx) { in ieee80211_vif_use_reserved_switch()
1315 if (sdata->reserved_ready) in ieee80211_vif_use_reserved_switch()
1332 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1334 if (ieee80211_vif_has_in_place_reservation(sdata) && in ieee80211_vif_use_reserved_switch()
1335 !sdata->reserved_ready) in ieee80211_vif_use_reserved_switch()
1338 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_switch()
1349 if (sdata->reserved_radar_required) in ieee80211_vif_use_reserved_switch()
1400 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1404 if (!ieee80211_vif_has_in_place_reservation(sdata)) in ieee80211_vif_use_reserved_switch()
1407 rcu_assign_pointer(sdata->vif.chanctx_conf, &ctx->conf); in ieee80211_vif_use_reserved_switch()
1409 if (sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_vif_use_reserved_switch()
1410 __ieee80211_vif_copy_chanctx_to_vlans(sdata, in ieee80211_vif_use_reserved_switch()
1413 ieee80211_check_fast_xmit_iface(sdata); in ieee80211_vif_use_reserved_switch()
1415 sdata->radar_required = sdata->reserved_radar_required; in ieee80211_vif_use_reserved_switch()
1417 if (sdata->vif.bss_conf.chandef.width != in ieee80211_vif_use_reserved_switch()
1418 sdata->reserved_chandef.width) in ieee80211_vif_use_reserved_switch()
1421 ieee80211_vif_update_chandef(sdata, &sdata->reserved_chandef); in ieee80211_vif_use_reserved_switch()
1423 ieee80211_bss_info_change_notify(sdata, in ieee80211_vif_use_reserved_switch()
1426 ieee80211_recalc_txpower(sdata, false); in ieee80211_vif_use_reserved_switch()
1434 list_for_each_entry_safe(sdata, sdata_tmp, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1436 if (ieee80211_vif_get_chanctx(sdata) != ctx) in ieee80211_vif_use_reserved_switch()
1439 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_use_reserved_switch()
1440 list_move(&sdata->assigned_chanctx_list, in ieee80211_vif_use_reserved_switch()
1442 sdata->reserved_chanctx = NULL; in ieee80211_vif_use_reserved_switch()
1444 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_switch()
1454 list_for_each_entry_safe(sdata, sdata_tmp, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1457 sdata))) in ieee80211_vif_use_reserved_switch()
1460 if (WARN_ON(sdata->reserved_chanctx != ctx)) in ieee80211_vif_use_reserved_switch()
1463 if (!sdata->reserved_ready) in ieee80211_vif_use_reserved_switch()
1466 if (ieee80211_vif_get_chanctx(sdata)) in ieee80211_vif_use_reserved_switch()
1468 sdata); in ieee80211_vif_use_reserved_switch()
1470 err = ieee80211_vif_use_reserved_assign(sdata); in ieee80211_vif_use_reserved_switch()
1473 sdata_info(sdata, in ieee80211_vif_use_reserved_switch()
1476 ieee80211_vif_unreserve_chanctx(sdata); in ieee80211_vif_use_reserved_switch()
1478 &sdata->wdev, in ieee80211_vif_use_reserved_switch()
1507 list_for_each_entry_safe(sdata, sdata_tmp, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1509 ieee80211_vif_unreserve_chanctx(sdata); in ieee80211_vif_use_reserved_switch()
1510 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_switch()
1517 static void __ieee80211_vif_release_channel(struct ieee80211_sub_if_data *sdata) in __ieee80211_vif_release_channel() argument
1519 struct ieee80211_local *local = sdata->local; in __ieee80211_vif_release_channel()
1526 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in __ieee80211_vif_release_channel()
1533 if (sdata->reserved_chanctx) { in __ieee80211_vif_release_channel()
1534 if (sdata->reserved_chanctx->replace_state == in __ieee80211_vif_release_channel()
1537 sdata->reserved_chanctx) > 1) in __ieee80211_vif_release_channel()
1540 ieee80211_vif_unreserve_chanctx(sdata); in __ieee80211_vif_release_channel()
1543 ieee80211_assign_vif_chanctx(sdata, NULL); in __ieee80211_vif_release_channel()
1547 sdata->radar_required = false; in __ieee80211_vif_release_channel()
1554 int ieee80211_vif_use_channel(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_use_channel() argument
1558 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_channel()
1565 WARN_ON(sdata->dev && netif_carrier_ok(sdata->dev)); in ieee80211_vif_use_channel()
1571 sdata->wdev.iftype); in ieee80211_vif_use_channel()
1577 sdata->radar_required = ret; in ieee80211_vif_use_channel()
1579 ret = ieee80211_check_combinations(sdata, chandef, mode, in ieee80211_vif_use_channel()
1584 __ieee80211_vif_release_channel(sdata); in ieee80211_vif_use_channel()
1594 ieee80211_vif_update_chandef(sdata, chandef); in ieee80211_vif_use_channel()
1596 ret = ieee80211_assign_vif_chanctx(sdata, ctx); in ieee80211_vif_use_channel()
1608 sdata->radar_required = false; in ieee80211_vif_use_channel()
1614 int ieee80211_vif_use_reserved_context(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_use_reserved_context() argument
1616 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_reserved_context()
1624 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_use_reserved_context()
1625 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_context()
1634 if (WARN_ON(sdata->reserved_ready)) in ieee80211_vif_use_reserved_context()
1637 sdata->reserved_ready = true; in ieee80211_vif_use_reserved_context()
1641 err = ieee80211_vif_use_reserved_reassign(sdata); in ieee80211_vif_use_reserved_context()
1643 err = ieee80211_vif_use_reserved_assign(sdata); in ieee80211_vif_use_reserved_context()
1678 int ieee80211_vif_change_bandwidth(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_change_bandwidth() argument
1682 struct ieee80211_local *local = sdata->local; in ieee80211_vif_change_bandwidth()
1688 if (!cfg80211_chandef_usable(sdata->local->hw.wiphy, chandef, in ieee80211_vif_change_bandwidth()
1693 if (cfg80211_chandef_identical(chandef, &sdata->vif.bss_conf.chandef)) { in ieee80211_vif_change_bandwidth()
1699 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_20_NOHT) { in ieee80211_vif_change_bandwidth()
1704 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_vif_change_bandwidth()
1739 ieee80211_vif_update_chandef(sdata, chandef); in ieee80211_vif_change_bandwidth()
1750 void ieee80211_vif_release_channel(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_release_channel() argument
1752 WARN_ON(sdata->dev && netif_carrier_ok(sdata->dev)); in ieee80211_vif_release_channel()
1754 lockdep_assert_held(&sdata->local->mtx); in ieee80211_vif_release_channel()
1756 mutex_lock(&sdata->local->chanctx_mtx); in ieee80211_vif_release_channel()
1757 __ieee80211_vif_release_channel(sdata); in ieee80211_vif_release_channel()
1758 mutex_unlock(&sdata->local->chanctx_mtx); in ieee80211_vif_release_channel()
1761 void ieee80211_vif_vlan_copy_chanctx(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_vlan_copy_chanctx() argument
1763 struct ieee80211_local *local = sdata->local; in ieee80211_vif_vlan_copy_chanctx()
1767 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_AP_VLAN || !sdata->bss)) in ieee80211_vif_vlan_copy_chanctx()
1770 ap = container_of(sdata->bss, struct ieee80211_sub_if_data, u.ap); in ieee80211_vif_vlan_copy_chanctx()
1776 rcu_assign_pointer(sdata->vif.chanctx_conf, conf); in ieee80211_vif_vlan_copy_chanctx()