Lines Matching refs:sdata

18 	struct ieee80211_sub_if_data *sdata;  in ieee80211_chanctx_num_assigned()  local
23 list_for_each_entry(sdata, &ctx->assigned_vifs, assigned_chanctx_list) in ieee80211_chanctx_num_assigned()
32 struct ieee80211_sub_if_data *sdata; in ieee80211_chanctx_num_reserved() local
37 list_for_each_entry(sdata, &ctx->reserved_vifs, reserved_chanctx_list) in ieee80211_chanctx_num_reserved()
70 ieee80211_vif_get_chanctx(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_get_chanctx() argument
72 struct ieee80211_local *local __maybe_unused = sdata->local; in ieee80211_vif_get_chanctx()
75 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_vif_get_chanctx()
88 struct ieee80211_sub_if_data *sdata; in ieee80211_chanctx_reserved_chandef() local
92 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_chanctx_reserved_chandef()
95 compat = &sdata->reserved_chandef; in ieee80211_chanctx_reserved_chandef()
97 compat = cfg80211_chandef_compatible(&sdata->reserved_chandef, in ieee80211_chanctx_reserved_chandef()
111 struct ieee80211_sub_if_data *sdata; in ieee80211_chanctx_non_reserved_chandef() local
115 list_for_each_entry(sdata, &ctx->assigned_vifs, in ieee80211_chanctx_non_reserved_chandef()
117 if (sdata->reserved_chanctx != NULL) in ieee80211_chanctx_non_reserved_chandef()
121 compat = &sdata->vif.bss_conf.chandef; in ieee80211_chanctx_non_reserved_chandef()
124 &sdata->vif.bss_conf.chandef, compat); in ieee80211_chanctx_non_reserved_chandef()
228 ieee80211_get_max_required_bw(struct ieee80211_sub_if_data *sdata) in ieee80211_get_max_required_bw() argument
234 list_for_each_entry_rcu(sta, &sdata->local->sta_list, list) { in ieee80211_get_max_required_bw()
235 if (sdata != sta->sdata && in ieee80211_get_max_required_bw()
236 !(sta->sdata->bss && sta->sdata->bss == sdata->bss)) in ieee80211_get_max_required_bw()
250 struct ieee80211_sub_if_data *sdata; in ieee80211_get_chanctx_max_required_bw() local
254 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_get_chanctx_max_required_bw()
255 struct ieee80211_vif *vif = &sdata->vif; in ieee80211_get_chanctx_max_required_bw()
258 if (!ieee80211_sdata_running(sdata)) in ieee80211_get_chanctx_max_required_bw()
261 if (rcu_access_pointer(sdata->vif.chanctx_conf) != conf) in ieee80211_get_chanctx_max_required_bw()
267 width = ieee80211_get_max_required_bw(sdata); in ieee80211_get_chanctx_max_required_bw()
276 ieee80211_get_max_required_bw(sdata)); in ieee80211_get_chanctx_max_required_bw()
298 sdata = rcu_dereference(local->monitor_sdata); in ieee80211_get_chanctx_max_required_bw()
299 if (sdata && rcu_access_pointer(sdata->vif.chanctx_conf) == conf) in ieee80211_get_chanctx_max_required_bw()
366 if (!ieee80211_sdata_running(sta->sdata)) in ieee80211_chan_bw_change()
369 if (rcu_access_pointer(sta->sdata->vif.chanctx_conf) != in ieee80211_chan_bw_change()
502 struct ieee80211_sub_if_data *sdata; in ieee80211_is_radar_required() local
507 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_is_radar_required()
508 if (sdata->radar_required) { in ieee80211_is_radar_required()
523 struct ieee80211_sub_if_data *sdata; in ieee80211_chanctx_radar_required() local
530 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_chanctx_radar_required()
531 if (!ieee80211_sdata_running(sdata)) in ieee80211_chanctx_radar_required()
533 if (rcu_access_pointer(sdata->vif.chanctx_conf) != conf) in ieee80211_chanctx_radar_required()
535 if (!sdata->radar_required) in ieee80211_chanctx_radar_required()
678 struct ieee80211_sub_if_data *sdata; in ieee80211_recalc_chanctx_chantype() local
685 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_recalc_chanctx_chantype()
687 if (!ieee80211_sdata_running(sdata)) in ieee80211_recalc_chanctx_chantype()
689 if (rcu_access_pointer(sdata->vif.chanctx_conf) != conf) in ieee80211_recalc_chanctx_chantype()
691 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) in ieee80211_recalc_chanctx_chantype()
695 compat = &sdata->vif.bss_conf.chandef; in ieee80211_recalc_chanctx_chantype()
698 &sdata->vif.bss_conf.chandef, compat); in ieee80211_recalc_chanctx_chantype()
748 static int ieee80211_assign_vif_chanctx(struct ieee80211_sub_if_data *sdata, in ieee80211_assign_vif_chanctx() argument
751 struct ieee80211_local *local = sdata->local; in ieee80211_assign_vif_chanctx()
756 if (WARN_ON(sdata->vif.type == NL80211_IFTYPE_NAN)) in ieee80211_assign_vif_chanctx()
759 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_assign_vif_chanctx()
765 drv_unassign_vif_chanctx(local, sdata, curr_ctx); in ieee80211_assign_vif_chanctx()
767 list_del(&sdata->assigned_chanctx_list); in ieee80211_assign_vif_chanctx()
771 ret = drv_assign_vif_chanctx(local, sdata, new_ctx); in ieee80211_assign_vif_chanctx()
776 list_add(&sdata->assigned_chanctx_list, in ieee80211_assign_vif_chanctx()
781 rcu_assign_pointer(sdata->vif.chanctx_conf, conf); in ieee80211_assign_vif_chanctx()
783 sdata->vif.bss_conf.idle = !conf; in ieee80211_assign_vif_chanctx()
793 ieee80211_recalc_txpower(sdata, false); in ieee80211_assign_vif_chanctx()
797 if (sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE && in ieee80211_assign_vif_chanctx()
798 sdata->vif.type != NL80211_IFTYPE_MONITOR) in ieee80211_assign_vif_chanctx()
799 ieee80211_bss_info_change_notify(sdata, in ieee80211_assign_vif_chanctx()
802 ieee80211_check_fast_xmit_iface(sdata); in ieee80211_assign_vif_chanctx()
810 struct ieee80211_sub_if_data *sdata; in ieee80211_recalc_smps_chanctx() local
819 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_recalc_smps_chanctx()
822 if (!ieee80211_sdata_running(sdata)) in ieee80211_recalc_smps_chanctx()
825 if (rcu_access_pointer(sdata->vif.chanctx_conf) != in ieee80211_recalc_smps_chanctx()
829 switch (sdata->vif.type) { in ieee80211_recalc_smps_chanctx()
834 if (!sdata->u.mgd.associated) in ieee80211_recalc_smps_chanctx()
848 switch (sdata->smps_mode) { in ieee80211_recalc_smps_chanctx()
851 sdata->smps_mode); in ieee80211_recalc_smps_chanctx()
854 needed_static = sdata->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
855 needed_dynamic = sdata->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
859 needed_dynamic = sdata->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
872 sdata = rcu_dereference(local->monitor_sdata); in ieee80211_recalc_smps_chanctx()
873 if (sdata && in ieee80211_recalc_smps_chanctx()
874 rcu_access_pointer(sdata->vif.chanctx_conf) == &chanctx->conf) in ieee80211_recalc_smps_chanctx()
899 __ieee80211_vif_copy_chanctx_to_vlans(struct ieee80211_sub_if_data *sdata, in __ieee80211_vif_copy_chanctx_to_vlans() argument
902 struct ieee80211_local *local __maybe_unused = sdata->local; in __ieee80211_vif_copy_chanctx_to_vlans()
906 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_AP)) in __ieee80211_vif_copy_chanctx_to_vlans()
917 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in __ieee80211_vif_copy_chanctx_to_vlans()
924 list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) in __ieee80211_vif_copy_chanctx_to_vlans()
928 void ieee80211_vif_copy_chanctx_to_vlans(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_copy_chanctx_to_vlans() argument
931 struct ieee80211_local *local = sdata->local; in ieee80211_vif_copy_chanctx_to_vlans()
935 __ieee80211_vif_copy_chanctx_to_vlans(sdata, clear); in ieee80211_vif_copy_chanctx_to_vlans()
940 int ieee80211_vif_unreserve_chanctx(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_unreserve_chanctx() argument
942 struct ieee80211_chanctx *ctx = sdata->reserved_chanctx; in ieee80211_vif_unreserve_chanctx()
944 lockdep_assert_held(&sdata->local->chanctx_mtx); in ieee80211_vif_unreserve_chanctx()
949 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_unreserve_chanctx()
950 sdata->reserved_chanctx = NULL; in ieee80211_vif_unreserve_chanctx()
952 if (ieee80211_chanctx_refcount(sdata->local, ctx) == 0) { in ieee80211_vif_unreserve_chanctx()
968 ieee80211_free_chanctx(sdata->local, ctx); in ieee80211_vif_unreserve_chanctx()
975 int ieee80211_vif_reserve_chanctx(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_reserve_chanctx() argument
980 struct ieee80211_local *local = sdata->local; in ieee80211_vif_reserve_chanctx()
985 curr_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_reserve_chanctx()
1062 list_add(&sdata->reserved_chanctx_list, &new_ctx->reserved_vifs); in ieee80211_vif_reserve_chanctx()
1063 sdata->reserved_chanctx = new_ctx; in ieee80211_vif_reserve_chanctx()
1064 sdata->reserved_chandef = *chandef; in ieee80211_vif_reserve_chanctx()
1065 sdata->reserved_radar_required = radar_required; in ieee80211_vif_reserve_chanctx()
1066 sdata->reserved_ready = false; in ieee80211_vif_reserve_chanctx()
1072 ieee80211_vif_chanctx_reservation_complete(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_chanctx_reservation_complete() argument
1074 switch (sdata->vif.type) { in ieee80211_vif_chanctx_reservation_complete()
1079 ieee80211_queue_work(&sdata->local->hw, in ieee80211_vif_chanctx_reservation_complete()
1080 &sdata->csa_finalize_work); in ieee80211_vif_chanctx_reservation_complete()
1083 ieee80211_queue_work(&sdata->local->hw, in ieee80211_vif_chanctx_reservation_complete()
1084 &sdata->u.mgd.chswitch_work); in ieee80211_vif_chanctx_reservation_complete()
1101 ieee80211_vif_update_chandef(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_update_chandef() argument
1106 sdata->vif.bss_conf.chandef = *chandef; in ieee80211_vif_update_chandef()
1108 if (sdata->vif.type != NL80211_IFTYPE_AP) in ieee80211_vif_update_chandef()
1111 list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) in ieee80211_vif_update_chandef()
1116 ieee80211_vif_use_reserved_reassign(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_use_reserved_reassign() argument
1118 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_reserved_reassign()
1128 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_use_reserved_reassign()
1129 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_reassign()
1131 if (WARN_ON(!sdata->reserved_ready)) in ieee80211_vif_use_reserved_reassign()
1145 &sdata->reserved_chandef); in ieee80211_vif_use_reserved_reassign()
1149 if (sdata->vif.bss_conf.chandef.width != sdata->reserved_chandef.width) in ieee80211_vif_use_reserved_reassign()
1152 ieee80211_vif_update_chandef(sdata, &sdata->reserved_chandef); in ieee80211_vif_use_reserved_reassign()
1156 vif_chsw[0].vif = &sdata->vif; in ieee80211_vif_use_reserved_reassign()
1160 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_use_reserved_reassign()
1161 sdata->reserved_chanctx = NULL; in ieee80211_vif_use_reserved_reassign()
1172 list_move(&sdata->assigned_chanctx_list, &new_ctx->assigned_vifs); in ieee80211_vif_use_reserved_reassign()
1173 rcu_assign_pointer(sdata->vif.chanctx_conf, &new_ctx->conf); in ieee80211_vif_use_reserved_reassign()
1175 if (sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_vif_use_reserved_reassign()
1176 __ieee80211_vif_copy_chanctx_to_vlans(sdata, false); in ieee80211_vif_use_reserved_reassign()
1178 ieee80211_check_fast_xmit_iface(sdata); in ieee80211_vif_use_reserved_reassign()
1188 ieee80211_bss_info_change_notify(sdata, changed); in ieee80211_vif_use_reserved_reassign()
1191 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_reassign()
1196 ieee80211_vif_use_reserved_assign(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_use_reserved_assign() argument
1198 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_reserved_assign()
1203 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_assign()
1204 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_use_reserved_assign()
1206 if (WARN_ON(!sdata->reserved_ready)) in ieee80211_vif_use_reserved_assign()
1220 &sdata->reserved_chandef); in ieee80211_vif_use_reserved_assign()
1226 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_use_reserved_assign()
1227 sdata->reserved_chanctx = NULL; in ieee80211_vif_use_reserved_assign()
1229 err = ieee80211_assign_vif_chanctx(sdata, new_ctx); in ieee80211_vif_use_reserved_assign()
1238 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_assign()
1243 ieee80211_vif_has_in_place_reservation(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_has_in_place_reservation() argument
1247 lockdep_assert_held(&sdata->local->chanctx_mtx); in ieee80211_vif_has_in_place_reservation()
1249 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_has_in_place_reservation()
1250 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_has_in_place_reservation()
1290 struct ieee80211_sub_if_data *sdata; in ieee80211_chsw_switch_vifs() local
1311 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_chsw_switch_vifs()
1314 sdata)) in ieee80211_chsw_switch_vifs()
1317 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_chsw_switch_vifs()
1318 vif_chsw[i].vif = &sdata->vif; in ieee80211_chsw_switch_vifs()
1375 struct ieee80211_sub_if_data *sdata, *sdata_tmp; in ieee80211_vif_use_reserved_switch() local
1418 list_for_each_entry(sdata, &ctx->replace_ctx->assigned_vifs, in ieee80211_vif_use_reserved_switch()
1421 if (sdata->reserved_chanctx) { in ieee80211_vif_use_reserved_switch()
1423 if (sdata->reserved_ready) in ieee80211_vif_use_reserved_switch()
1440 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1442 if (ieee80211_vif_has_in_place_reservation(sdata) && in ieee80211_vif_use_reserved_switch()
1443 !sdata->reserved_ready) in ieee80211_vif_use_reserved_switch()
1446 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_switch()
1457 if (sdata->reserved_radar_required) in ieee80211_vif_use_reserved_switch()
1508 list_for_each_entry(sdata, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1512 if (!ieee80211_vif_has_in_place_reservation(sdata)) in ieee80211_vif_use_reserved_switch()
1515 rcu_assign_pointer(sdata->vif.chanctx_conf, &ctx->conf); in ieee80211_vif_use_reserved_switch()
1517 if (sdata->vif.type == NL80211_IFTYPE_AP) in ieee80211_vif_use_reserved_switch()
1518 __ieee80211_vif_copy_chanctx_to_vlans(sdata, in ieee80211_vif_use_reserved_switch()
1521 ieee80211_check_fast_xmit_iface(sdata); in ieee80211_vif_use_reserved_switch()
1523 sdata->radar_required = sdata->reserved_radar_required; in ieee80211_vif_use_reserved_switch()
1525 if (sdata->vif.bss_conf.chandef.width != in ieee80211_vif_use_reserved_switch()
1526 sdata->reserved_chandef.width) in ieee80211_vif_use_reserved_switch()
1529 ieee80211_vif_update_chandef(sdata, &sdata->reserved_chandef); in ieee80211_vif_use_reserved_switch()
1531 ieee80211_bss_info_change_notify(sdata, in ieee80211_vif_use_reserved_switch()
1534 ieee80211_recalc_txpower(sdata, false); in ieee80211_vif_use_reserved_switch()
1542 list_for_each_entry_safe(sdata, sdata_tmp, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1544 if (ieee80211_vif_get_chanctx(sdata) != ctx) in ieee80211_vif_use_reserved_switch()
1547 list_del(&sdata->reserved_chanctx_list); in ieee80211_vif_use_reserved_switch()
1548 list_move(&sdata->assigned_chanctx_list, in ieee80211_vif_use_reserved_switch()
1550 sdata->reserved_chanctx = NULL; in ieee80211_vif_use_reserved_switch()
1552 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_switch()
1562 list_for_each_entry_safe(sdata, sdata_tmp, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1565 sdata))) in ieee80211_vif_use_reserved_switch()
1568 if (WARN_ON(sdata->reserved_chanctx != ctx)) in ieee80211_vif_use_reserved_switch()
1571 if (!sdata->reserved_ready) in ieee80211_vif_use_reserved_switch()
1574 if (ieee80211_vif_get_chanctx(sdata)) in ieee80211_vif_use_reserved_switch()
1576 sdata); in ieee80211_vif_use_reserved_switch()
1578 err = ieee80211_vif_use_reserved_assign(sdata); in ieee80211_vif_use_reserved_switch()
1581 sdata_info(sdata, in ieee80211_vif_use_reserved_switch()
1584 ieee80211_vif_unreserve_chanctx(sdata); in ieee80211_vif_use_reserved_switch()
1586 &sdata->wdev, in ieee80211_vif_use_reserved_switch()
1615 list_for_each_entry_safe(sdata, sdata_tmp, &ctx->reserved_vifs, in ieee80211_vif_use_reserved_switch()
1617 ieee80211_vif_unreserve_chanctx(sdata); in ieee80211_vif_use_reserved_switch()
1618 ieee80211_vif_chanctx_reservation_complete(sdata); in ieee80211_vif_use_reserved_switch()
1625 static void __ieee80211_vif_release_channel(struct ieee80211_sub_if_data *sdata) in __ieee80211_vif_release_channel() argument
1627 struct ieee80211_local *local = sdata->local; in __ieee80211_vif_release_channel()
1634 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in __ieee80211_vif_release_channel()
1641 if (sdata->reserved_chanctx) { in __ieee80211_vif_release_channel()
1642 if (sdata->reserved_chanctx->replace_state == in __ieee80211_vif_release_channel()
1645 sdata->reserved_chanctx) > 1) in __ieee80211_vif_release_channel()
1648 ieee80211_vif_unreserve_chanctx(sdata); in __ieee80211_vif_release_channel()
1651 ieee80211_assign_vif_chanctx(sdata, NULL); in __ieee80211_vif_release_channel()
1655 sdata->radar_required = false; in __ieee80211_vif_release_channel()
1662 int ieee80211_vif_use_channel(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_use_channel() argument
1666 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_channel()
1673 WARN_ON(sdata->dev && netif_carrier_ok(sdata->dev)); in ieee80211_vif_use_channel()
1679 sdata->wdev.iftype); in ieee80211_vif_use_channel()
1685 sdata->radar_required = ret; in ieee80211_vif_use_channel()
1687 ret = ieee80211_check_combinations(sdata, chandef, mode, in ieee80211_vif_use_channel()
1692 __ieee80211_vif_release_channel(sdata); in ieee80211_vif_use_channel()
1702 ieee80211_vif_update_chandef(sdata, chandef); in ieee80211_vif_use_channel()
1704 ret = ieee80211_assign_vif_chanctx(sdata, ctx); in ieee80211_vif_use_channel()
1716 sdata->radar_required = false; in ieee80211_vif_use_channel()
1722 int ieee80211_vif_use_reserved_context(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_use_reserved_context() argument
1724 struct ieee80211_local *local = sdata->local; in ieee80211_vif_use_reserved_context()
1732 new_ctx = sdata->reserved_chanctx; in ieee80211_vif_use_reserved_context()
1733 old_ctx = ieee80211_vif_get_chanctx(sdata); in ieee80211_vif_use_reserved_context()
1742 if (WARN_ON(sdata->reserved_ready)) in ieee80211_vif_use_reserved_context()
1745 sdata->reserved_ready = true; in ieee80211_vif_use_reserved_context()
1749 err = ieee80211_vif_use_reserved_reassign(sdata); in ieee80211_vif_use_reserved_context()
1751 err = ieee80211_vif_use_reserved_assign(sdata); in ieee80211_vif_use_reserved_context()
1786 int ieee80211_vif_change_bandwidth(struct ieee80211_sub_if_data *sdata, in ieee80211_vif_change_bandwidth() argument
1790 struct ieee80211_local *local = sdata->local; in ieee80211_vif_change_bandwidth()
1796 if (!cfg80211_chandef_usable(sdata->local->hw.wiphy, chandef, in ieee80211_vif_change_bandwidth()
1801 if (cfg80211_chandef_identical(chandef, &sdata->vif.bss_conf.chandef)) { in ieee80211_vif_change_bandwidth()
1807 sdata->vif.bss_conf.chandef.width == NL80211_CHAN_WIDTH_20_NOHT) { in ieee80211_vif_change_bandwidth()
1812 conf = rcu_dereference_protected(sdata->vif.chanctx_conf, in ieee80211_vif_change_bandwidth()
1847 ieee80211_vif_update_chandef(sdata, chandef); in ieee80211_vif_change_bandwidth()
1858 void ieee80211_vif_release_channel(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_release_channel() argument
1860 WARN_ON(sdata->dev && netif_carrier_ok(sdata->dev)); in ieee80211_vif_release_channel()
1862 lockdep_assert_held(&sdata->local->mtx); in ieee80211_vif_release_channel()
1864 mutex_lock(&sdata->local->chanctx_mtx); in ieee80211_vif_release_channel()
1865 __ieee80211_vif_release_channel(sdata); in ieee80211_vif_release_channel()
1866 mutex_unlock(&sdata->local->chanctx_mtx); in ieee80211_vif_release_channel()
1869 void ieee80211_vif_vlan_copy_chanctx(struct ieee80211_sub_if_data *sdata) in ieee80211_vif_vlan_copy_chanctx() argument
1871 struct ieee80211_local *local = sdata->local; in ieee80211_vif_vlan_copy_chanctx()
1875 if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_AP_VLAN || !sdata->bss)) in ieee80211_vif_vlan_copy_chanctx()
1878 ap = container_of(sdata->bss, struct ieee80211_sub_if_data, u.ap); in ieee80211_vif_vlan_copy_chanctx()
1884 rcu_assign_pointer(sdata->vif.chanctx_conf, conf); in ieee80211_vif_vlan_copy_chanctx()