Lines Matching refs:sdata
16 struct ieee80211_sub_if_data *sdata; in ieee80211_chanctx_num_assigned() local
21 list_for_each_entry(sdata, &ctx->assigned_vifs, assigned_chanctx_list) in ieee80211_chanctx_num_assigned()
30 struct ieee80211_sub_if_data *sdata; in ieee80211_chanctx_num_reserved() local
35 list_for_each_entry(sdata, &ctx->reserved_vifs, reserved_chanctx_list) in ieee80211_chanctx_num_reserved()
68 ieee80211_vif_get_chanctx(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_get_chanctx() argument
70 struct ieee80211_local *local __maybe_unused = sdata->local; in ieee80211_vif_get_chanctx()
73 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_vif_get_chanctx()
86 struct ieee80211_sub_if_data *sdata; in ieee80211_chanctx_reserved_chandef() local
90 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_chanctx_reserved_chandef()
93 compat = &sdata->reserved_chandef; in ieee80211_chanctx_reserved_chandef()
95 compat = cfg80211_chandef_compatible(&sdata->reserved_chandef, in ieee80211_chanctx_reserved_chandef()
109 struct ieee80211_sub_if_data *sdata; in ieee80211_chanctx_non_reserved_chandef() local
113 list_for_each_entry(sdata, &ctx->assigned_vifs, in ieee80211_chanctx_non_reserved_chandef()
115 if (sdata->reserved_chanctx != NULL) in ieee80211_chanctx_non_reserved_chandef()
119 compat = &sdata->vif.bss_conf.chandef; in ieee80211_chanctx_non_reserved_chandef()
122 &sdata->vif.bss_conf.chandef, compat); in ieee80211_chanctx_non_reserved_chandef()
224 ieee80211_get_max_required_bw(struct ieee80211_sub_if_data *sdata) in ieee80211_get_max_required_bw() argument
230 list_for_each_entry_rcu(sta, &sdata->local->sta_list, list) { in ieee80211_get_max_required_bw()
231 if (sdata != sta->sdata && in ieee80211_get_max_required_bw()
232 !(sta->sdata->bss && sta->sdata->bss == sdata->bss)) in ieee80211_get_max_required_bw()
246 struct ieee80211_sub_if_data *sdata; in ieee80211_get_chanctx_max_required_bw() local
250 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_get_chanctx_max_required_bw()
251 struct ieee80211_vif *vif = &sdata->vif; in ieee80211_get_chanctx_max_required_bw()
254 if (!ieee80211_sdata_running(sdata)) in ieee80211_get_chanctx_max_required_bw()
257 if (rcu_access_pointer(sdata->vif.chanctx_conf) != conf) in ieee80211_get_chanctx_max_required_bw()
263 width = ieee80211_get_max_required_bw(sdata); in ieee80211_get_chanctx_max_required_bw()
272 ieee80211_get_max_required_bw(sdata)); in ieee80211_get_chanctx_max_required_bw()
294 sdata = rcu_dereference(local->monitor_sdata); in ieee80211_get_chanctx_max_required_bw()
295 if (sdata && rcu_access_pointer(sdata->vif.chanctx_conf) == conf) in ieee80211_get_chanctx_max_required_bw()
407 struct ieee80211_sub_if_data *sdata; in ieee80211_is_radar_required() local
412 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_is_radar_required()
413 if (sdata->radar_required) { in ieee80211_is_radar_required()
428 struct ieee80211_sub_if_data *sdata; in ieee80211_chanctx_radar_required() local
435 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_chanctx_radar_required()
436 if (!ieee80211_sdata_running(sdata)) in ieee80211_chanctx_radar_required()
438 if (rcu_access_pointer(sdata->vif.chanctx_conf) != conf) in ieee80211_chanctx_radar_required()
440 if (!sdata->radar_required) in ieee80211_chanctx_radar_required()
583 struct ieee80211_sub_if_data *sdata; in ieee80211_recalc_chanctx_chantype() local
590 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_recalc_chanctx_chantype()
592 if (!ieee80211_sdata_running(sdata)) in ieee80211_recalc_chanctx_chantype()
594 if (rcu_access_pointer(sdata->vif.chanctx_conf) != conf) in ieee80211_recalc_chanctx_chantype()
596 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) in ieee80211_recalc_chanctx_chantype()
600 compat = &sdata->vif.bss_conf.chandef; in ieee80211_recalc_chanctx_chantype()
603 &sdata->vif.bss_conf.chandef, compat); in ieee80211_recalc_chanctx_chantype()
653 static int ieee80211_assign_vif_chanctx(struct ieee80211_sub_if_data *sdata, in ieee80211_assign_vif_chanctx() argument
656 struct ieee80211_local *local = sdata->local; in ieee80211_assign_vif_chanctx()
661 if (WARN_ON(sdata->vif.type == NL80211_IFTYPE_NAN)) in ieee80211_assign_vif_chanctx()
664 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_assign_vif_chanctx()
670 drv_unassign_vif_chanctx(local, sdata, curr_ctx); in ieee80211_assign_vif_chanctx()
672 list_del(&sdata->assigned_chanctx_list); in ieee80211_assign_vif_chanctx()
676 ret = drv_assign_vif_chanctx(local, sdata, new_ctx); in ieee80211_assign_vif_chanctx()
681 list_add(&sdata->assigned_chanctx_list, in ieee80211_assign_vif_chanctx()
686 rcu_assign_pointer(sdata->vif.chanctx_conf, conf); in ieee80211_assign_vif_chanctx()
688 sdata->vif.bss_conf.idle = !conf; in ieee80211_assign_vif_chanctx()
698 ieee80211_recalc_txpower(sdata, false); in ieee80211_assign_vif_chanctx()
702 if (sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE && in ieee80211_assign_vif_chanctx()
703 sdata->vif.type != NL80211_IFTYPE_MONITOR) in ieee80211_assign_vif_chanctx()
704 ieee80211_bss_info_change_notify(sdata, in ieee80211_assign_vif_chanctx()
707 ieee80211_check_fast_xmit_iface(sdata); in ieee80211_assign_vif_chanctx()
715 struct ieee80211_sub_if_data *sdata; in ieee80211_recalc_smps_chanctx() local
724 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_recalc_smps_chanctx()
727 if (!ieee80211_sdata_running(sdata)) in ieee80211_recalc_smps_chanctx()
730 if (rcu_access_pointer(sdata->vif.chanctx_conf) != in ieee80211_recalc_smps_chanctx()
734 switch (sdata->vif.type) { in ieee80211_recalc_smps_chanctx()
739 if (!sdata->u.mgd.associated) in ieee80211_recalc_smps_chanctx()
754 switch (sdata->smps_mode) { in ieee80211_recalc_smps_chanctx()
757 sdata->smps_mode); in ieee80211_recalc_smps_chanctx()
760 needed_static = sdata->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
761 needed_dynamic = sdata->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
765 needed_dynamic = sdata->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
778 sdata = rcu_dereference(local->monitor_sdata); in ieee80211_recalc_smps_chanctx()
779 if (sdata && in ieee80211_recalc_smps_chanctx()
780 rcu_access_pointer(sdata->vif.chanctx_conf) == &chanctx->conf) in ieee80211_recalc_smps_chanctx()
805 __ieee80211_vif_copy_chanctx_to_vlans(struct ieee80211_sub_if_data *sdata, in __ieee80211_vif_copy_chanctx_to_vlans() argument
808 struct ieee80211_local *local __maybe_unused = sdata->local; in __ieee80211_vif_copy_chanctx_to_vlans()
812 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_AP)) in __ieee80211_vif_copy_chanctx_to_vlans()
823 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in __ieee80211_vif_copy_chanctx_to_vlans()
830 list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) in __ieee80211_vif_copy_chanctx_to_vlans()
834 void ieee80211_vif_copy_chanctx_to_vlans(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_copy_chanctx_to_vlans() argument
837 struct ieee80211_local *local = sdata->local; in ieee80211_vif_copy_chanctx_to_vlans()
841 __ieee80211_vif_copy_chanctx_to_vlans(sdata, clear); in ieee80211_vif_copy_chanctx_to_vlans()
846 int ieee80211_vif_unreserve_chanctx(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_unreserve_chanctx() argument
848 struct ieee80211_chanctx *ctx = sdata->reserved_chanctx; in ieee80211_vif_unreserve_chanctx()
850 lockdep_assert_held(&sdata->local->chanctx_mtx); in ieee80211_vif_unreserve_chanctx()
855 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_unreserve_chanctx()
856 sdata->reserved_chanctx = NULL; in ieee80211_vif_unreserve_chanctx()
858 if (ieee80211_chanctx_refcount(sdata->local, ctx) == 0) { in ieee80211_vif_unreserve_chanctx()
874 ieee80211_free_chanctx(sdata->local, ctx); in ieee80211_vif_unreserve_chanctx()
881 int ieee80211_vif_reserve_chanctx(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_reserve_chanctx() argument
886 struct ieee80211_local *local = sdata->local; in ieee80211_vif_reserve_chanctx()
891 curr_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_reserve_chanctx()
968 list_add(&sdata->reserved_chanctx_list, &new_ctx->reserved_vifs); in ieee80211_vif_reserve_chanctx()
969 sdata->reserved_chanctx = new_ctx; in ieee80211_vif_reserve_chanctx()
970 sdata->reserved_chandef = *chandef; in ieee80211_vif_reserve_chanctx()
971 sdata->reserved_radar_required = radar_required; in ieee80211_vif_reserve_chanctx()
972 sdata->reserved_ready = false; in ieee80211_vif_reserve_chanctx()
978 ieee80211_vif_chanctx_reservation_complete(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_chanctx_reservation_complete() argument
980 switch (sdata->vif.type) { in ieee80211_vif_chanctx_reservation_complete()
985 ieee80211_queue_work(&sdata->local->hw, in ieee80211_vif_chanctx_reservation_complete()
986 &sdata->csa_finalize_work); in ieee80211_vif_chanctx_reservation_complete()
989 ieee80211_queue_work(&sdata->local->hw, in ieee80211_vif_chanctx_reservation_complete()
990 &sdata->u.mgd.chswitch_work); in ieee80211_vif_chanctx_reservation_complete()
1007 ieee80211_vif_update_chandef(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_update_chandef() argument
1012 sdata->vif.bss_conf.chandef = *chandef; in ieee80211_vif_update_chandef()
1014 if (sdata->vif.type != NL80211_IFTYPE_AP) in ieee80211_vif_update_chandef()
1017 list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) in ieee80211_vif_update_chandef()
1022 ieee80211_vif_use_reserved_reassign(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_use_reserved_reassign() argument
1024 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_reserved_reassign()
1034 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_use_reserved_reassign()
1035 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_reassign()
1037 if (WARN_ON(!sdata->reserved_ready)) in ieee80211_vif_use_reserved_reassign()
1051 &sdata->reserved_chandef); in ieee80211_vif_use_reserved_reassign()
1057 vif_chsw[0].vif = &sdata->vif; in ieee80211_vif_use_reserved_reassign()
1061 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_use_reserved_reassign()
1062 sdata->reserved_chanctx = NULL; in ieee80211_vif_use_reserved_reassign()
1073 list_move(&sdata->assigned_chanctx_list, &new_ctx->assigned_vifs); in ieee80211_vif_use_reserved_reassign()
1074 rcu_assign_pointer(sdata->vif.chanctx_conf, &new_ctx->conf); in ieee80211_vif_use_reserved_reassign()
1076 if (sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_vif_use_reserved_reassign()
1077 __ieee80211_vif_copy_chanctx_to_vlans(sdata, false); in ieee80211_vif_use_reserved_reassign()
1079 ieee80211_check_fast_xmit_iface(sdata); in ieee80211_vif_use_reserved_reassign()
1084 if (sdata->vif.bss_conf.chandef.width != sdata->reserved_chandef.width) in ieee80211_vif_use_reserved_reassign()
1087 ieee80211_vif_update_chandef(sdata, &sdata->reserved_chandef); in ieee80211_vif_use_reserved_reassign()
1094 ieee80211_bss_info_change_notify(sdata, changed); in ieee80211_vif_use_reserved_reassign()
1097 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_reassign()
1102 ieee80211_vif_use_reserved_assign(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_use_reserved_assign() argument
1104 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_reserved_assign()
1109 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_assign()
1110 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_use_reserved_assign()
1112 if (WARN_ON(!sdata->reserved_ready)) in ieee80211_vif_use_reserved_assign()
1126 &sdata->reserved_chandef); in ieee80211_vif_use_reserved_assign()
1132 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_use_reserved_assign()
1133 sdata->reserved_chanctx = NULL; in ieee80211_vif_use_reserved_assign()
1135 err = ieee80211_assign_vif_chanctx(sdata, new_ctx); in ieee80211_vif_use_reserved_assign()
1144 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_assign()
1149 ieee80211_vif_has_in_place_reservation(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_has_in_place_reservation() argument
1153 lockdep_assert_held(&sdata->local->chanctx_mtx); in ieee80211_vif_has_in_place_reservation()
1155 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_has_in_place_reservation()
1156 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_has_in_place_reservation()
1196 struct ieee80211_sub_if_data *sdata; in ieee80211_chsw_switch_vifs() local
1217 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_chsw_switch_vifs()
1220 sdata)) in ieee80211_chsw_switch_vifs()
1223 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_chsw_switch_vifs()
1224 vif_chsw[i].vif = &sdata->vif; in ieee80211_chsw_switch_vifs()
1281 struct ieee80211_sub_if_data *sdata, *sdata_tmp; in ieee80211_vif_use_reserved_switch() local
1324 list_for_each_entry(sdata, &ctx->replace_ctx->assigned_vifs, in ieee80211_vif_use_reserved_switch()
1327 if (sdata->reserved_chanctx) { in ieee80211_vif_use_reserved_switch()
1329 if (sdata->reserved_ready) in ieee80211_vif_use_reserved_switch()
1346 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1348 if (ieee80211_vif_has_in_place_reservation(sdata) && in ieee80211_vif_use_reserved_switch()
1349 !sdata->reserved_ready) in ieee80211_vif_use_reserved_switch()
1352 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_switch()
1363 if (sdata->reserved_radar_required) in ieee80211_vif_use_reserved_switch()
1414 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1418 if (!ieee80211_vif_has_in_place_reservation(sdata)) in ieee80211_vif_use_reserved_switch()
1421 rcu_assign_pointer(sdata->vif.chanctx_conf, &ctx->conf); in ieee80211_vif_use_reserved_switch()
1423 if (sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_vif_use_reserved_switch()
1424 __ieee80211_vif_copy_chanctx_to_vlans(sdata, in ieee80211_vif_use_reserved_switch()
1427 ieee80211_check_fast_xmit_iface(sdata); in ieee80211_vif_use_reserved_switch()
1429 sdata->radar_required = sdata->reserved_radar_required; in ieee80211_vif_use_reserved_switch()
1431 if (sdata->vif.bss_conf.chandef.width != in ieee80211_vif_use_reserved_switch()
1432 sdata->reserved_chandef.width) in ieee80211_vif_use_reserved_switch()
1435 ieee80211_vif_update_chandef(sdata, &sdata->reserved_chandef); in ieee80211_vif_use_reserved_switch()
1437 ieee80211_bss_info_change_notify(sdata, in ieee80211_vif_use_reserved_switch()
1440 ieee80211_recalc_txpower(sdata, false); in ieee80211_vif_use_reserved_switch()
1448 list_for_each_entry_safe(sdata, sdata_tmp, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1450 if (ieee80211_vif_get_chanctx(sdata) != ctx) in ieee80211_vif_use_reserved_switch()
1453 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_use_reserved_switch()
1454 list_move(&sdata->assigned_chanctx_list, in ieee80211_vif_use_reserved_switch()
1456 sdata->reserved_chanctx = NULL; in ieee80211_vif_use_reserved_switch()
1458 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_switch()
1468 list_for_each_entry_safe(sdata, sdata_tmp, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1471 sdata))) in ieee80211_vif_use_reserved_switch()
1474 if (WARN_ON(sdata->reserved_chanctx != ctx)) in ieee80211_vif_use_reserved_switch()
1477 if (!sdata->reserved_ready) in ieee80211_vif_use_reserved_switch()
1480 if (ieee80211_vif_get_chanctx(sdata)) in ieee80211_vif_use_reserved_switch()
1482 sdata); in ieee80211_vif_use_reserved_switch()
1484 err = ieee80211_vif_use_reserved_assign(sdata); in ieee80211_vif_use_reserved_switch()
1487 sdata_info(sdata, in ieee80211_vif_use_reserved_switch()
1490 ieee80211_vif_unreserve_chanctx(sdata); in ieee80211_vif_use_reserved_switch()
1492 &sdata->wdev, in ieee80211_vif_use_reserved_switch()
1521 list_for_each_entry_safe(sdata, sdata_tmp, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1523 ieee80211_vif_unreserve_chanctx(sdata); in ieee80211_vif_use_reserved_switch()
1524 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_switch()
1531 static void __ieee80211_vif_release_channel(struct ieee80211_sub_if_data *sdata) in __ieee80211_vif_release_channel() argument
1533 struct ieee80211_local *local = sdata->local; in __ieee80211_vif_release_channel()
1540 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in __ieee80211_vif_release_channel()
1547 if (sdata->reserved_chanctx) { in __ieee80211_vif_release_channel()
1548 if (sdata->reserved_chanctx->replace_state == in __ieee80211_vif_release_channel()
1551 sdata->reserved_chanctx) > 1) in __ieee80211_vif_release_channel()
1554 ieee80211_vif_unreserve_chanctx(sdata); in __ieee80211_vif_release_channel()
1557 ieee80211_assign_vif_chanctx(sdata, NULL); in __ieee80211_vif_release_channel()
1561 sdata->radar_required = false; in __ieee80211_vif_release_channel()
1568 int ieee80211_vif_use_channel(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_use_channel() argument
1572 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_channel()
1579 WARN_ON(sdata->dev && netif_carrier_ok(sdata->dev)); in ieee80211_vif_use_channel()
1585 sdata->wdev.iftype); in ieee80211_vif_use_channel()
1591 sdata->radar_required = ret; in ieee80211_vif_use_channel()
1593 ret = ieee80211_check_combinations(sdata, chandef, mode, in ieee80211_vif_use_channel()
1598 __ieee80211_vif_release_channel(sdata); in ieee80211_vif_use_channel()
1608 ieee80211_vif_update_chandef(sdata, chandef); in ieee80211_vif_use_channel()
1610 ret = ieee80211_assign_vif_chanctx(sdata, ctx); in ieee80211_vif_use_channel()
1622 sdata->radar_required = false; in ieee80211_vif_use_channel()
1628 int ieee80211_vif_use_reserved_context(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_use_reserved_context() argument
1630 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_reserved_context()
1638 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_use_reserved_context()
1639 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_context()
1648 if (WARN_ON(sdata->reserved_ready)) in ieee80211_vif_use_reserved_context()
1651 sdata->reserved_ready = true; in ieee80211_vif_use_reserved_context()
1655 err = ieee80211_vif_use_reserved_reassign(sdata); in ieee80211_vif_use_reserved_context()
1657 err = ieee80211_vif_use_reserved_assign(sdata); in ieee80211_vif_use_reserved_context()
1692 int ieee80211_vif_change_bandwidth(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_change_bandwidth() argument
1696 struct ieee80211_local *local = sdata->local; in ieee80211_vif_change_bandwidth()
1702 if (!cfg80211_chandef_usable(sdata->local->hw.wiphy, chandef, in ieee80211_vif_change_bandwidth()
1707 if (cfg80211_chandef_identical(chandef, &sdata->vif.bss_conf.chandef)) { in ieee80211_vif_change_bandwidth()
1713 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_20_NOHT) { in ieee80211_vif_change_bandwidth()
1718 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_vif_change_bandwidth()
1753 ieee80211_vif_update_chandef(sdata, chandef); in ieee80211_vif_change_bandwidth()
1764 void ieee80211_vif_release_channel(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_release_channel() argument
1766 WARN_ON(sdata->dev && netif_carrier_ok(sdata->dev)); in ieee80211_vif_release_channel()
1768 lockdep_assert_held(&sdata->local->mtx); in ieee80211_vif_release_channel()
1770 mutex_lock(&sdata->local->chanctx_mtx); in ieee80211_vif_release_channel()
1771 __ieee80211_vif_release_channel(sdata); in ieee80211_vif_release_channel()
1772 mutex_unlock(&sdata->local->chanctx_mtx); in ieee80211_vif_release_channel()
1775 void ieee80211_vif_vlan_copy_chanctx(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_vlan_copy_chanctx() argument
1777 struct ieee80211_local *local = sdata->local; in ieee80211_vif_vlan_copy_chanctx()
1781 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_AP_VLAN || !sdata->bss)) in ieee80211_vif_vlan_copy_chanctx()
1784 ap = container_of(sdata->bss, struct ieee80211_sub_if_data, u.ap); in ieee80211_vif_vlan_copy_chanctx()
1790 rcu_assign_pointer(sdata->vif.chanctx_conf, conf); in ieee80211_vif_vlan_copy_chanctx()