Lines Matching full:link
18 struct ieee80211_link_data *link; in ieee80211_chanctx_num_assigned() local
23 list_for_each_entry(link, &ctx->assigned_links, assigned_chanctx_list) in ieee80211_chanctx_num_assigned()
32 struct ieee80211_link_data *link; in ieee80211_chanctx_num_reserved() local
37 list_for_each_entry(link, &ctx->reserved_links, reserved_chanctx_list) in ieee80211_chanctx_num_reserved()
76 ieee80211_link_get_chanctx(struct ieee80211_link_data *link) in ieee80211_link_get_chanctx() argument
78 struct ieee80211_local *local __maybe_unused = link->sdata->local; in ieee80211_link_get_chanctx()
81 conf = rcu_dereference_protected(link->conf->chanctx_conf, in ieee80211_link_get_chanctx()
146 struct ieee80211_link_data *link; in ieee80211_chanctx_reserved_chanreq() local
153 list_for_each_entry(link, &ctx->reserved_links, reserved_chanctx_list) { in ieee80211_chanctx_reserved_chanreq()
154 req = ieee80211_chanreq_compatible(&link->reserved, req, tmp); in ieee80211_chanctx_reserved_chanreq()
168 struct ieee80211_link_data *link; in ieee80211_chanctx_non_reserved_chandef() local
173 list_for_each_entry(link, &ctx->assigned_links, assigned_chanctx_list) { in ieee80211_chanctx_non_reserved_chandef()
174 struct ieee80211_bss_conf *link_conf = link->conf; in ieee80211_chanctx_non_reserved_chandef()
176 if (link->reserved_chanctx) in ieee80211_chanctx_non_reserved_chandef()
244 link_sta = wiphy_dereference(sta->local->hw.wiphy, sta->link[link_id]); in ieee80211_get_sta_bw()
246 /* no effect if this STA has no presence on this link */ in ieee80211_get_sta_bw()
289 ieee80211_get_max_required_bw(struct ieee80211_link_data *link) in ieee80211_get_max_required_bw() argument
291 struct ieee80211_sub_if_data *sdata = link->sdata; in ieee80211_get_max_required_bw()
292 unsigned int link_id = link->link_id; in ieee80211_get_max_required_bw()
316 struct ieee80211_link_data *link; in ieee80211_get_chanctx_max_required_bw() local
322 for_each_sdata_link(local, link) { in ieee80211_get_chanctx_max_required_bw()
326 if (link->reserved_chanctx != ctx) in ieee80211_get_chanctx_max_required_bw()
328 } else if (link != rsvd_for && in ieee80211_get_chanctx_max_required_bw()
329 rcu_access_pointer(link->conf->chanctx_conf) != &ctx->conf) in ieee80211_get_chanctx_max_required_bw()
332 switch (link->sdata->vif.type) { in ieee80211_get_chanctx_max_required_bw()
334 if (!link->sdata->vif.cfg.assoc) { in ieee80211_get_chanctx_max_required_bw()
341 width = link->conf->chanreq.oper.width; in ieee80211_get_chanctx_max_required_bw()
352 width = ieee80211_get_max_required_bw(link); in ieee80211_get_chanctx_max_required_bw()
364 width = link->conf->chanreq.oper.width; in ieee80211_get_chanctx_max_required_bw()
451 for (link_id = 0; link_id < ARRAY_SIZE(sta->sdata->link); link_id++) { in ieee80211_chan_bw_change()
452 struct ieee80211_link_data *link = in ieee80211_chan_bw_change() local
453 rcu_dereference(sdata->link[link_id]); in ieee80211_chan_bw_change()
458 if (!link) in ieee80211_chan_bw_change()
461 link_conf = link->conf; in ieee80211_chan_bw_change()
466 link_sta = rcu_dereference(sta->link[link_id]); in ieee80211_chan_bw_change()
471 new_chandef = &link->reserved.oper; in ieee80211_chan_bw_change()
593 /* Note: if successful, the returned chanctx is reserved for the link */
596 struct ieee80211_link_data *link, in ieee80211_find_chanctx() argument
608 if (WARN_ON(link->reserved_chanctx)) in ieee80211_find_chanctx()
635 link->reserved_chanctx = ctx; in ieee80211_find_chanctx()
636 list_add(&link->reserved_chanctx_list, in ieee80211_find_chanctx()
651 struct ieee80211_link_data *link; in ieee80211_is_radar_required() local
660 for_each_sdata_link(local, link) { in ieee80211_is_radar_required()
661 if (link->radar_required) { in ieee80211_is_radar_required()
665 chan = link->conf->chanreq.oper.chan; in ieee80211_is_radar_required()
669 * as it's derived from a channel tied to a link. If in ieee80211_is_radar_required()
690 struct ieee80211_link_data *link; in ieee80211_chanctx_radar_required() local
694 for_each_sdata_link(local, link) { in ieee80211_chanctx_radar_required()
695 if (rcu_access_pointer(link->conf->chanctx_conf) != conf) in ieee80211_chanctx_radar_required()
697 if (!link->radar_required) in ieee80211_chanctx_radar_required()
818 struct ieee80211_link_data *link; in ieee80211_recalc_chanctx_chantype() local
824 for_each_sdata_link(local, link) { in ieee80211_recalc_chanctx_chantype()
827 if (link->sdata->vif.type == NL80211_IFTYPE_AP_VLAN) in ieee80211_recalc_chanctx_chantype()
830 link_conf = link->conf; in ieee80211_recalc_chanctx_chantype()
860 link = sdata_dereference(sdata->link[tdls_link_id], sdata); in ieee80211_recalc_chanctx_chantype()
861 if (!link) in ieee80211_recalc_chanctx_chantype()
864 if (rcu_access_pointer(link->conf->chanctx_conf) != conf) in ieee80211_recalc_chanctx_chantype()
896 static int ieee80211_assign_link_chanctx(struct ieee80211_link_data *link, in ieee80211_assign_link_chanctx() argument
900 struct ieee80211_sub_if_data *sdata = link->sdata; in ieee80211_assign_link_chanctx()
910 conf = rcu_dereference_protected(link->conf->chanctx_conf, in ieee80211_assign_link_chanctx()
916 drv_unassign_vif_chanctx(local, sdata, link->conf, curr_ctx); in ieee80211_assign_link_chanctx()
918 list_del(&link->assigned_chanctx_list); in ieee80211_assign_link_chanctx()
922 /* recalc considering the link we'll use it for now */ in ieee80211_assign_link_chanctx()
923 ieee80211_recalc_chanctx_min_def(local, new_ctx, link, false); in ieee80211_assign_link_chanctx()
925 ret = drv_assign_vif_chanctx(local, sdata, link->conf, new_ctx); in ieee80211_assign_link_chanctx()
934 list_add(&link->assigned_chanctx_list, in ieee80211_assign_link_chanctx()
941 rcu_assign_pointer(link->conf->chanctx_conf, conf); in ieee80211_assign_link_chanctx()
951 ieee80211_recalc_txpower(link, false); in ieee80211_assign_link_chanctx()
987 struct ieee80211_link_data *link; in ieee80211_recalc_smps_chanctx() local
994 for_each_sdata_link(local, link) { in ieee80211_recalc_smps_chanctx()
997 switch (link->sdata->vif.type) { in ieee80211_recalc_smps_chanctx()
999 if (!link->sdata->u.mgd.associated) in ieee80211_recalc_smps_chanctx()
1015 if (rcu_access_pointer(link->conf->chanctx_conf) != &chanctx->conf) in ieee80211_recalc_smps_chanctx()
1018 if (link->sdata->vif.type == NL80211_IFTYPE_MONITOR) { in ieee80211_recalc_smps_chanctx()
1023 switch (link->smps_mode) { in ieee80211_recalc_smps_chanctx()
1026 link->smps_mode); in ieee80211_recalc_smps_chanctx()
1029 needed_static = link->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
1030 needed_dynamic = link->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
1034 needed_dynamic = link->needed_rx_chains; in ieee80211_recalc_smps_chanctx()
1062 __ieee80211_link_copy_chanctx_to_vlans(struct ieee80211_link_data *link, in __ieee80211_link_copy_chanctx_to_vlans() argument
1065 struct ieee80211_sub_if_data *sdata = link->sdata; in __ieee80211_link_copy_chanctx_to_vlans()
1066 unsigned int link_id = link->link_id; in __ieee80211_link_copy_chanctx_to_vlans()
1067 struct ieee80211_bss_conf *link_conf = link->conf; in __ieee80211_link_copy_chanctx_to_vlans()
1102 void ieee80211_link_copy_chanctx_to_vlans(struct ieee80211_link_data *link, in ieee80211_link_copy_chanctx_to_vlans() argument
1105 struct ieee80211_local *local = link->sdata->local; in ieee80211_link_copy_chanctx_to_vlans()
1109 __ieee80211_link_copy_chanctx_to_vlans(link, clear); in ieee80211_link_copy_chanctx_to_vlans()
1112 void ieee80211_link_unreserve_chanctx(struct ieee80211_link_data *link) in ieee80211_link_unreserve_chanctx() argument
1114 struct ieee80211_sub_if_data *sdata = link->sdata; in ieee80211_link_unreserve_chanctx()
1115 struct ieee80211_chanctx *ctx = link->reserved_chanctx; in ieee80211_link_unreserve_chanctx()
1122 list_del(&link->reserved_chanctx_list); in ieee80211_link_unreserve_chanctx()
1123 link->reserved_chanctx = NULL; in ieee80211_link_unreserve_chanctx()
1160 * Another link already requested this context for a in ieee80211_replace_chanctx()
1250 int ieee80211_link_reserve_chanctx(struct ieee80211_link_data *link, in ieee80211_link_reserve_chanctx() argument
1255 struct ieee80211_sub_if_data *sdata = link->sdata; in ieee80211_link_reserve_chanctx()
1262 curr_ctx = ieee80211_link_get_chanctx(link); in ieee80211_link_reserve_chanctx()
1281 list_add(&link->reserved_chanctx_list, &new_ctx->reserved_links); in ieee80211_link_reserve_chanctx()
1282 link->reserved_chanctx = new_ctx; in ieee80211_link_reserve_chanctx()
1283 link->reserved = *chanreq; in ieee80211_link_reserve_chanctx()
1284 link->reserved_radar_required = radar_required; in ieee80211_link_reserve_chanctx()
1285 link->reserved_ready = false; in ieee80211_link_reserve_chanctx()
1291 ieee80211_link_chanctx_reservation_complete(struct ieee80211_link_data *link) in ieee80211_link_chanctx_reservation_complete() argument
1293 struct ieee80211_sub_if_data *sdata = link->sdata; in ieee80211_link_chanctx_reservation_complete()
1301 &link->csa.finalize_work); in ieee80211_link_chanctx_reservation_complete()
1305 &link->u.mgd.csa.switch_work, 0); in ieee80211_link_chanctx_reservation_complete()
1322 ieee80211_link_update_chanreq(struct ieee80211_link_data *link, in ieee80211_link_update_chanreq() argument
1325 struct ieee80211_sub_if_data *sdata = link->sdata; in ieee80211_link_update_chanreq()
1326 unsigned int link_id = link->link_id; in ieee80211_link_update_chanreq()
1329 link->conf->chanreq = *chanreq; in ieee80211_link_update_chanreq()
1347 ieee80211_link_use_reserved_reassign(struct ieee80211_link_data *link) in ieee80211_link_use_reserved_reassign() argument
1349 struct ieee80211_sub_if_data *sdata = link->sdata; in ieee80211_link_use_reserved_reassign()
1350 struct ieee80211_bss_conf *link_conf = link->conf; in ieee80211_link_use_reserved_reassign()
1361 new_ctx = link->reserved_chanctx; in ieee80211_link_use_reserved_reassign()
1362 old_ctx = ieee80211_link_get_chanctx(link); in ieee80211_link_use_reserved_reassign()
1364 if (WARN_ON(!link->reserved_ready)) in ieee80211_link_use_reserved_reassign()
1378 &link->reserved, in ieee80211_link_use_reserved_reassign()
1383 if (link_conf->chanreq.oper.width != link->reserved.oper.width) in ieee80211_link_use_reserved_reassign()
1386 ieee80211_link_update_chanreq(link, &link->reserved); in ieee80211_link_use_reserved_reassign()
1388 _ieee80211_change_chanctx(local, new_ctx, old_ctx, chanreq, link); in ieee80211_link_use_reserved_reassign()
1393 vif_chsw[0].link_conf = link->conf; in ieee80211_link_use_reserved_reassign()
1395 list_del(&link->reserved_chanctx_list); in ieee80211_link_use_reserved_reassign()
1396 link->reserved_chanctx = NULL; in ieee80211_link_use_reserved_reassign()
1407 link->radar_required = link->reserved_radar_required; in ieee80211_link_use_reserved_reassign()
1408 list_move(&link->assigned_chanctx_list, &new_ctx->assigned_links); in ieee80211_link_use_reserved_reassign()
1412 __ieee80211_link_copy_chanctx_to_vlans(link, false); in ieee80211_link_use_reserved_reassign()
1424 ieee80211_link_info_change_notify(sdata, link, changed); in ieee80211_link_use_reserved_reassign()
1427 ieee80211_link_chanctx_reservation_complete(link); in ieee80211_link_use_reserved_reassign()
1432 ieee80211_link_use_reserved_assign(struct ieee80211_link_data *link) in ieee80211_link_use_reserved_assign() argument
1434 struct ieee80211_sub_if_data *sdata = link->sdata; in ieee80211_link_use_reserved_assign()
1441 old_ctx = ieee80211_link_get_chanctx(link); in ieee80211_link_use_reserved_assign()
1442 new_ctx = link->reserved_chanctx; in ieee80211_link_use_reserved_assign()
1444 if (WARN_ON(!link->reserved_ready)) in ieee80211_link_use_reserved_assign()
1458 &link->reserved, in ieee80211_link_use_reserved_assign()
1465 list_del(&link->reserved_chanctx_list); in ieee80211_link_use_reserved_assign()
1466 link->reserved_chanctx = NULL; in ieee80211_link_use_reserved_assign()
1468 err = ieee80211_assign_link_chanctx(link, new_ctx, false); in ieee80211_link_use_reserved_assign()
1477 ieee80211_link_chanctx_reservation_complete(link); in ieee80211_link_use_reserved_assign()
1482 ieee80211_link_has_in_place_reservation(struct ieee80211_link_data *link) in ieee80211_link_has_in_place_reservation() argument
1484 struct ieee80211_sub_if_data *sdata = link->sdata; in ieee80211_link_has_in_place_reservation()
1489 new_ctx = link->reserved_chanctx; in ieee80211_link_has_in_place_reservation()
1490 old_ctx = ieee80211_link_get_chanctx(link); in ieee80211_link_has_in_place_reservation()
1511 struct ieee80211_link_data *link; in ieee80211_chsw_switch_vifs() local
1531 list_for_each_entry(link, &ctx->reserved_links, in ieee80211_chsw_switch_vifs()
1533 if (!ieee80211_link_has_in_place_reservation(link)) in ieee80211_chsw_switch_vifs()
1536 old_ctx = ieee80211_link_get_chanctx(link); in ieee80211_chsw_switch_vifs()
1537 vif_chsw[i].vif = &link->sdata->vif; in ieee80211_chsw_switch_vifs()
1540 vif_chsw[i].link_conf = link->conf; in ieee80211_chsw_switch_vifs()
1617 struct ieee80211_link_data *link; in ieee80211_vif_use_reserved_switch() local
1633 list_for_each_entry(link, &ctx->replace_ctx->assigned_links, in ieee80211_vif_use_reserved_switch()
1636 if (link->reserved_chanctx) { in ieee80211_vif_use_reserved_switch()
1638 if (link->reserved_ready) in ieee80211_vif_use_reserved_switch()
1655 list_for_each_entry(link, &ctx->reserved_links, in ieee80211_vif_use_reserved_switch()
1657 if (ieee80211_link_has_in_place_reservation(link) && in ieee80211_vif_use_reserved_switch()
1658 !link->reserved_ready) in ieee80211_vif_use_reserved_switch()
1661 old_ctx = ieee80211_link_get_chanctx(link); in ieee80211_vif_use_reserved_switch()
1672 if (link->reserved_radar_required) in ieee80211_vif_use_reserved_switch()
1687 struct ieee80211_link_data *link; in ieee80211_vif_use_reserved_switch() local
1697 list_for_each_entry(link, &ctx->reserved_links, in ieee80211_vif_use_reserved_switch()
1699 if (!ieee80211_link_has_in_place_reservation(link)) in ieee80211_vif_use_reserved_switch()
1703 ieee80211_link_get_chanctx(link), in ieee80211_vif_use_reserved_switch()
1732 struct ieee80211_link_data *link, *link_tmp; in ieee80211_vif_use_reserved_switch() local
1742 list_for_each_entry(link, &ctx->reserved_links, in ieee80211_vif_use_reserved_switch()
1744 struct ieee80211_sub_if_data *sdata = link->sdata; in ieee80211_vif_use_reserved_switch()
1745 struct ieee80211_bss_conf *link_conf = link->conf; in ieee80211_vif_use_reserved_switch()
1748 if (!ieee80211_link_has_in_place_reservation(link)) in ieee80211_vif_use_reserved_switch()
1755 __ieee80211_link_copy_chanctx_to_vlans(link, in ieee80211_vif_use_reserved_switch()
1760 link->radar_required = link->reserved_radar_required; in ieee80211_vif_use_reserved_switch()
1762 if (link_conf->chanreq.oper.width != link->reserved.oper.width) in ieee80211_vif_use_reserved_switch()
1765 ieee80211_link_update_chanreq(link, &link->reserved); in ieee80211_vif_use_reserved_switch()
1768 link, in ieee80211_vif_use_reserved_switch()
1771 ieee80211_recalc_txpower(link, false); in ieee80211_vif_use_reserved_switch()
1779 list_for_each_entry_safe(link, link_tmp, &ctx->reserved_links, in ieee80211_vif_use_reserved_switch()
1781 if (ieee80211_link_get_chanctx(link) != ctx) in ieee80211_vif_use_reserved_switch()
1784 list_del(&link->reserved_chanctx_list); in ieee80211_vif_use_reserved_switch()
1785 list_move(&link->assigned_chanctx_list, in ieee80211_vif_use_reserved_switch()
1787 link->reserved_chanctx = NULL; in ieee80211_vif_use_reserved_switch()
1789 ieee80211_link_chanctx_reservation_complete(link); in ieee80211_vif_use_reserved_switch()
1800 list_for_each_entry_safe(link, link_tmp, &ctx->reserved_links, in ieee80211_vif_use_reserved_switch()
1802 if (WARN_ON(ieee80211_link_has_in_place_reservation(link))) in ieee80211_vif_use_reserved_switch()
1805 if (WARN_ON(link->reserved_chanctx != ctx)) in ieee80211_vif_use_reserved_switch()
1808 if (!link->reserved_ready) in ieee80211_vif_use_reserved_switch()
1811 if (ieee80211_link_get_chanctx(link)) in ieee80211_vif_use_reserved_switch()
1812 err = ieee80211_link_use_reserved_reassign(link); in ieee80211_vif_use_reserved_switch()
1814 err = ieee80211_link_use_reserved_assign(link); in ieee80211_vif_use_reserved_switch()
1817 link_info(link, in ieee80211_vif_use_reserved_switch()
1820 ieee80211_link_unreserve_chanctx(link); in ieee80211_vif_use_reserved_switch()
1822 &link->sdata->wdev, in ieee80211_vif_use_reserved_switch()
1848 struct ieee80211_link_data *link, *link_tmp; in ieee80211_vif_use_reserved_switch() local
1853 list_for_each_entry_safe(link, link_tmp, &ctx->reserved_links, in ieee80211_vif_use_reserved_switch()
1855 ieee80211_link_unreserve_chanctx(link); in ieee80211_vif_use_reserved_switch()
1856 ieee80211_link_chanctx_reservation_complete(link); in ieee80211_vif_use_reserved_switch()
1863 void __ieee80211_link_release_channel(struct ieee80211_link_data *link, in __ieee80211_link_release_channel() argument
1866 struct ieee80211_sub_if_data *sdata = link->sdata; in __ieee80211_link_release_channel()
1867 struct ieee80211_bss_conf *link_conf = link->conf; in __ieee80211_link_release_channel()
1882 if (link->reserved_chanctx) { in __ieee80211_link_release_channel()
1883 if (link->reserved_chanctx->replace_state == IEEE80211_CHANCTX_REPLACES_OTHER && in __ieee80211_link_release_channel()
1884 ieee80211_chanctx_num_reserved(local, link->reserved_chanctx) > 1) in __ieee80211_link_release_channel()
1887 ieee80211_link_unreserve_chanctx(link); in __ieee80211_link_release_channel()
1890 ieee80211_assign_link_chanctx(link, NULL, false); in __ieee80211_link_release_channel()
1894 link->radar_required = false; in __ieee80211_link_release_channel()
1901 int _ieee80211_link_use_channel(struct ieee80211_link_data *link, in _ieee80211_link_use_channel() argument
1906 struct ieee80211_sub_if_data *sdata = link->sdata; in _ieee80211_link_use_channel()
1916 if (!ieee80211_vif_link_active(&sdata->vif, link->link_id)) { in _ieee80211_link_use_channel()
1917 ieee80211_link_update_chanreq(link, chanreq); in _ieee80211_link_use_channel()
1929 link->radar_required = ret; in _ieee80211_link_use_channel()
1937 __ieee80211_link_release_channel(link, false); in _ieee80211_link_use_channel()
1939 ctx = ieee80211_find_chanctx(local, link, chanreq, mode); in _ieee80211_link_use_channel()
1955 ieee80211_link_update_chanreq(link, chanreq); in _ieee80211_link_use_channel()
1957 ret = ieee80211_assign_link_chanctx(link, ctx, assign_on_failure); in _ieee80211_link_use_channel()
1961 WARN_ON(link->reserved_chanctx != ctx); in _ieee80211_link_use_channel()
1962 link->reserved_chanctx = NULL; in _ieee80211_link_use_channel()
1963 list_del(&link->reserved_chanctx_list); in _ieee80211_link_use_channel()
1977 link->radar_required = false; in _ieee80211_link_use_channel()
1982 int ieee80211_link_use_reserved_context(struct ieee80211_link_data *link) in ieee80211_link_use_reserved_context() argument
1984 struct ieee80211_sub_if_data *sdata = link->sdata; in ieee80211_link_use_reserved_context()
1992 new_ctx = link->reserved_chanctx; in ieee80211_link_use_reserved_context()
1993 old_ctx = ieee80211_link_get_chanctx(link); in ieee80211_link_use_reserved_context()
2002 if (WARN_ON(link->reserved_ready)) in ieee80211_link_use_reserved_context()
2005 link->reserved_ready = true; in ieee80211_link_use_reserved_context()
2009 return ieee80211_link_use_reserved_reassign(link); in ieee80211_link_use_reserved_context()
2011 return ieee80211_link_use_reserved_assign(link); in ieee80211_link_use_reserved_context()
2049 * compatible by ieee80211_chanctx_recheck() but is OK if the link
2060 struct ieee80211_link_data *link; in ieee80211_chanctx_recheck() local
2064 for_each_sdata_link(local, link) { in ieee80211_chanctx_recheck()
2065 if (link == skip_link) in ieee80211_chanctx_recheck()
2068 if (rcu_access_pointer(link->conf->chanctx_conf) == &ctx->conf) { in ieee80211_chanctx_recheck()
2070 &link->conf->chanreq, in ieee80211_chanctx_recheck()
2076 if (link->reserved_chanctx == ctx) { in ieee80211_chanctx_recheck()
2078 &link->reserved, in ieee80211_chanctx_recheck()
2089 int ieee80211_link_change_chanreq(struct ieee80211_link_data *link, in ieee80211_link_change_chanreq() argument
2093 struct ieee80211_sub_if_data *sdata = link->sdata; in ieee80211_link_change_chanreq()
2094 struct ieee80211_bss_conf *link_conf = link->conf; in ieee80211_link_change_chanreq()
2125 compat = ieee80211_chanctx_recheck(local, link, ctx, chanreq, &tmp); in ieee80211_link_change_chanreq()
2147 ieee80211_link_update_chanreq(link, chanreq); in ieee80211_link_change_chanreq()
2155 void ieee80211_link_release_channel(struct ieee80211_link_data *link) in ieee80211_link_release_channel() argument
2157 struct ieee80211_sub_if_data *sdata = link->sdata; in ieee80211_link_release_channel()
2164 if (rcu_access_pointer(link->conf->chanctx_conf)) in ieee80211_link_release_channel()
2165 __ieee80211_link_release_channel(link, false); in ieee80211_link_release_channel()
2168 void ieee80211_link_vlan_copy_chanctx(struct ieee80211_link_data *link) in ieee80211_link_vlan_copy_chanctx() argument
2170 struct ieee80211_sub_if_data *sdata = link->sdata; in ieee80211_link_vlan_copy_chanctx()
2171 unsigned int link_id = link->link_id; in ieee80211_link_vlan_copy_chanctx()
2172 struct ieee80211_bss_conf *link_conf = link->conf; in ieee80211_link_vlan_copy_chanctx()