Lines Matching defs:wdev
88 struct wireless_dev *wdev;
92 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) {
93 if (have_ifidx && wdev->netdev &&
94 wdev->netdev->ifindex == ifidx) {
95 result = wdev;
98 if (have_wdev_id && wdev->identifier == (u32)wdev_id) {
99 result = wdev;
110 struct wireless_dev *wdev;
118 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) {
119 if (have_ifidx && wdev->netdev &&
120 wdev->netdev->ifindex == ifidx) {
121 result = wdev;
124 if (have_wdev_id && wdev->identifier == (u32)wdev_id) {
125 result = wdev;
158 struct wireless_dev *wdev;
163 /* make sure wdev exists */
164 list_for_each_entry(wdev, &tmp->wiphy.wdev_list, list) {
165 if (wdev->identifier != (u32)wdev_id)
983 struct wireless_dev **wdev,
1009 *wdev = __cfg80211_wdev_from_attrs(NULL, sock_net(cb->skb->sk),
1012 if (IS_ERR(*wdev)) {
1014 return PTR_ERR(*wdev);
1016 *rdev = wiphy_to_rdev((*wdev)->wiphy);
1021 cb->args[1] = (*wdev)->identifier;
1034 *wdev = NULL;
1038 *wdev = tmp;
1043 if (!*wdev) {
1545 static int nl80211_key_allowed(struct wireless_dev *wdev)
1547 ASSERT_WDEV_LOCK(wdev);
1549 switch (wdev->iftype) {
1556 if (wdev->u.ibss.current_bss)
1561 if (wdev->connected)
1565 if (wiphy_ext_feature_isset(wdev->wiphy,
3187 static bool nl80211_can_set_dev_channel(struct wireless_dev *wdev)
3204 return !wdev ||
3205 wdev->iftype == NL80211_IFTYPE_AP ||
3206 wdev->iftype == NL80211_IFTYPE_MESH_POINT ||
3207 wdev->iftype == NL80211_IFTYPE_MONITOR ||
3208 wdev->iftype == NL80211_IFTYPE_P2P_GO;
3362 struct wireless_dev *wdev = NULL;
3366 wdev = dev->ieee80211_ptr;
3367 if (!nl80211_can_set_dev_channel(wdev))
3369 if (wdev)
3370 iftype = wdev->iftype;
3373 if (wdev && wdev->valid_links)
3388 if (wdev->links[link_id].ap.beacon_interval) {
3397 cur_chan = wdev->links[link_id].ap.chandef.chan;
3405 wdev->links[link_id].ap.chandef = chandef;
3407 wdev->u.ap.preset_chandef = chandef;
3411 return cfg80211_set_mesh_channel(rdev, wdev, &chandef);
3439 struct wireless_dev *wdev;
3476 wdev = NULL;
3480 wdev = netdev->ieee80211_ptr;
3486 * and locked, and wdev may or may not be NULL.
3559 if (wdev) {
3560 wdev_lock(wdev);
3563 nl80211_can_set_dev_channel(wdev) ? netdev : NULL,
3565 wdev_unlock(wdev);
3575 struct wireless_dev *txp_wdev = wdev;
3824 struct wireless_dev *wdev,
3827 struct net_device *dev = wdev->netdev;
3844 nla_put_u32(msg, NL80211_ATTR_IFTYPE, wdev->iftype) ||
3845 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
3847 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, wdev_address(wdev)) ||
3851 nla_put_u8(msg, NL80211_ATTR_4ADDR, wdev->use_4addr))
3854 if (rdev->ops->get_channel && !wdev->valid_links) {
3858 ret = rdev_get_channel(rdev, wdev, 0, &chandef);
3866 ret = rdev_get_tx_power(rdev, wdev, &dbm);
3873 wdev_lock(wdev);
3874 switch (wdev->iftype) {
3877 if (wdev->u.ap.ssid_len &&
3878 nla_put(msg, NL80211_ATTR_SSID, wdev->u.ap.ssid_len,
3879 wdev->u.ap.ssid))
3884 if (wdev->u.client.ssid_len &&
3885 nla_put(msg, NL80211_ATTR_SSID, wdev->u.client.ssid_len,
3886 wdev->u.client.ssid))
3890 if (wdev->u.ibss.ssid_len &&
3891 nla_put(msg, NL80211_ATTR_SSID, wdev->u.ibss.ssid_len,
3892 wdev->u.ibss.ssid))
3899 wdev_unlock(wdev);
3903 int ret = rdev_get_txq_stats(rdev, wdev, &txqstats);
3911 if (wdev->valid_links) {
3919 for_each_valid_link(wdev, link_id) {
3930 wdev->links[link_id].addr))
3933 ret = rdev_get_channel(rdev, wdev, link_id, &chandef);
3947 wdev_unlock(wdev);
3961 struct wireless_dev *wdev;
4001 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) {
4008 rdev, wdev,
4033 struct wireless_dev *wdev = info->user_ptr[1];
4040 rdev, wdev, NL80211_CMD_NEW_INTERFACE) < 0) {
4188 struct wireless_dev *wdev = dev->ieee80211_ptr;
4197 wdev_lock(wdev);
4200 wdev->u.mesh.id_up_len =
4202 memcpy(wdev->u.mesh.id,
4204 wdev->u.mesh.id_up_len);
4205 wdev_unlock(wdev);
4233 struct wireless_dev *wdev = dev->ieee80211_ptr;
4235 nl80211_notify_iface(rdev, wdev, NL80211_CMD_SET_INTERFACE);
4245 struct wireless_dev *wdev;
4288 wdev = rdev_add_virtual_intf(rdev,
4291 if (WARN_ON(!wdev)) {
4294 } else if (IS_ERR(wdev)) {
4296 return PTR_ERR(wdev);
4300 wdev->owner_nlportid = info->snd_portid;
4306 wdev_lock(wdev);
4309 wdev->u.mesh.id_up_len =
4311 memcpy(wdev->u.mesh.id,
4313 wdev->u.mesh.id_up_len);
4314 wdev_unlock(wdev);
4322 cfg80211_init_wdev(wdev);
4323 cfg80211_register_wdev(rdev, wdev);
4330 rdev, wdev, NL80211_CMD_NEW_INTERFACE) < 0) {
4356 struct wireless_dev *wdev = info->user_ptr[1];
4376 * since the wdev has been freed, unlike with a netdev where
4379 if (!wdev->netdev)
4382 dev_close(wdev->netdev);
4386 return cfg80211_remove_virtual_intf(rdev, wdev);
4407 struct wireless_dev *wdev,
4420 if (wdev->valid_links) {
4426 if (!(wdev->valid_links & BIT(link_id))) {
4500 struct wireless_dev *wdev = dev->ieee80211_ptr;
4506 if ((wdev->iftype == NL80211_IFTYPE_STATION ||
4507 wdev->iftype == NL80211_IFTYPE_P2P_CLIENT) &&
4559 err = nl80211_validate_key_link_id(info, wdev, link_id, pairwise);
4589 struct wireless_dev *wdev = dev->ieee80211_ptr;
4605 wdev_lock(wdev);
4613 err = nl80211_key_allowed(wdev);
4617 err = nl80211_validate_key_link_id(info, wdev, link_id, false);
4628 wdev->wext.default_key = key.idx;
4641 err = nl80211_key_allowed(wdev);
4645 err = nl80211_validate_key_link_id(info, wdev, link_id, false);
4654 wdev->wext.default_mgmt_key = key.idx;
4667 err = nl80211_key_allowed(wdev);
4671 err = nl80211_validate_key_link_id(info, wdev, link_id, false);
4691 err = nl80211_validate_key_link_id(info, wdev, link_id, true);
4702 wdev_unlock(wdev);
4715 struct wireless_dev *wdev = dev->ieee80211_ptr;
4757 wdev_lock(wdev);
4758 err = nl80211_key_allowed(wdev);
4763 err = nl80211_validate_key_link_id(info, wdev, link_id,
4773 wdev_unlock(wdev);
4786 struct wireless_dev *wdev = dev->ieee80211_ptr;
4814 wdev_lock(wdev);
4815 err = nl80211_key_allowed(wdev);
4822 err = nl80211_validate_key_link_id(info, wdev, link_id,
4832 if (key.idx == wdev->wext.default_key)
4833 wdev->wext.default_key = -1;
4834 else if (key.idx == wdev->wext.default_mgmt_key)
4835 wdev->wext.default_mgmt_key = -1;
4838 wdev_unlock(wdev);
5078 struct wireless_dev *wdev = dev->ieee80211_ptr;
5082 chandef = wdev_chandef(wdev, link_id);
5107 struct wireless_dev *wdev,
5118 he_cap = ieee80211_get_he_iftype_cap(sband, wdev->iftype);
5149 struct wireless_dev *wdev = dev->ieee80211_ptr;
5178 he_cap = ieee80211_get_he_iftype_cap(sband, wdev->iftype);
5245 !he_set_mcs_mask(info, wdev, sband,
5264 ieee80211_get_he_iftype_cap(sband, wdev->iftype)))
5810 struct wireless_dev *wdev;
5812 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) {
5813 if (wdev->iftype != NL80211_IFTYPE_AP &&
5814 wdev->iftype != NL80211_IFTYPE_P2P_GO)
5817 if (!wdev->u.ap.preset_chandef.chan)
5820 params->chandef = wdev->u.ap.preset_chandef;
5879 static void nl80211_send_ap_started(struct wireless_dev *wdev,
5882 struct wiphy *wiphy = wdev->wiphy;
5896 nla_put_u32(msg, NL80211_ATTR_IFINDEX, wdev->netdev->ifindex) ||
5897 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
5899 (wdev->u.ap.ssid_len &&
5900 nla_put(msg, NL80211_ATTR_SSID, wdev->u.ap.ssid_len,
5901 wdev->u.ap.ssid)) ||
5902 (wdev->valid_links &&
5935 struct wireless_dev *wdev = dev->ieee80211_ptr;
5946 if (wdev->links[link_id].ap.beacon_interval)
5990 if (wdev->u.ap.ssid_len &&
5991 (wdev->u.ap.ssid_len != params->ssid_len ||
5992 memcmp(wdev->u.ap.ssid, params->ssid, params->ssid_len))) {
5997 } else if (wdev->valid_links) {
6068 } else if (wdev->valid_links) {
6072 } else if (wdev->u.ap.preset_chandef.chan) {
6073 params->chandef = wdev->u.ap.preset_chandef;
6088 wdev->iftype)) {
6093 wdev_lock(wdev);
6209 if (wdev->conn_owner_nlportid &&
6211 wdev->conn_owner_nlportid != info->snd_portid) {
6220 wdev->links[link_id].ap.beacon_interval = params->beacon_interval;
6221 wdev->links[link_id].ap.chandef = params->chandef;
6222 wdev->u.ap.ssid_len = params->ssid_len;
6223 memcpy(wdev->u.ap.ssid, params->ssid,
6227 wdev->conn_owner_nlportid = info->snd_portid;
6229 nl80211_send_ap_started(wdev, link_id);
6232 wdev_unlock(wdev);
6251 struct wireless_dev *wdev = dev->ieee80211_ptr;
6262 if (!wdev->links[link_id].ap.beacon_interval)
6269 wdev_lock(wdev);
6271 wdev_unlock(wdev);
6763 struct wireless_dev *wdev;
6768 err = nl80211_prepare_wdev_dump(cb, &rdev, &wdev, NULL);
6774 if (!wdev->netdev) {
6786 err = rdev_dump_station(rdev, wdev->netdev, sta_idx,
6796 rdev, wdev->netdev, mac_addr,
7345 struct wireless_dev *wdev = dev->ieee80211_ptr;
7601 if (wdev->valid_links) {
7606 if (!(wdev->valid_links & BIT(params.link_sta_params.link_id))) {
7748 struct wireless_dev *wdev;
7754 err = nl80211_prepare_wdev_dump(cb, &rdev, &wdev, NULL);
7765 if (wdev->iftype != NL80211_IFTYPE_MESH_POINT) {
7771 err = rdev_dump_mpath(rdev, wdev->netdev, path_idx, dst,
7780 wdev->netdev, dst, next_hop,
7948 struct wireless_dev *wdev;
7954 err = nl80211_prepare_wdev_dump(cb, &rdev, &wdev, NULL);
7965 if (wdev->iftype != NL80211_IFTYPE_MESH_POINT) {
7971 err = rdev_dump_mpp(rdev, wdev->netdev, path_idx, dst,
7980 wdev->netdev, dst, mpp,
7999 struct wireless_dev *wdev = dev->ieee80211_ptr;
8064 wdev_lock(wdev);
8066 wdev_unlock(wdev);
8126 struct wireless_dev *wdev = dev->ieee80211_ptr;
8133 if (wdev->iftype != NL80211_IFTYPE_MESH_POINT)
8139 wdev_lock(wdev);
8141 if (!wdev->u.mesh.id_len)
8145 wdev_unlock(wdev);
8506 struct wireless_dev *wdev = dev->ieee80211_ptr;
8511 if (wdev->iftype != NL80211_IFTYPE_MESH_POINT)
8521 wdev_lock(wdev);
8522 if (!wdev->u.mesh.id_len)
8528 wdev_unlock(wdev);
9014 static bool cfg80211_off_channel_oper_allowed(struct wireless_dev *wdev,
9020 ASSERT_WDEV_LOCK(wdev);
9022 if (!cfg80211_beaconing_iface_active(wdev))
9033 for_each_valid_link(wdev, link_id) {
9036 chandef = wdev_chandef(wdev, link_id);
9054 return regulatory_pre_cac_allowed(wdev->wiphy);
9068 nl80211_check_scan_flags(struct wiphy *wiphy, struct wireless_dev *wdev,
9082 randomness_flag = wdev ?
9134 (wdev && wdev->connected))
9148 struct wireless_dev *wdev = info->user_ptr[1];
9159 if (wdev->iftype == NL80211_IFTYPE_NAN)
9270 wdev_lock(wdev);
9275 if (cfg80211_off_channel_oper_allowed(wdev, chan))
9278 if (!cfg80211_wdev_on_sub_chan(wdev, chan, true)) {
9279 wdev_unlock(wdev);
9284 wdev_unlock(wdev);
9341 err = nl80211_check_scan_flags(wiphy, wdev, request, info->attrs,
9368 request->wdev = wdev;
9378 nl80211_send_scan_start(rdev, wdev);
9379 dev_hold(wdev->netdev);
9393 struct wireless_dev *wdev = info->user_ptr[1];
9404 rdev_abort_scan(rdev, wdev);
9529 nl80211_parse_sched_scan(struct wiphy *wiphy, struct wireless_dev *wdev,
9834 err = nl80211_check_scan_flags(wiphy, wdev, request, attrs, true);
9880 struct wireless_dev *wdev = dev->ieee80211_ptr;
9893 sched_scan_req = nl80211_parse_sched_scan(&rdev->wiphy, wdev,
9959 struct wireless_dev *wdev = dev->ieee80211_ptr;
9960 struct wiphy *wiphy = wdev->wiphy;
9978 err = cfg80211_chandef_dfs_required(wiphy, &chandef, wdev->iftype);
9993 err = cfg80211_start_background_radar_detection(rdev, wdev,
10003 if (wdev->cac_started) {
10025 wdev->links[0].ap.chandef = chandef;
10026 wdev->cac_started = true;
10027 wdev->cac_start_time = jiffies;
10028 wdev->cac_time_ms = cac_time_ms;
10041 struct wireless_dev *wdev = dev->ieee80211_ptr;
10042 struct wiphy *wiphy = wdev->wiphy;
10060 err = cfg80211_chandef_dfs_required(wiphy, &chandef, wdev->iftype);
10095 struct wireless_dev *wdev = dev->ieee80211_ptr;
10120 if (!wdev->links[link_id].ap.beacon_interval)
10124 if (!wdev->u.ibss.ssid_len)
10128 if (!wdev->u.mesh.id_len)
10259 wdev->iftype)) {
10264 err = cfg80211_chandef_dfs_required(wdev->wiphy,
10266 wdev->iftype);
10290 wdev_lock(wdev);
10292 wdev_unlock(wdev);
10306 struct wireless_dev *wdev,
10315 ASSERT_WDEV_LOCK(wdev);
10326 if (wdev->netdev &&
10327 nla_put_u32(msg, NL80211_ATTR_IFINDEX, wdev->netdev->ifindex))
10329 if (nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
10413 switch (wdev->iftype) {
10416 for_each_valid_link(wdev, link_id) {
10417 if (intbss == wdev->links[link_id].client.current_bss &&
10420 (wdev->valid_links &&
10424 wdev->u.client.connected_addr)))))
10429 if (intbss == wdev->u.ibss.current_bss &&
10454 struct wireless_dev *wdev;
10458 err = nl80211_prepare_wdev_dump(cb, &rdev, &wdev, NULL);
10464 wdev_lock(wdev);
10483 rdev, wdev, scan) < 0) {
10490 wdev_unlock(wdev);
10582 struct wireless_dev *wdev;
10591 res = nl80211_prepare_wdev_dump(cb, &rdev, &wdev, attrbuf);
10602 if (!wdev->netdev) {
10613 wdev_lock(wdev);
10614 res = rdev_dump_survey(rdev, wdev->netdev, survey_idx, &survey);
10615 wdev_unlock(wdev);
10631 wdev->netdev, radio_stats, &survey) < 0)
11553 struct wireless_dev *wdev, int approxlen,
11585 if (wdev) {
11587 wdev_id(wdev), NL80211_ATTR_PAD))
11589 if (wdev->netdev &&
11591 wdev->netdev->ifindex))
11611 struct wireless_dev *wdev,
11638 return __cfg80211_alloc_vendor_skb(rdev, wdev, approxlen, portid, 0,
11674 struct wireless_dev *wdev;
11679 wdev = __cfg80211_wdev_from_attrs(rdev, genl_info_net(info),
11685 if (IS_ERR(wdev)) {
11686 err = PTR_ERR(wdev);
11689 wdev = NULL;
11690 } else if (wdev->wiphy != &rdev->wiphy) {
11698 err = rdev_testmode_cmd(rdev, wdev,
12065 struct wireless_dev *wdev = dev->ieee80211_ptr;
12131 if (!wdev->connected)
12347 struct wireless_dev *wdev = info->user_ptr[1];
12377 wdev_lock(wdev);
12378 if (!cfg80211_off_channel_oper_allowed(wdev, chandef.chan)) {
12381 oper_chandef = wdev_chandef(wdev, link_id);
12386 wdev_unlock(wdev);
12395 wdev_unlock(wdev);
12399 wdev_unlock(wdev);
12412 err = rdev_remain_on_channel(rdev, wdev, chandef.chan,
12437 struct wireless_dev *wdev = info->user_ptr[1];
12448 return rdev_cancel_remain_on_channel(rdev, wdev, cookie);
12458 struct wireless_dev *wdev = dev->ieee80211_ptr;
12464 wdev_lock(wdev);
12473 wdev_unlock(wdev);
12480 struct wireless_dev *wdev = info->user_ptr[1];
12489 switch (wdev->iftype) {
12500 if (!wiphy_ext_feature_isset(wdev->wiphy,
12520 return cfg80211_mlme_register_mgmt(wdev, info->snd_portid, frame_type,
12530 struct wireless_dev *wdev = info->user_ptr[1];
12547 switch (wdev->iftype) {
12561 if (!wiphy_ext_feature_isset(wdev->wiphy,
12603 wdev_lock(wdev);
12605 !cfg80211_off_channel_oper_allowed(wdev, chandef.chan)) {
12606 wdev_unlock(wdev);
12617 !(wdev->valid_links & BIT(params.link_id))) {
12618 wdev_unlock(wdev);
12621 wdev_unlock(wdev);
12658 err = cfg80211_mlme_mgmt_tx(rdev, wdev, ¶ms, &cookie);
12683 struct wireless_dev *wdev = info->user_ptr[1];
12692 switch (wdev->iftype) {
12702 if (!wiphy_ext_feature_isset(wdev->wiphy,
12712 return rdev_mgmt_tx_cancel_wait(rdev, wdev, cookie);
12718 struct wireless_dev *wdev;
12729 wdev = dev->ieee80211_ptr;
12736 if (state == wdev->ps)
12739 err = rdev_set_power_mgmt(rdev, dev, state, wdev->ps_timeout);
12741 wdev->ps = state;
12749 struct wireless_dev *wdev;
12755 wdev = dev->ieee80211_ptr;
12771 if (wdev->ps)
12805 struct wireless_dev *wdev = dev->ieee80211_ptr;
12813 if (wdev->iftype != NL80211_IFTYPE_STATION &&
12814 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)
12824 struct wireless_dev *wdev = dev->ieee80211_ptr;
12837 wdev->links[0].client.current_bss &&
12842 mac_addr = wdev->links[0].client.current_bss->pub.bssid;
12888 struct wireless_dev *wdev = dev->ieee80211_ptr;
12900 if (wdev->iftype != NL80211_IFTYPE_STATION &&
12901 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)
12907 wdev_lock(wdev);
12908 old = rcu_dereference_protected(wdev->cqm_config,
12909 lockdep_is_held(&wdev->mtx));
12948 rcu_assign_pointer(wdev->cqm_config, cqm_config);
12957 RCU_INIT_POINTER(wdev->cqm_config, NULL);
12966 rcu_assign_pointer(wdev->cqm_config, old);
12972 wdev_unlock(wdev);
14068 struct wireless_dev *wdev = dev->ieee80211_ptr;
14104 wdev_lock(wdev);
14105 if (!wdev->connected) {
14117 wdev_unlock(wdev);
14125 struct wireless_dev *wdev = dev->ieee80211_ptr;
14127 if (wdev->iftype != NL80211_IFTYPE_AP &&
14128 wdev->iftype != NL80211_IFTYPE_P2P_GO)
14131 if (wdev->ap_unexpected_nlportid)
14134 wdev->ap_unexpected_nlportid = info->snd_portid;
14143 struct wireless_dev *wdev = dev->ieee80211_ptr;
14150 if (wdev->iftype != NL80211_IFTYPE_AP &&
14151 wdev->iftype != NL80211_IFTYPE_P2P_GO)
14229 struct wireless_dev *wdev = info->user_ptr[1];
14235 if (wdev->iftype != NL80211_IFTYPE_P2P_DEVICE)
14238 if (wdev_running(wdev))
14244 err = rdev_start_p2p_device(rdev, wdev);
14248 wdev->is_running = true;
14257 struct wireless_dev *wdev = info->user_ptr[1];
14259 if (wdev->iftype != NL80211_IFTYPE_P2P_DEVICE)
14265 cfg80211_stop_p2p_device(rdev, wdev);
14273 struct wireless_dev *wdev = info->user_ptr[1];
14277 if (wdev->iftype != NL80211_IFTYPE_NAN)
14280 if (wdev_running(wdev))
14295 if (bands & ~(u32)wdev->wiphy->nan_supported_bands)
14304 err = rdev_start_nan(rdev, wdev, &conf);
14308 wdev->is_running = true;
14317 struct wireless_dev *wdev = info->user_ptr[1];
14319 if (wdev->iftype != NL80211_IFTYPE_NAN)
14322 cfg80211_stop_nan(rdev, wdev);
14394 struct wireless_dev *wdev = info->user_ptr[1];
14401 if (wdev->iftype != NL80211_IFTYPE_NAN)
14404 if (!wdev_running(wdev))
14597 err = rdev_add_nan_func(rdev, wdev, func);
14632 struct wireless_dev *wdev = info->user_ptr[1];
14635 if (wdev->iftype != NL80211_IFTYPE_NAN)
14638 if (!wdev_running(wdev))
14646 rdev_del_nan_func(rdev, wdev, cookie);
14655 struct wireless_dev *wdev = info->user_ptr[1];
14659 if (wdev->iftype != NL80211_IFTYPE_NAN)
14662 if (!wdev_running(wdev))
14677 if (bands & ~(u32)wdev->wiphy->nan_supported_bands)
14690 return rdev_nan_change_conf(rdev, wdev, &conf, changed);
14693 void cfg80211_nan_match(struct wireless_dev *wdev,
14696 struct wiphy *wiphy = wdev->wiphy;
14716 (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX,
14717 wdev->netdev->ifindex)) ||
14718 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
14759 if (!wdev->owner_nlportid)
14764 wdev->owner_nlportid);
14773 void cfg80211_nan_func_terminated(struct wireless_dev *wdev,
14778 struct wiphy *wiphy = wdev->wiphy;
14798 (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX,
14799 wdev->netdev->ifindex)) ||
14800 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
14819 if (!wdev->owner_nlportid)
14824 wdev->owner_nlportid);
14885 struct wireless_dev *wdev = info->user_ptr[1];
14913 ret = rdev_crit_proto_start(rdev, wdev, proto, duration);
14924 struct wireless_dev *wdev = info->user_ptr[1];
14931 rdev_crit_proto_stop(rdev, wdev);
14961 struct wireless_dev *wdev =
14970 if (IS_ERR(wdev)) {
14971 err = PTR_ERR(wdev);
14974 wdev = NULL;
14975 } else if (wdev->wiphy != &rdev->wiphy) {
14997 if (!wdev)
15000 !wdev->netdev)
15004 if (!wdev_running(wdev))
15008 wdev = NULL;
15026 err = vcmd->doit(&rdev->wiphy, wdev, data, len);
15037 struct wireless_dev **wdev)
15055 *wdev = NULL;
15060 *wdev = tmp;
15087 *wdev = __cfg80211_wdev_from_attrs(NULL, sock_net(skb->sk), attrbuf);
15088 if (IS_ERR(*wdev))
15089 *wdev = NULL;
15137 cb->args[1] = *wdev ? (*wdev)->identifier + 1 : 0;
15153 struct wireless_dev *wdev;
15162 err = nl80211_prepare_vendor_dump(skb, cb, &rdev, &wdev);
15173 if (!wdev) {
15178 !wdev->netdev) {
15184 if (!wdev_running(wdev)) {
15199 (wdev && nla_put_u64_64bit(skb, NL80211_ATTR_WDEV,
15200 wdev_id(wdev),
15213 err = vcmd->dumpit(&rdev->wiphy, wdev, skb, data, data_len,
15336 struct wireless_dev *wdev = dev->ieee80211_ptr;
15370 wdev_lock(wdev);
15371 switch (wdev->iftype) {
15374 if (wdev->connected)
15386 wdev_unlock(wdev);
15394 struct wireless_dev *wdev = dev->ieee80211_ptr;
15405 wdev_lock(wdev);
15407 wdev_unlock(wdev);
15417 struct wireless_dev *wdev = dev->ieee80211_ptr;
15455 wdev->iftype))
15459 if (cfg80211_chandef_dfs_required(wdev->wiphy, &chandef, wdev->iftype))
15465 wdev_lock(wdev);
15467 wdev_unlock(wdev);
15477 struct wireless_dev *wdev = dev->ieee80211_ptr;
15498 wdev_lock(wdev);
15500 wdev_unlock(wdev);
15510 struct wireless_dev *wdev = dev->ieee80211_ptr;
15517 if (wdev->iftype != NL80211_IFTYPE_AP &&
15518 wdev->iftype != NL80211_IFTYPE_P2P_GO)
15531 struct wireless_dev *wdev = dev->ieee80211_ptr;
15535 if (wdev->iftype != NL80211_IFTYPE_STATION &&
15536 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)
15546 wdev_lock(wdev);
15547 if (!wdev->connected) {
15553 if (memcmp(pmk_conf.aa, wdev->u.client.connected_addr, ETH_ALEN)) {
15572 wdev_unlock(wdev);
15580 struct wireless_dev *wdev = dev->ieee80211_ptr;
15584 if (wdev->iftype != NL80211_IFTYPE_STATION &&
15585 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)
15595 wdev_lock(wdev);
15598 wdev_unlock(wdev);
15650 struct wireless_dev *wdev = dev->ieee80211_ptr;
15674 wdev_lock(wdev);
15676 switch (wdev->iftype) {
15682 if (wdev->u.ibss.current_bss)
15688 if (wdev->connected)
15697 wdev_unlock(wdev);
15715 wdev_unlock(wdev);
15724 struct wireless_dev *wdev = dev->ieee80211_ptr;
15732 if (wdev->iftype != NL80211_IFTYPE_AP ||
15733 !wdev->links[link_id].ap.beacon_interval)
15821 struct wireless_dev *wdev = dev->ieee80211_ptr;
15837 if (wdev->iftype != NL80211_IFTYPE_MESH_POINT)
16026 struct wireless_dev *wdev = dev->ieee80211_ptr;
16038 if (wdev->iftype != NL80211_IFTYPE_AP)
16114 wdev_lock(wdev);
16116 wdev_unlock(wdev);
16155 struct wireless_dev *wdev = dev->ieee80211_ptr;
16158 if (!(wdev->wiphy->flags & WIPHY_FLAG_SUPPORTS_MLO))
16161 switch (wdev->iftype) {
16172 wdev_lock(wdev);
16173 wdev->valid_links |= BIT(link_id);
16174 ether_addr_copy(wdev->links[link_id].addr,
16177 ret = rdev_add_intf_link(rdev, wdev, link_id);
16179 wdev->valid_links &= ~BIT(link_id);
16180 eth_zero_addr(wdev->links[link_id].addr);
16182 wdev_unlock(wdev);
16191 struct wireless_dev *wdev = dev->ieee80211_ptr;
16197 switch (wdev->iftype) {
16204 wdev_lock(wdev);
16205 cfg80211_remove_link(wdev, link_id);
16206 wdev_unlock(wdev);
16459 struct wireless_dev *wdev = NULL;
16479 wdev = __cfg80211_wdev_from_attrs(NULL, genl_info_net(info),
16481 if (IS_ERR(wdev)) {
16482 err = PTR_ERR(wdev);
16486 dev = wdev->netdev;
16488 rdev = wiphy_to_rdev(wdev->wiphy);
16498 info->user_ptr[1] = wdev;
16502 !wdev_running(wdev)) {
16513 if (!wdev) {
16519 if (wdev->valid_links &&
16521 !(wdev->valid_links & BIT(nla_get_u8(link_id))))) {
16527 if (!wdev->valid_links && link_id) {
16535 (wdev && wdev->valid_links)) {
16564 struct wireless_dev *wdev = info->user_ptr[1];
16566 dev_put(wdev->netdev);
17594 struct wireless_dev *wdev,
17603 if (nl80211_send_iface(msg, 0, 0, 0, rdev, wdev, cmd) < 0) {
17678 struct wireless_dev *wdev,
17689 (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX,
17690 wdev->netdev->ifindex)) ||
17691 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
17732 struct wireless_dev *wdev)
17740 if (nl80211_prep_scan_msg(msg, rdev, wdev, 0, 0, 0,
17751 struct wireless_dev *wdev, bool aborted)
17759 if (nl80211_prep_scan_msg(msg, rdev, wdev, 0, 0, 0,
17971 struct wireless_dev *wdev = dev->ieee80211_ptr;
17972 struct wiphy *wiphy = wdev->wiphy;
17985 if (wdev->unprot_beacon_reported &&
17986 elapsed_jiffies_msecs(wdev->unprot_beacon_reported) < 10000)
17989 wdev->unprot_beacon_reported = jiffies;
18341 struct wireless_dev *wdev = dev->ieee80211_ptr;
18342 struct wiphy *wiphy = wdev->wiphy;
18348 ASSERT_WDEV_LOCK(wdev);
18351 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION &&
18352 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT))
18355 if (WARN_ON(!wdev->valid_links || !link_mask ||
18356 (wdev->valid_links & link_mask) != link_mask ||
18357 wdev->valid_links == link_mask))
18360 cfg80211_wdev_release_link_bsses(wdev, link_mask);
18361 wdev->valid_links &= ~link_mask;
18445 struct wireless_dev *wdev = dev->ieee80211_ptr;
18446 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
18450 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_MESH_POINT))
18580 struct wireless_dev *wdev, u64 cookie,
18598 (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX,
18599 wdev->netdev->ifindex)) ||
18600 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
18626 struct wireless_dev *wdev = netdev->ieee80211_ptr;
18627 struct wiphy *wiphy = wdev->wiphy;
18632 trace_cfg80211_assoc_comeback(wdev, ap_addr, timeout);
18661 void cfg80211_ready_on_channel(struct wireless_dev *wdev, u64 cookie,
18665 struct wiphy *wiphy = wdev->wiphy;
18668 trace_cfg80211_ready_on_channel(wdev, cookie, chan, duration);
18670 rdev, wdev, cookie, chan,
18675 void cfg80211_remain_on_channel_expired(struct wireless_dev *wdev, u64 cookie,
18679 struct wiphy *wiphy = wdev->wiphy;
18682 trace_cfg80211_ready_on_channel_expired(wdev, cookie, chan);
18684 rdev, wdev, cookie, chan, 0, gfp);
18688 void cfg80211_tx_mgmt_expired(struct wireless_dev *wdev, u64 cookie,
18692 struct wiphy *wiphy = wdev->wiphy;
18695 trace_cfg80211_tx_mgmt_expired(wdev, cookie, chan);
18697 rdev, wdev, cookie, chan, 0, gfp);
18793 struct wireless_dev *wdev = dev->ieee80211_ptr;
18794 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
18797 u32 nlportid = READ_ONCE(wdev->ap_unexpected_nlportid);
18829 struct wireless_dev *wdev = dev->ieee80211_ptr;
18834 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_AP &&
18835 wdev->iftype != NL80211_IFTYPE_P2P_GO)) {
18849 struct wireless_dev *wdev = dev->ieee80211_ptr;
18854 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_AP &&
18855 wdev->iftype != NL80211_IFTYPE_P2P_GO &&
18856 wdev->iftype != NL80211_IFTYPE_AP_VLAN)) {
18869 struct wireless_dev *wdev, u32 nlportid,
18872 struct net_device *netdev = wdev->netdev;
18889 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
18919 static void nl80211_frame_tx_status(struct wireless_dev *wdev,
18923 struct wiphy *wiphy = wdev->wiphy;
18925 struct net_device *netdev = wdev->netdev;
18930 trace_cfg80211_mgmt_tx_status(wdev, status->cookie,
18933 trace_cfg80211_control_port_tx_status(wdev, status->cookie,
18949 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
18973 void cfg80211_control_port_tx_status(struct wireless_dev *wdev, u64 cookie,
18984 nl80211_frame_tx_status(wdev, &status, gfp,
18989 void cfg80211_mgmt_tx_status_ext(struct wireless_dev *wdev,
18992 nl80211_frame_tx_status(wdev, status, gfp, NL80211_CMD_FRAME_TX_STATUS);
19002 struct wireless_dev *wdev = dev->ieee80211_ptr;
19003 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
19011 u32 nlportid = READ_ONCE(wdev->conn_owner_nlportid);
19028 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
19068 struct wireless_dev *wdev = dev->ieee80211_ptr;
19069 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
19121 struct wireless_dev *wdev = dev->ieee80211_ptr;
19131 cqm_config = rcu_dereference(wdev->cqm_config);
19135 wiphy_work_queue(wdev->wiphy, &wdev->cqm_rssi_work);
19143 struct wireless_dev *wdev = container_of(work, struct wireless_dev,
19151 wdev_lock(wdev);
19152 cqm_config = rcu_dereference_protected(wdev->cqm_config,
19153 lockdep_is_held(&wdev->mtx));
19158 cfg80211_cqm_rssi_update(rdev, wdev->netdev, cqm_config);
19163 msg = cfg80211_prepare_cqm(wdev->netdev, NULL, GFP_KERNEL);
19182 wdev_unlock(wdev);
19299 struct wireless_dev *wdev = dev->ieee80211_ptr;
19300 struct wiphy *wiphy = wdev->wiphy;
19356 struct wireless_dev *wdev = dev->ieee80211_ptr;
19357 struct wiphy *wiphy = wdev->wiphy;
19373 struct wireless_dev *wdev = netdev->ieee80211_ptr;
19390 if (wdev->valid_links &&
19422 struct wireless_dev *wdev = dev->ieee80211_ptr;
19423 struct wiphy *wiphy = wdev->wiphy;
19426 ASSERT_WDEV_LOCK(wdev);
19427 WARN_INVALID_LINK_ID(wdev, link_id);
19431 switch (wdev->iftype) {
19434 if (!WARN_ON(!wdev->links[link_id].client.current_bss))
19435 cfg80211_update_assoc_bss_entry(wdev, link_id,
19439 wdev->u.mesh.chandef = *chandef;
19440 wdev->u.mesh.preset_chandef = *chandef;
19444 wdev->links[link_id].ap.chandef = *chandef;
19447 wdev->u.ibss.chandef = *chandef;
19467 struct wireless_dev *wdev = dev->ieee80211_ptr;
19468 struct wiphy *wiphy = wdev->wiphy;
19471 ASSERT_WDEV_LOCK(wdev);
19472 WARN_INVALID_LINK_ID(wdev, link_id);
19488 struct wireless_dev *wdev = dev->ieee80211_ptr;
19489 struct wiphy *wiphy = wdev->wiphy;
19494 ASSERT_WDEV_LOCK(wdev);
19553 struct wireless_dev *wdev = netdev->ieee80211_ptr;
19556 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
19582 struct wireless_dev *wdev = dev->ieee80211_ptr;
19583 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
19636 struct wireless_dev *wdev = dev->ieee80211_ptr;
19637 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
19781 void cfg80211_report_wowlan_wakeup(struct wireless_dev *wdev,
19785 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
19790 trace_cfg80211_report_wowlan_wakeup(wdev->wiphy, wdev, wakeup);
19804 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
19808 if (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX,
19809 wdev->netdev->ifindex))
19900 struct wireless_dev *wdev = dev->ieee80211_ptr;
19901 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
19905 trace_cfg80211_tdls_oper_request(wdev->wiphy, dev, peer, oper,
19943 struct wireless_dev *wdev;
19964 list_for_each_entry_rcu(wdev, &rdev->wiphy.wdev_list, list) {
19965 cfg80211_mlme_unregister_socket(wdev, notify->portid);
19967 if (wdev->owner_nlportid == notify->portid) {
19968 wdev->nl_owner_dead = true;
19970 } else if (wdev->conn_owner_nlportid == notify->portid) {
19971 schedule_work(&wdev->disconnect_wk);
19974 cfg80211_release_pmsr(wdev, notify->portid);
20048 void cfg80211_crit_proto_stopped(struct wireless_dev *wdev, gfp_t gfp)
20055 rdev = wiphy_to_rdev(wdev->wiphy);
20071 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
20085 void nl80211_send_ap_stopped(struct wireless_dev *wdev, unsigned int link_id)
20087 struct wiphy *wiphy = wdev->wiphy;
20101 nla_put_u32(msg, NL80211_ATTR_IFINDEX, wdev->netdev->ifindex) ||
20102 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
20104 (wdev->valid_links &&
20121 struct wireless_dev *wdev = dev->ieee80211_ptr;
20122 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
20126 if (!wdev->conn_owner_nlportid)
20151 wdev->conn_owner_nlportid);