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()
402 struct ieee80211_sub_if_data *sdata; in ieee80211_is_radar_required() local
407 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_is_radar_required()
408 if (sdata->radar_required) { in ieee80211_is_radar_required()
423 struct ieee80211_sub_if_data *sdata; in ieee80211_chanctx_radar_required() local
430 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_chanctx_radar_required()
431 if (!ieee80211_sdata_running(sdata)) in ieee80211_chanctx_radar_required()
433 if (rcu_access_pointer(sdata->vif.chanctx_conf) != conf) in ieee80211_chanctx_radar_required()
435 if (!sdata->radar_required) in ieee80211_chanctx_radar_required()
570 struct ieee80211_sub_if_data *sdata; in ieee80211_recalc_chanctx_chantype() local
577 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_recalc_chanctx_chantype()
579 if (!ieee80211_sdata_running(sdata)) in ieee80211_recalc_chanctx_chantype()
581 if (rcu_access_pointer(sdata->vif.chanctx_conf) != conf) in ieee80211_recalc_chanctx_chantype()
583 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) in ieee80211_recalc_chanctx_chantype()
587 compat = &sdata->vif.bss_conf.chandef; in ieee80211_recalc_chanctx_chantype()
590 &sdata->vif.bss_conf.chandef, compat); in ieee80211_recalc_chanctx_chantype()
640 static int ieee80211_assign_vif_chanctx(struct ieee80211_sub_if_data *sdata, in ieee80211_assign_vif_chanctx() argument
643 struct ieee80211_local *local = sdata->local; in ieee80211_assign_vif_chanctx()
648 if (WARN_ON(sdata->vif.type == NL80211_IFTYPE_NAN)) in ieee80211_assign_vif_chanctx()
651 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_assign_vif_chanctx()
657 drv_unassign_vif_chanctx(local, sdata, curr_ctx); in ieee80211_assign_vif_chanctx()
659 list_del(&sdata->assigned_chanctx_list); in ieee80211_assign_vif_chanctx()
663 ret = drv_assign_vif_chanctx(local, sdata, new_ctx); in ieee80211_assign_vif_chanctx()
668 list_add(&sdata->assigned_chanctx_list, in ieee80211_assign_vif_chanctx()
673 rcu_assign_pointer(sdata->vif.chanctx_conf, conf); in ieee80211_assign_vif_chanctx()
675 sdata->vif.bss_conf.idle = !conf; in ieee80211_assign_vif_chanctx()
685 ieee80211_recalc_txpower(sdata, false); in ieee80211_assign_vif_chanctx()
689 if (sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE && in ieee80211_assign_vif_chanctx()
690 sdata->vif.type != NL80211_IFTYPE_MONITOR) in ieee80211_assign_vif_chanctx()
691 ieee80211_bss_info_change_notify(sdata, in ieee80211_assign_vif_chanctx()
694 ieee80211_check_fast_xmit_iface(sdata); in ieee80211_assign_vif_chanctx()
702 struct ieee80211_sub_if_data *sdata; in ieee80211_recalc_smps_chanctx() local
711 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_recalc_smps_chanctx()
714 if (!ieee80211_sdata_running(sdata)) in ieee80211_recalc_smps_chanctx()
717 if (rcu_access_pointer(sdata->vif.chanctx_conf) != in ieee80211_recalc_smps_chanctx()
721 switch (sdata->vif.type) { in ieee80211_recalc_smps_chanctx()
726 if (!sdata->u.mgd.associated) in ieee80211_recalc_smps_chanctx()
741 switch (sdata->smps_mode) { in ieee80211_recalc_smps_chanctx()
744 sdata->smps_mode); in ieee80211_recalc_smps_chanctx()
747 needed_static = sdata->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
748 needed_dynamic = sdata->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
752 needed_dynamic = sdata->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
765 sdata = rcu_dereference(local->monitor_sdata); in ieee80211_recalc_smps_chanctx()
766 if (sdata && in ieee80211_recalc_smps_chanctx()
767 rcu_access_pointer(sdata->vif.chanctx_conf) == &chanctx->conf) in ieee80211_recalc_smps_chanctx()
792 __ieee80211_vif_copy_chanctx_to_vlans(struct ieee80211_sub_if_data *sdata, in __ieee80211_vif_copy_chanctx_to_vlans() argument
795 struct ieee80211_local *local __maybe_unused = sdata->local; in __ieee80211_vif_copy_chanctx_to_vlans()
799 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_AP)) in __ieee80211_vif_copy_chanctx_to_vlans()
810 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in __ieee80211_vif_copy_chanctx_to_vlans()
817 list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) in __ieee80211_vif_copy_chanctx_to_vlans()
821 void ieee80211_vif_copy_chanctx_to_vlans(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_copy_chanctx_to_vlans() argument
824 struct ieee80211_local *local = sdata->local; in ieee80211_vif_copy_chanctx_to_vlans()
828 __ieee80211_vif_copy_chanctx_to_vlans(sdata, clear); in ieee80211_vif_copy_chanctx_to_vlans()
833 int ieee80211_vif_unreserve_chanctx(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_unreserve_chanctx() argument
835 struct ieee80211_chanctx *ctx = sdata->reserved_chanctx; in ieee80211_vif_unreserve_chanctx()
837 lockdep_assert_held(&sdata->local->chanctx_mtx); in ieee80211_vif_unreserve_chanctx()
842 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_unreserve_chanctx()
843 sdata->reserved_chanctx = NULL; in ieee80211_vif_unreserve_chanctx()
845 if (ieee80211_chanctx_refcount(sdata->local, ctx) == 0) { in ieee80211_vif_unreserve_chanctx()
861 ieee80211_free_chanctx(sdata->local, ctx); in ieee80211_vif_unreserve_chanctx()
868 int ieee80211_vif_reserve_chanctx(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_reserve_chanctx() argument
873 struct ieee80211_local *local = sdata->local; in ieee80211_vif_reserve_chanctx()
878 curr_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_reserve_chanctx()
955 list_add(&sdata->reserved_chanctx_list, &new_ctx->reserved_vifs); in ieee80211_vif_reserve_chanctx()
956 sdata->reserved_chanctx = new_ctx; in ieee80211_vif_reserve_chanctx()
957 sdata->reserved_chandef = *chandef; in ieee80211_vif_reserve_chanctx()
958 sdata->reserved_radar_required = radar_required; in ieee80211_vif_reserve_chanctx()
959 sdata->reserved_ready = false; in ieee80211_vif_reserve_chanctx()
965 ieee80211_vif_chanctx_reservation_complete(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_chanctx_reservation_complete() argument
967 switch (sdata->vif.type) { in ieee80211_vif_chanctx_reservation_complete()
972 ieee80211_queue_work(&sdata->local->hw, in ieee80211_vif_chanctx_reservation_complete()
973 &sdata->csa_finalize_work); in ieee80211_vif_chanctx_reservation_complete()
976 ieee80211_queue_work(&sdata->local->hw, in ieee80211_vif_chanctx_reservation_complete()
977 &sdata->u.mgd.chswitch_work); in ieee80211_vif_chanctx_reservation_complete()
994 ieee80211_vif_update_chandef(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_update_chandef() argument
999 sdata->vif.bss_conf.chandef = *chandef; in ieee80211_vif_update_chandef()
1001 if (sdata->vif.type != NL80211_IFTYPE_AP) in ieee80211_vif_update_chandef()
1004 list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) in ieee80211_vif_update_chandef()
1009 ieee80211_vif_use_reserved_reassign(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_use_reserved_reassign() argument
1011 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_reserved_reassign()
1021 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_use_reserved_reassign()
1022 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_reassign()
1024 if (WARN_ON(!sdata->reserved_ready)) in ieee80211_vif_use_reserved_reassign()
1038 &sdata->reserved_chandef); in ieee80211_vif_use_reserved_reassign()
1044 vif_chsw[0].vif = &sdata->vif; in ieee80211_vif_use_reserved_reassign()
1048 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_use_reserved_reassign()
1049 sdata->reserved_chanctx = NULL; in ieee80211_vif_use_reserved_reassign()
1060 list_move(&sdata->assigned_chanctx_list, &new_ctx->assigned_vifs); in ieee80211_vif_use_reserved_reassign()
1061 rcu_assign_pointer(sdata->vif.chanctx_conf, &new_ctx->conf); in ieee80211_vif_use_reserved_reassign()
1063 if (sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_vif_use_reserved_reassign()
1064 __ieee80211_vif_copy_chanctx_to_vlans(sdata, false); in ieee80211_vif_use_reserved_reassign()
1066 ieee80211_check_fast_xmit_iface(sdata); in ieee80211_vif_use_reserved_reassign()
1071 if (sdata->vif.bss_conf.chandef.width != sdata->reserved_chandef.width) in ieee80211_vif_use_reserved_reassign()
1074 ieee80211_vif_update_chandef(sdata, &sdata->reserved_chandef); in ieee80211_vif_use_reserved_reassign()
1081 ieee80211_bss_info_change_notify(sdata, changed); in ieee80211_vif_use_reserved_reassign()
1084 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_reassign()
1089 ieee80211_vif_use_reserved_assign(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_use_reserved_assign() argument
1091 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_reserved_assign()
1096 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_assign()
1097 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_use_reserved_assign()
1099 if (WARN_ON(!sdata->reserved_ready)) in ieee80211_vif_use_reserved_assign()
1113 &sdata->reserved_chandef); in ieee80211_vif_use_reserved_assign()
1119 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_use_reserved_assign()
1120 sdata->reserved_chanctx = NULL; in ieee80211_vif_use_reserved_assign()
1122 err = ieee80211_assign_vif_chanctx(sdata, new_ctx); in ieee80211_vif_use_reserved_assign()
1131 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_assign()
1136 ieee80211_vif_has_in_place_reservation(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_has_in_place_reservation() argument
1140 lockdep_assert_held(&sdata->local->chanctx_mtx); in ieee80211_vif_has_in_place_reservation()
1142 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_has_in_place_reservation()
1143 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_has_in_place_reservation()
1183 struct ieee80211_sub_if_data *sdata; in ieee80211_chsw_switch_vifs() local
1204 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_chsw_switch_vifs()
1207 sdata)) in ieee80211_chsw_switch_vifs()
1210 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_chsw_switch_vifs()
1211 vif_chsw[i].vif = &sdata->vif; in ieee80211_chsw_switch_vifs()
1268 struct ieee80211_sub_if_data *sdata, *sdata_tmp; in ieee80211_vif_use_reserved_switch() local
1311 list_for_each_entry(sdata, &ctx->replace_ctx->assigned_vifs, in ieee80211_vif_use_reserved_switch()
1314 if (sdata->reserved_chanctx) { in ieee80211_vif_use_reserved_switch()
1316 if (sdata->reserved_ready) in ieee80211_vif_use_reserved_switch()
1333 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1335 if (ieee80211_vif_has_in_place_reservation(sdata) && in ieee80211_vif_use_reserved_switch()
1336 !sdata->reserved_ready) in ieee80211_vif_use_reserved_switch()
1339 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_switch()
1350 if (sdata->reserved_radar_required) in ieee80211_vif_use_reserved_switch()
1401 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1405 if (!ieee80211_vif_has_in_place_reservation(sdata)) in ieee80211_vif_use_reserved_switch()
1408 rcu_assign_pointer(sdata->vif.chanctx_conf, &ctx->conf); in ieee80211_vif_use_reserved_switch()
1410 if (sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_vif_use_reserved_switch()
1411 __ieee80211_vif_copy_chanctx_to_vlans(sdata, in ieee80211_vif_use_reserved_switch()
1414 ieee80211_check_fast_xmit_iface(sdata); in ieee80211_vif_use_reserved_switch()
1416 sdata->radar_required = sdata->reserved_radar_required; in ieee80211_vif_use_reserved_switch()
1418 if (sdata->vif.bss_conf.chandef.width != in ieee80211_vif_use_reserved_switch()
1419 sdata->reserved_chandef.width) in ieee80211_vif_use_reserved_switch()
1422 ieee80211_vif_update_chandef(sdata, &sdata->reserved_chandef); in ieee80211_vif_use_reserved_switch()
1424 ieee80211_bss_info_change_notify(sdata, in ieee80211_vif_use_reserved_switch()
1427 ieee80211_recalc_txpower(sdata, false); in ieee80211_vif_use_reserved_switch()
1435 list_for_each_entry_safe(sdata, sdata_tmp, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1437 if (ieee80211_vif_get_chanctx(sdata) != ctx) in ieee80211_vif_use_reserved_switch()
1440 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_use_reserved_switch()
1441 list_move(&sdata->assigned_chanctx_list, in ieee80211_vif_use_reserved_switch()
1443 sdata->reserved_chanctx = NULL; in ieee80211_vif_use_reserved_switch()
1445 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_switch()
1455 list_for_each_entry_safe(sdata, sdata_tmp, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1458 sdata))) in ieee80211_vif_use_reserved_switch()
1461 if (WARN_ON(sdata->reserved_chanctx != ctx)) in ieee80211_vif_use_reserved_switch()
1464 if (!sdata->reserved_ready) in ieee80211_vif_use_reserved_switch()
1467 if (ieee80211_vif_get_chanctx(sdata)) in ieee80211_vif_use_reserved_switch()
1469 sdata); in ieee80211_vif_use_reserved_switch()
1471 err = ieee80211_vif_use_reserved_assign(sdata); in ieee80211_vif_use_reserved_switch()
1474 sdata_info(sdata, in ieee80211_vif_use_reserved_switch()
1477 ieee80211_vif_unreserve_chanctx(sdata); in ieee80211_vif_use_reserved_switch()
1479 &sdata->wdev, in ieee80211_vif_use_reserved_switch()
1508 list_for_each_entry_safe(sdata, sdata_tmp, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1510 ieee80211_vif_unreserve_chanctx(sdata); in ieee80211_vif_use_reserved_switch()
1511 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_switch()
1518 static void __ieee80211_vif_release_channel(struct ieee80211_sub_if_data *sdata) in __ieee80211_vif_release_channel() argument
1520 struct ieee80211_local *local = sdata->local; in __ieee80211_vif_release_channel()
1527 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in __ieee80211_vif_release_channel()
1534 if (sdata->reserved_chanctx) { in __ieee80211_vif_release_channel()
1535 if (sdata->reserved_chanctx->replace_state == in __ieee80211_vif_release_channel()
1538 sdata->reserved_chanctx) > 1) in __ieee80211_vif_release_channel()
1541 ieee80211_vif_unreserve_chanctx(sdata); in __ieee80211_vif_release_channel()
1544 ieee80211_assign_vif_chanctx(sdata, NULL); in __ieee80211_vif_release_channel()
1548 sdata->radar_required = false; in __ieee80211_vif_release_channel()
1555 int ieee80211_vif_use_channel(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_use_channel() argument
1559 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_channel()
1566 WARN_ON(sdata->dev && netif_carrier_ok(sdata->dev)); in ieee80211_vif_use_channel()
1572 sdata->wdev.iftype); in ieee80211_vif_use_channel()
1578 sdata->radar_required = ret; in ieee80211_vif_use_channel()
1580 ret = ieee80211_check_combinations(sdata, chandef, mode, in ieee80211_vif_use_channel()
1585 __ieee80211_vif_release_channel(sdata); in ieee80211_vif_use_channel()
1595 ieee80211_vif_update_chandef(sdata, chandef); in ieee80211_vif_use_channel()
1597 ret = ieee80211_assign_vif_chanctx(sdata, ctx); in ieee80211_vif_use_channel()
1609 sdata->radar_required = false; in ieee80211_vif_use_channel()
1615 int ieee80211_vif_use_reserved_context(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_use_reserved_context() argument
1617 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_reserved_context()
1625 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_use_reserved_context()
1626 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_context()
1635 if (WARN_ON(sdata->reserved_ready)) in ieee80211_vif_use_reserved_context()
1638 sdata->reserved_ready = true; in ieee80211_vif_use_reserved_context()
1642 err = ieee80211_vif_use_reserved_reassign(sdata); in ieee80211_vif_use_reserved_context()
1644 err = ieee80211_vif_use_reserved_assign(sdata); in ieee80211_vif_use_reserved_context()
1679 int ieee80211_vif_change_bandwidth(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_change_bandwidth() argument
1683 struct ieee80211_local *local = sdata->local; in ieee80211_vif_change_bandwidth()
1689 if (!cfg80211_chandef_usable(sdata->local->hw.wiphy, chandef, in ieee80211_vif_change_bandwidth()
1694 if (cfg80211_chandef_identical(chandef, &sdata->vif.bss_conf.chandef)) { in ieee80211_vif_change_bandwidth()
1700 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_20_NOHT) { in ieee80211_vif_change_bandwidth()
1705 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_vif_change_bandwidth()
1740 ieee80211_vif_update_chandef(sdata, chandef); in ieee80211_vif_change_bandwidth()
1751 void ieee80211_vif_release_channel(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_release_channel() argument
1753 WARN_ON(sdata->dev && netif_carrier_ok(sdata->dev)); in ieee80211_vif_release_channel()
1755 lockdep_assert_held(&sdata->local->mtx); in ieee80211_vif_release_channel()
1757 mutex_lock(&sdata->local->chanctx_mtx); in ieee80211_vif_release_channel()
1758 __ieee80211_vif_release_channel(sdata); in ieee80211_vif_release_channel()
1759 mutex_unlock(&sdata->local->chanctx_mtx); in ieee80211_vif_release_channel()
1762 void ieee80211_vif_vlan_copy_chanctx(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_vlan_copy_chanctx() argument
1764 struct ieee80211_local *local = sdata->local; in ieee80211_vif_vlan_copy_chanctx()
1768 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_AP_VLAN || !sdata->bss)) in ieee80211_vif_vlan_copy_chanctx()
1771 ap = container_of(sdata->bss, struct ieee80211_sub_if_data, u.ap); in ieee80211_vif_vlan_copy_chanctx()
1777 rcu_assign_pointer(sdata->vif.chanctx_conf, conf); in ieee80211_vif_vlan_copy_chanctx()