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)
980 struct wireless_dev **wdev,
1006 *wdev = __cfg80211_wdev_from_attrs(NULL, sock_net(cb->skb->sk),
1009 if (IS_ERR(*wdev)) {
1011 return PTR_ERR(*wdev);
1013 *rdev = wiphy_to_rdev((*wdev)->wiphy);
1018 cb->args[1] = (*wdev)->identifier;
1031 *wdev = NULL;
1035 *wdev = tmp;
1040 if (!*wdev) {
1555 static int nl80211_key_allowed(struct wireless_dev *wdev)
1557 lockdep_assert_wiphy(wdev->wiphy);
1559 switch (wdev->iftype) {
1566 if (wdev->u.ibss.current_bss)
1571 if (wdev->connected)
1575 if (wiphy_ext_feature_isset(wdev->wiphy,
3197 static bool nl80211_can_set_dev_channel(struct wireless_dev *wdev)
3214 return !wdev ||
3215 wdev->iftype == NL80211_IFTYPE_AP ||
3216 wdev->iftype == NL80211_IFTYPE_MESH_POINT ||
3217 wdev->iftype == NL80211_IFTYPE_MONITOR ||
3218 wdev->iftype == NL80211_IFTYPE_P2P_GO;
3377 struct wireless_dev *wdev = NULL;
3381 wdev = dev->ieee80211_ptr;
3382 if (!nl80211_can_set_dev_channel(wdev))
3384 if (wdev)
3385 iftype = wdev->iftype;
3388 if (wdev && wdev->valid_links)
3405 if (wdev->links[link_id].ap.beacon_interval) {
3414 cur_chan = wdev->links[link_id].ap.chandef.chan;
3422 wdev->links[link_id].ap.chandef = chandef;
3424 wdev->u.ap.preset_chandef = chandef;
3428 return cfg80211_set_mesh_channel(rdev, wdev, &chandef);
3451 struct wireless_dev *wdev;
3488 wdev = NULL;
3492 wdev = netdev->ieee80211_ptr;
3498 * and locked, and wdev may or may not be NULL.
3569 if (wdev) {
3572 nl80211_can_set_dev_channel(wdev) ? netdev : NULL,
3583 struct wireless_dev *txp_wdev = wdev;
3836 struct wireless_dev *wdev,
3839 struct net_device *dev = wdev->netdev;
3858 nla_put_u32(msg, NL80211_ATTR_IFTYPE, wdev->iftype) ||
3859 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
3861 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, wdev_address(wdev)) ||
3865 nla_put_u8(msg, NL80211_ATTR_4ADDR, wdev->use_4addr))
3868 if (rdev->ops->get_channel && !wdev->valid_links) {
3872 ret = rdev_get_channel(rdev, wdev, 0, &chandef);
3880 ret = rdev_get_tx_power(rdev, wdev, &dbm);
3887 switch (wdev->iftype) {
3890 if (wdev->u.ap.ssid_len &&
3891 nla_put(msg, NL80211_ATTR_SSID, wdev->u.ap.ssid_len,
3892 wdev->u.ap.ssid))
3897 if (wdev->u.client.ssid_len &&
3898 nla_put(msg, NL80211_ATTR_SSID, wdev->u.client.ssid_len,
3899 wdev->u.client.ssid))
3903 if (wdev->u.ibss.ssid_len &&
3904 nla_put(msg, NL80211_ATTR_SSID, wdev->u.ibss.ssid_len,
3905 wdev->u.ibss.ssid))
3915 int ret = rdev_get_txq_stats(rdev, wdev, &txqstats);
3923 if (wdev->valid_links) {
3931 for_each_valid_link(wdev, link_id) {
3942 wdev->links[link_id].addr))
3945 ret = rdev_get_channel(rdev, wdev, link_id, &chandef);
3971 struct wireless_dev *wdev;
4012 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) {
4019 rdev, wdev,
4046 struct wireless_dev *wdev = info->user_ptr[1];
4053 rdev, wdev, NL80211_CMD_NEW_INTERFACE) < 0) {
4201 struct wireless_dev *wdev = dev->ieee80211_ptr;
4210 wdev->u.mesh.id_up_len =
4212 memcpy(wdev->u.mesh.id,
4214 wdev->u.mesh.id_up_len);
4242 struct wireless_dev *wdev = dev->ieee80211_ptr;
4244 nl80211_notify_iface(rdev, wdev, NL80211_CMD_SET_INTERFACE);
4254 struct wireless_dev *wdev;
4297 wdev = rdev_add_virtual_intf(rdev,
4300 if (WARN_ON(!wdev)) {
4303 } else if (IS_ERR(wdev)) {
4305 return PTR_ERR(wdev);
4309 wdev->owner_nlportid = info->snd_portid;
4315 wdev->u.mesh.id_up_len =
4317 memcpy(wdev->u.mesh.id,
4319 wdev->u.mesh.id_up_len);
4327 cfg80211_init_wdev(wdev);
4328 cfg80211_register_wdev(rdev, wdev);
4335 rdev, wdev, NL80211_CMD_NEW_INTERFACE) < 0) {
4361 struct wireless_dev *wdev = info->user_ptr[1];
4381 * since the wdev has been freed, unlike with a netdev where
4384 if (!wdev->netdev)
4387 dev_close(wdev->netdev);
4391 return cfg80211_remove_virtual_intf(rdev, wdev);
4412 struct wireless_dev *wdev,
4425 if (wdev->valid_links) {
4431 if (!(wdev->valid_links & BIT(link_id))) {
4505 struct wireless_dev *wdev = dev->ieee80211_ptr;
4511 if ((wdev->iftype == NL80211_IFTYPE_STATION ||
4512 wdev->iftype == NL80211_IFTYPE_P2P_CLIENT) &&
4564 err = nl80211_validate_key_link_id(info, wdev, link_id, pairwise);
4594 struct wireless_dev *wdev = dev->ieee80211_ptr;
4614 err = nl80211_key_allowed(wdev);
4618 err = nl80211_validate_key_link_id(info, wdev, link_id, false);
4629 wdev->wext.default_key = key.idx;
4639 err = nl80211_key_allowed(wdev);
4643 err = nl80211_validate_key_link_id(info, wdev, link_id, false);
4652 wdev->wext.default_mgmt_key = key.idx;
4662 err = nl80211_key_allowed(wdev);
4666 err = nl80211_validate_key_link_id(info, wdev, link_id, false);
4682 err = nl80211_validate_key_link_id(info, wdev, link_id, true);
4702 struct wireless_dev *wdev = dev->ieee80211_ptr;
4744 err = nl80211_key_allowed(wdev);
4749 err = nl80211_validate_key_link_id(info, wdev, link_id,
4771 struct wireless_dev *wdev = dev->ieee80211_ptr;
4799 err = nl80211_key_allowed(wdev);
4806 err = nl80211_validate_key_link_id(info, wdev, link_id,
4816 if (key.idx == wdev->wext.default_key)
4817 wdev->wext.default_key = -1;
4818 else if (key.idx == wdev->wext.default_mgmt_key)
4819 wdev->wext.default_mgmt_key = -1;
5061 struct wireless_dev *wdev = dev->ieee80211_ptr;
5065 chandef = wdev_chandef(wdev, link_id);
5090 struct wireless_dev *wdev,
5101 he_cap = ieee80211_get_he_iftype_cap(sband, wdev->iftype);
5132 struct wireless_dev *wdev = dev->ieee80211_ptr;
5161 he_cap = ieee80211_get_he_iftype_cap(sband, wdev->iftype);
5228 !he_set_mcs_mask(info, wdev, sband,
5247 ieee80211_get_he_iftype_cap(sband, wdev->iftype)))
5804 struct wireless_dev *wdev;
5806 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) {
5807 if (wdev->iftype != NL80211_IFTYPE_AP &&
5808 wdev->iftype != NL80211_IFTYPE_P2P_GO)
5811 if (!wdev->u.ap.preset_chandef.chan)
5814 params->chandef = wdev->u.ap.preset_chandef;
5873 static void nl80211_send_ap_started(struct wireless_dev *wdev,
5876 struct wiphy *wiphy = wdev->wiphy;
5890 nla_put_u32(msg, NL80211_ATTR_IFINDEX, wdev->netdev->ifindex) ||
5891 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
5893 (wdev->u.ap.ssid_len &&
5894 nla_put(msg, NL80211_ATTR_SSID, wdev->u.ap.ssid_len,
5895 wdev->u.ap.ssid)) ||
5896 (wdev->valid_links &&
5929 struct wireless_dev *wdev = dev->ieee80211_ptr;
5940 if (wdev->links[link_id].ap.beacon_interval)
5984 if (wdev->u.ap.ssid_len &&
5985 (wdev->u.ap.ssid_len != params->ssid_len ||
5986 memcmp(wdev->u.ap.ssid, params->ssid, params->ssid_len))) {
5991 } else if (wdev->valid_links) {
6062 } else if (wdev->valid_links) {
6066 } else if (wdev->u.ap.preset_chandef.chan) {
6067 params->chandef = wdev->u.ap.preset_chandef;
6074 wdev->iftype)) {
6193 if (wdev->conn_owner_nlportid &&
6195 wdev->conn_owner_nlportid != info->snd_portid) {
6204 wdev->links[link_id].ap.beacon_interval = params->beacon_interval;
6205 wdev->links[link_id].ap.chandef = params->chandef;
6206 wdev->u.ap.ssid_len = params->ssid_len;
6207 memcpy(wdev->u.ap.ssid, params->ssid,
6211 wdev->conn_owner_nlportid = info->snd_portid;
6213 nl80211_send_ap_started(wdev, link_id);
6233 struct wireless_dev *wdev = dev->ieee80211_ptr;
6245 if (!wdev->links[link_id].ap.beacon_interval)
6766 struct wireless_dev *wdev;
6771 err = nl80211_prepare_wdev_dump(cb, &rdev, &wdev, NULL);
6777 if (!wdev->netdev) {
6789 err = rdev_dump_station(rdev, wdev->netdev, sta_idx,
6799 rdev, wdev->netdev, mac_addr,
7349 struct wireless_dev *wdev = dev->ieee80211_ptr;
7609 if (wdev->valid_links) {
7614 if (!(wdev->valid_links & BIT(params.link_sta_params.link_id))) {
7634 struct wireless_dev *wdev = dev->ieee80211_ptr;
7643 switch (wdev->iftype) {
7685 if (!wdev->valid_links && link_id != -1)
7689 if (wdev->valid_links && link_id >= 0 &&
7690 !(wdev->valid_links & BIT(link_id)))
7763 struct wireless_dev *wdev;
7769 err = nl80211_prepare_wdev_dump(cb, &rdev, &wdev, NULL);
7780 if (wdev->iftype != NL80211_IFTYPE_MESH_POINT) {
7786 err = rdev_dump_mpath(rdev, wdev->netdev, path_idx, dst,
7795 wdev->netdev, dst, next_hop,
7963 struct wireless_dev *wdev;
7969 err = nl80211_prepare_wdev_dump(cb, &rdev, &wdev, NULL);
7980 if (wdev->iftype != NL80211_IFTYPE_MESH_POINT) {
7986 err = rdev_dump_mpp(rdev, wdev->netdev, path_idx, dst,
7995 wdev->netdev, dst, mpp,
8136 struct wireless_dev *wdev = dev->ieee80211_ptr;
8143 if (wdev->iftype != NL80211_IFTYPE_MESH_POINT)
8150 if (!wdev->u.mesh.id_len)
8514 struct wireless_dev *wdev = dev->ieee80211_ptr;
8519 if (wdev->iftype != NL80211_IFTYPE_MESH_POINT)
8529 if (!wdev->u.mesh.id_len)
9024 static bool cfg80211_off_channel_oper_allowed(struct wireless_dev *wdev,
9030 lockdep_assert_wiphy(wdev->wiphy);
9032 if (!cfg80211_beaconing_iface_active(wdev))
9043 for_each_valid_link(wdev, link_id) {
9046 chandef = wdev_chandef(wdev, link_id);
9064 return regulatory_pre_cac_allowed(wdev->wiphy);
9078 nl80211_check_scan_flags(struct wiphy *wiphy, struct wireless_dev *wdev,
9092 randomness_flag = wdev ?
9144 (wdev && wdev->connected))
9158 struct wireless_dev *wdev = info->user_ptr[1];
9170 if (wdev->iftype == NL80211_IFTYPE_NAN)
9284 if (cfg80211_off_channel_oper_allowed(wdev, chan))
9287 if (!cfg80211_wdev_on_sub_chan(wdev, chan, true)) {
9348 err = nl80211_check_scan_flags(wiphy, wdev, request, info->attrs,
9376 request->wdev = wdev;
9386 nl80211_send_scan_start(rdev, wdev);
9387 dev_hold(wdev->netdev);
9401 struct wireless_dev *wdev = info->user_ptr[1];
9412 rdev_abort_scan(rdev, wdev);
9502 nl80211_parse_sched_scan(struct wiphy *wiphy, struct wireless_dev *wdev,
9798 err = nl80211_check_scan_flags(wiphy, wdev, request, attrs, true);
9844 struct wireless_dev *wdev = dev->ieee80211_ptr;
9857 sched_scan_req = nl80211_parse_sched_scan(&rdev->wiphy, wdev,
9923 struct wireless_dev *wdev = dev->ieee80211_ptr;
9924 struct wiphy *wiphy = wdev->wiphy;
9942 err = cfg80211_chandef_dfs_required(wiphy, &chandef, wdev->iftype);
9957 err = cfg80211_start_background_radar_detection(rdev, wdev,
9967 if (wdev->cac_started) {
9989 wdev->links[0].ap.chandef = chandef;
9990 wdev->cac_started = true;
9991 wdev->cac_start_time = jiffies;
9992 wdev->cac_time_ms = cac_time_ms;
10005 struct wireless_dev *wdev = dev->ieee80211_ptr;
10006 struct wiphy *wiphy = wdev->wiphy;
10024 err = cfg80211_chandef_dfs_required(wiphy, &chandef, wdev->iftype);
10095 struct wireless_dev *wdev = dev->ieee80211_ptr;
10119 if (!wdev->links[link_id].ap.beacon_interval)
10123 if (!wdev->u.ibss.ssid_len)
10127 if (!wdev->u.mesh.id_len)
10209 wdev->iftype)) {
10214 err = cfg80211_chandef_dfs_required(wdev->wiphy,
10216 wdev->iftype);
10247 struct wireless_dev *wdev,
10256 lockdep_assert_wiphy(wdev->wiphy);
10267 if (wdev->netdev &&
10268 nla_put_u32(msg, NL80211_ATTR_IFINDEX, wdev->netdev->ifindex))
10270 if (nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
10353 switch (wdev->iftype) {
10356 for_each_valid_link(wdev, link_id) {
10357 if (intbss == wdev->links[link_id].client.current_bss &&
10360 (wdev->valid_links &&
10364 wdev->u.client.connected_addr)))))
10369 if (intbss == wdev->u.ibss.current_bss &&
10403 struct wireless_dev *wdev;
10413 err = nl80211_prepare_wdev_dump(cb, &rdev, &wdev, attrbuf);
10446 rdev, wdev, scan) < 0) {
10544 struct wireless_dev *wdev;
10553 res = nl80211_prepare_wdev_dump(cb, &rdev, &wdev, attrbuf);
10564 if (!wdev->netdev) {
10575 res = rdev_dump_survey(rdev, wdev->netdev, survey_idx, &survey);
10591 wdev->netdev, radio_stats, &survey) < 0)
11546 struct wireless_dev *wdev, int approxlen,
11578 if (wdev) {
11580 wdev_id(wdev), NL80211_ATTR_PAD))
11582 if (wdev->netdev &&
11584 wdev->netdev->ifindex))
11604 struct wireless_dev *wdev,
11631 return __cfg80211_alloc_vendor_skb(rdev, wdev, approxlen, portid, 0,
11667 struct wireless_dev *wdev;
11672 wdev = __cfg80211_wdev_from_attrs(rdev, genl_info_net(info),
11678 if (IS_ERR(wdev)) {
11679 err = PTR_ERR(wdev);
11682 wdev = NULL;
11683 } else if (wdev->wiphy != &rdev->wiphy) {
11691 err = rdev_testmode_cmd(rdev, wdev,
12054 struct wireless_dev *wdev = dev->ieee80211_ptr;
12118 if (!wdev->connected)
12367 struct wireless_dev *wdev = info->user_ptr[1];
12397 if (!cfg80211_off_channel_oper_allowed(wdev, chandef.chan)) {
12400 oper_chandef = wdev_chandef(wdev, link_id);
12427 err = rdev_remain_on_channel(rdev, wdev, chandef.chan,
12452 struct wireless_dev *wdev = info->user_ptr[1];
12463 return rdev_cancel_remain_on_channel(rdev, wdev, cookie);
12490 struct wireless_dev *wdev = info->user_ptr[1];
12499 switch (wdev->iftype) {
12510 if (!wiphy_ext_feature_isset(wdev->wiphy,
12530 return cfg80211_mlme_register_mgmt(wdev, info->snd_portid, frame_type,
12540 struct wireless_dev *wdev = info->user_ptr[1];
12557 switch (wdev->iftype) {
12571 if (!wiphy_ext_feature_isset(wdev->wiphy,
12614 !cfg80211_off_channel_oper_allowed(wdev, chandef.chan))
12624 !(wdev->valid_links & BIT(params.link_id)))
12651 err = cfg80211_mlme_mgmt_tx(rdev, wdev, &params, &cookie);
12676 struct wireless_dev *wdev = info->user_ptr[1];
12685 switch (wdev->iftype) {
12695 if (!wiphy_ext_feature_isset(wdev->wiphy,
12705 return rdev_mgmt_tx_cancel_wait(rdev, wdev, cookie);
12711 struct wireless_dev *wdev;
12722 wdev = dev->ieee80211_ptr;
12729 if (state == wdev->ps)
12732 err = rdev_set_power_mgmt(rdev, dev, state, wdev->ps_timeout);
12734 wdev->ps = state;
12742 struct wireless_dev *wdev;
12748 wdev = dev->ieee80211_ptr;
12764 if (wdev->ps)
12798 struct wireless_dev *wdev = dev->ieee80211_ptr;
12806 if (wdev->iftype != NL80211_IFTYPE_STATION &&
12807 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)
12817 struct wireless_dev *wdev = dev->ieee80211_ptr;
12830 wdev->links[0].client.current_bss &&
12835 mac_addr = wdev->links[0].client.current_bss->pub.bssid;
12881 struct wireless_dev *wdev = dev->ieee80211_ptr;
12893 if (wdev->iftype != NL80211_IFTYPE_STATION &&
12894 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)
12900 old = wiphy_dereference(wdev->wiphy, wdev->cqm_config);
12931 rcu_assign_pointer(wdev->cqm_config, cqm_config);
12940 RCU_INIT_POINTER(wdev->cqm_config, NULL);
12949 rcu_assign_pointer(wdev->cqm_config, old);
14049 struct wireless_dev *wdev = dev->ieee80211_ptr;
14085 if (!wdev->connected)
14098 struct wireless_dev *wdev = dev->ieee80211_ptr;
14100 if (wdev->iftype != NL80211_IFTYPE_AP &&
14101 wdev->iftype != NL80211_IFTYPE_P2P_GO)
14104 if (wdev->ap_unexpected_nlportid)
14107 wdev->ap_unexpected_nlportid = info->snd_portid;
14116 struct wireless_dev *wdev = dev->ieee80211_ptr;
14123 if (wdev->iftype != NL80211_IFTYPE_AP &&
14124 wdev->iftype != NL80211_IFTYPE_P2P_GO)
14202 struct wireless_dev *wdev = info->user_ptr[1];
14208 if (wdev->iftype != NL80211_IFTYPE_P2P_DEVICE)
14211 if (wdev_running(wdev))
14217 err = rdev_start_p2p_device(rdev, wdev);
14221 wdev->is_running = true;
14230 struct wireless_dev *wdev = info->user_ptr[1];
14232 if (wdev->iftype != NL80211_IFTYPE_P2P_DEVICE)
14238 cfg80211_stop_p2p_device(rdev, wdev);
14246 struct wireless_dev *wdev = info->user_ptr[1];
14250 if (wdev->iftype != NL80211_IFTYPE_NAN)
14253 if (wdev_running(wdev))
14268 if (bands & ~(u32)wdev->wiphy->nan_supported_bands)
14277 err = rdev_start_nan(rdev, wdev, &conf);
14281 wdev->is_running = true;
14290 struct wireless_dev *wdev = info->user_ptr[1];
14292 if (wdev->iftype != NL80211_IFTYPE_NAN)
14295 cfg80211_stop_nan(rdev, wdev);
14367 struct wireless_dev *wdev = info->user_ptr[1];
14374 if (wdev->iftype != NL80211_IFTYPE_NAN)
14377 if (!wdev_running(wdev))
14570 err = rdev_add_nan_func(rdev, wdev, func);
14605 struct wireless_dev *wdev = info->user_ptr[1];
14608 if (wdev->iftype != NL80211_IFTYPE_NAN)
14611 if (!wdev_running(wdev))
14619 rdev_del_nan_func(rdev, wdev, cookie);
14628 struct wireless_dev *wdev = info->user_ptr[1];
14632 if (wdev->iftype != NL80211_IFTYPE_NAN)
14635 if (!wdev_running(wdev))
14650 if (bands & ~(u32)wdev->wiphy->nan_supported_bands)
14663 return rdev_nan_change_conf(rdev, wdev, &conf, changed);
14666 void cfg80211_nan_match(struct wireless_dev *wdev,
14669 struct wiphy *wiphy = wdev->wiphy;
14689 (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX,
14690 wdev->netdev->ifindex)) ||
14691 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
14732 if (!wdev->owner_nlportid)
14737 wdev->owner_nlportid);
14746 void cfg80211_nan_func_terminated(struct wireless_dev *wdev,
14751 struct wiphy *wiphy = wdev->wiphy;
14771 (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX,
14772 wdev->netdev->ifindex)) ||
14773 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
14792 if (!wdev->owner_nlportid)
14797 wdev->owner_nlportid);
14858 struct wireless_dev *wdev = info->user_ptr[1];
14886 ret = rdev_crit_proto_start(rdev, wdev, proto, duration);
14897 struct wireless_dev *wdev = info->user_ptr[1];
14904 rdev_crit_proto_stop(rdev, wdev);
14934 struct wireless_dev *wdev =
14943 if (IS_ERR(wdev)) {
14944 err = PTR_ERR(wdev);
14947 wdev = NULL;
14948 } else if (wdev->wiphy != &rdev->wiphy) {
14970 if (!wdev)
14973 !wdev->netdev)
14977 if (!wdev_running(wdev))
14981 wdev = NULL;
14999 err = vcmd->doit(&rdev->wiphy, wdev, data, len);
15010 struct wireless_dev **wdev)
15028 *wdev = NULL;
15033 *wdev = tmp;
15060 *wdev = __cfg80211_wdev_from_attrs(NULL, sock_net(skb->sk), attrbuf);
15061 if (IS_ERR(*wdev))
15062 *wdev = NULL;
15110 cb->args[1] = *wdev ? (*wdev)->identifier + 1 : 0;
15126 struct wireless_dev *wdev;
15135 err = nl80211_prepare_vendor_dump(skb, cb, &rdev, &wdev);
15146 if (!wdev) {
15151 !wdev->netdev) {
15157 if (!wdev_running(wdev)) {
15172 (wdev && nla_put_u64_64bit(skb, NL80211_ATTR_WDEV,
15173 wdev_id(wdev),
15186 err = vcmd->dumpit(&rdev->wiphy, wdev, skb, data, data_len,
15307 struct wireless_dev *wdev = dev->ieee80211_ptr;
15340 switch (wdev->iftype) {
15343 if (wdev->connected)
15374 struct wireless_dev *wdev = dev->ieee80211_ptr;
15412 wdev->iftype))
15416 if (cfg80211_chandef_dfs_required(wdev->wiphy, &chandef, wdev->iftype))
15460 struct wireless_dev *wdev = dev->ieee80211_ptr;
15467 if (wdev->iftype != NL80211_IFTYPE_AP &&
15468 wdev->iftype != NL80211_IFTYPE_P2P_GO)
15481 struct wireless_dev *wdev = dev->ieee80211_ptr;
15484 if (wdev->iftype != NL80211_IFTYPE_STATION &&
15485 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)
15495 if (!wdev->connected)
15499 if (memcmp(pmk_conf.aa, wdev->u.client.connected_addr, ETH_ALEN))
15519 struct wireless_dev *wdev = dev->ieee80211_ptr;
15522 if (wdev->iftype != NL80211_IFTYPE_STATION &&
15523 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)
15584 struct wireless_dev *wdev = dev->ieee80211_ptr;
15608 switch (wdev->iftype) {
15614 if (wdev->u.ibss.current_bss)
15619 if (wdev->connected)
15648 struct wireless_dev *wdev = dev->ieee80211_ptr;
15656 if (wdev->iftype != NL80211_IFTYPE_AP ||
15657 !wdev->links[link_id].ap.beacon_interval)
15745 struct wireless_dev *wdev = dev->ieee80211_ptr;
15761 if (wdev->iftype != NL80211_IFTYPE_MESH_POINT)
15947 struct wireless_dev *wdev = dev->ieee80211_ptr;
15959 if (wdev->iftype != NL80211_IFTYPE_AP)
16075 struct wireless_dev *wdev = dev->ieee80211_ptr;
16078 if (!(wdev->wiphy->flags & WIPHY_FLAG_SUPPORTS_MLO))
16081 switch (wdev->iftype) {
16092 wdev->valid_links |= BIT(link_id);
16093 ether_addr_copy(wdev->links[link_id].addr,
16096 ret = rdev_add_intf_link(rdev, wdev, link_id);
16098 wdev->valid_links &= ~BIT(link_id);
16099 eth_zero_addr(wdev->links[link_id].addr);
16109 struct wireless_dev *wdev = dev->ieee80211_ptr;
16115 switch (wdev->iftype) {
16122 cfg80211_remove_link(wdev, link_id);
16279 struct wireless_dev *wdev = dev->ieee80211_ptr;
16281 if (wdev->iftype != NL80211_IFTYPE_STATION &&
16282 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)
16285 if (!wdev->connected)
16395 struct wireless_dev *wdev = NULL;
16415 wdev = __cfg80211_wdev_from_attrs(NULL, genl_info_net(info),
16417 if (IS_ERR(wdev)) {
16418 err = PTR_ERR(wdev);
16422 dev = wdev->netdev;
16424 rdev = wiphy_to_rdev(wdev->wiphy);
16434 info->user_ptr[1] = wdev;
16438 !wdev_running(wdev)) {
16449 if (!wdev) {
16455 if (wdev->valid_links &&
16457 !(wdev->valid_links & BIT(nla_get_u8(link_id))))) {
16463 if (!wdev->valid_links && link_id) {
16471 (wdev && wdev->valid_links)) {
16500 struct wireless_dev *wdev = info->user_ptr[1];
16502 dev_put(wdev->netdev);
17541 struct wireless_dev *wdev,
17550 if (nl80211_send_iface(msg, 0, 0, 0, rdev, wdev, cmd) < 0) {
17625 struct wireless_dev *wdev,
17636 (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX,
17637 wdev->netdev->ifindex)) ||
17638 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
17679 struct wireless_dev *wdev)
17687 if (nl80211_prep_scan_msg(msg, rdev, wdev, 0, 0, 0,
17698 struct wireless_dev *wdev, bool aborted)
17706 if (nl80211_prep_scan_msg(msg, rdev, wdev, 0, 0, 0,
17951 struct wireless_dev *wdev = dev->ieee80211_ptr;
17952 struct wiphy *wiphy = wdev->wiphy;
17969 if (wdev->unprot_beacon_reported &&
17970 elapsed_jiffies_msecs(wdev->unprot_beacon_reported) < 10000)
17973 wdev->unprot_beacon_reported = jiffies;
18324 struct wireless_dev *wdev = dev->ieee80211_ptr;
18325 struct wiphy *wiphy = wdev->wiphy;
18331 lockdep_assert_wiphy(wdev->wiphy);
18334 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_STATION &&
18335 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT))
18338 if (WARN_ON(!wdev->valid_links || !link_mask ||
18339 (wdev->valid_links & link_mask) != link_mask ||
18340 wdev->valid_links == link_mask))
18343 cfg80211_wdev_release_link_bsses(wdev, link_mask);
18344 wdev->valid_links &= ~link_mask;
18428 struct wireless_dev *wdev = dev->ieee80211_ptr;
18429 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
18433 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_MESH_POINT))
18563 struct wireless_dev *wdev, u64 cookie,
18581 (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX,
18582 wdev->netdev->ifindex)) ||
18583 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
18609 struct wireless_dev *wdev = netdev->ieee80211_ptr;
18610 struct wiphy *wiphy = wdev->wiphy;
18615 trace_cfg80211_assoc_comeback(wdev, ap_addr, timeout);
18644 void cfg80211_ready_on_channel(struct wireless_dev *wdev, u64 cookie,
18648 struct wiphy *wiphy = wdev->wiphy;
18651 trace_cfg80211_ready_on_channel(wdev, cookie, chan, duration);
18653 rdev, wdev, cookie, chan,
18658 void cfg80211_remain_on_channel_expired(struct wireless_dev *wdev, u64 cookie,
18662 struct wiphy *wiphy = wdev->wiphy;
18665 trace_cfg80211_ready_on_channel_expired(wdev, cookie, chan);
18667 rdev, wdev, cookie, chan, 0, gfp);
18671 void cfg80211_tx_mgmt_expired(struct wireless_dev *wdev, u64 cookie,
18675 struct wiphy *wiphy = wdev->wiphy;
18678 trace_cfg80211_tx_mgmt_expired(wdev, cookie, chan);
18680 rdev, wdev, cookie, chan, 0, gfp);
18776 struct wireless_dev *wdev = dev->ieee80211_ptr;
18777 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
18780 u32 nlportid = READ_ONCE(wdev->ap_unexpected_nlportid);
18812 struct wireless_dev *wdev = dev->ieee80211_ptr;
18817 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_AP &&
18818 wdev->iftype != NL80211_IFTYPE_P2P_GO)) {
18832 struct wireless_dev *wdev = dev->ieee80211_ptr;
18837 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_AP &&
18838 wdev->iftype != NL80211_IFTYPE_P2P_GO &&
18839 wdev->iftype != NL80211_IFTYPE_AP_VLAN)) {
18852 struct wireless_dev *wdev, u32 nlportid,
18855 struct net_device *netdev = wdev->netdev;
18872 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
18902 static void nl80211_frame_tx_status(struct wireless_dev *wdev,
18906 struct wiphy *wiphy = wdev->wiphy;
18908 struct net_device *netdev = wdev->netdev;
18913 trace_cfg80211_mgmt_tx_status(wdev, status->cookie,
18916 trace_cfg80211_control_port_tx_status(wdev, status->cookie,
18932 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
18956 void cfg80211_control_port_tx_status(struct wireless_dev *wdev, u64 cookie,
18967 nl80211_frame_tx_status(wdev, &status, gfp,
18972 void cfg80211_mgmt_tx_status_ext(struct wireless_dev *wdev,
18975 nl80211_frame_tx_status(wdev, status, gfp, NL80211_CMD_FRAME_TX_STATUS);
18985 struct wireless_dev *wdev = dev->ieee80211_ptr;
18986 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
18994 u32 nlportid = READ_ONCE(wdev->conn_owner_nlportid);
19011 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
19051 struct wireless_dev *wdev = dev->ieee80211_ptr;
19052 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
19104 struct wireless_dev *wdev = dev->ieee80211_ptr;
19114 cqm_config = rcu_dereference(wdev->cqm_config);
19118 wiphy_work_queue(wdev->wiphy, &wdev->cqm_rssi_work);
19126 struct wireless_dev *wdev = container_of(work, struct wireless_dev,
19134 cqm_config = wiphy_dereference(wdev->wiphy, wdev->cqm_config);
19139 cfg80211_cqm_rssi_update(rdev, wdev->netdev, cqm_config);
19144 msg = cfg80211_prepare_cqm(wdev->netdev, NULL, GFP_KERNEL);
19278 struct wireless_dev *wdev = dev->ieee80211_ptr;
19279 struct wiphy *wiphy = wdev->wiphy;
19335 struct wireless_dev *wdev = dev->ieee80211_ptr;
19336 struct wiphy *wiphy = wdev->wiphy;
19352 struct wireless_dev *wdev = netdev->ieee80211_ptr;
19369 if (wdev->valid_links &&
19398 struct wireless_dev *wdev = dev->ieee80211_ptr;
19399 struct wiphy *wiphy = wdev->wiphy;
19402 lockdep_assert_wiphy(wdev->wiphy);
19403 WARN_INVALID_LINK_ID(wdev, link_id);
19407 switch (wdev->iftype) {
19410 if (!WARN_ON(!wdev->links[link_id].client.current_bss))
19411 cfg80211_update_assoc_bss_entry(wdev, link_id,
19415 wdev->u.mesh.chandef = *chandef;
19416 wdev->u.mesh.preset_chandef = *chandef;
19420 wdev->links[link_id].ap.chandef = *chandef;
19423 wdev->u.ibss.chandef = *chandef;
19430 cfg80211_schedule_channels_check(wdev);
19443 struct wireless_dev *wdev = dev->ieee80211_ptr;
19444 struct wiphy *wiphy = wdev->wiphy;
19447 lockdep_assert_wiphy(wdev->wiphy);
19448 WARN_INVALID_LINK_ID(wdev, link_id);
19463 struct wireless_dev *wdev = dev->ieee80211_ptr;
19464 struct wiphy *wiphy = wdev->wiphy;
19469 lockdep_assert_wiphy(wdev->wiphy);
19484 if (wdev->valid_links &&
19532 struct wireless_dev *wdev = netdev->ieee80211_ptr;
19535 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
19561 struct wireless_dev *wdev = dev->ieee80211_ptr;
19562 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
19615 struct wireless_dev *wdev = dev->ieee80211_ptr;
19616 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
19760 void cfg80211_report_wowlan_wakeup(struct wireless_dev *wdev,
19764 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
19769 trace_cfg80211_report_wowlan_wakeup(wdev->wiphy, wdev, wakeup);
19783 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
19787 if (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX,
19788 wdev->netdev->ifindex))
19884 struct wireless_dev *wdev = dev->ieee80211_ptr;
19885 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
19889 trace_cfg80211_tdls_oper_request(wdev->wiphy, dev, peer, oper,
19927 struct wireless_dev *wdev;
19948 list_for_each_entry_rcu(wdev, &rdev->wiphy.wdev_list, list) {
19949 cfg80211_mlme_unregister_socket(wdev, notify->portid);
19951 if (wdev->owner_nlportid == notify->portid) {
19952 wdev->nl_owner_dead = true;
19954 } else if (wdev->conn_owner_nlportid == notify->portid) {
19955 schedule_work(&wdev->disconnect_wk);
19958 cfg80211_release_pmsr(wdev, notify->portid);
20032 void cfg80211_crit_proto_stopped(struct wireless_dev *wdev, gfp_t gfp)
20039 rdev = wiphy_to_rdev(wdev->wiphy);
20055 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
20069 void nl80211_send_ap_stopped(struct wireless_dev *wdev, unsigned int link_id)
20071 struct wiphy *wiphy = wdev->wiphy;
20085 nla_put_u32(msg, NL80211_ATTR_IFINDEX, wdev->netdev->ifindex) ||
20086 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev),
20088 (wdev->valid_links &&
20105 struct wireless_dev *wdev = dev->ieee80211_ptr;
20106 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
20110 if (!wdev->conn_owner_nlportid)
20152 wdev->conn_owner_nlportid);
20212 void cfg80211_schedule_channels_check(struct wireless_dev *wdev)
20214 struct wiphy *wiphy = wdev->wiphy;
20217 if (wdev->iftype == NL80211_IFTYPE_STATION &&