Lines Matching refs:wdev
88 struct wireless_dev *wdev; in __cfg80211_wdev_from_attrs() local
92 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) { in __cfg80211_wdev_from_attrs()
93 if (have_ifidx && wdev->netdev && in __cfg80211_wdev_from_attrs()
94 wdev->netdev->ifindex == ifidx) { in __cfg80211_wdev_from_attrs()
95 result = wdev; in __cfg80211_wdev_from_attrs()
98 if (have_wdev_id && wdev->identifier == (u32)wdev_id) { in __cfg80211_wdev_from_attrs()
99 result = wdev; in __cfg80211_wdev_from_attrs()
110 struct wireless_dev *wdev; in __cfg80211_wdev_from_attrs() local
118 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) { in __cfg80211_wdev_from_attrs()
119 if (have_ifidx && wdev->netdev && in __cfg80211_wdev_from_attrs()
120 wdev->netdev->ifindex == ifidx) { in __cfg80211_wdev_from_attrs()
121 result = wdev; in __cfg80211_wdev_from_attrs()
124 if (have_wdev_id && wdev->identifier == (u32)wdev_id) { in __cfg80211_wdev_from_attrs()
125 result = wdev; in __cfg80211_wdev_from_attrs()
158 struct wireless_dev *wdev; in __cfg80211_rdev_from_attrs() local
164 list_for_each_entry(wdev, &tmp->wiphy.wdev_list, list) { in __cfg80211_rdev_from_attrs()
165 if (wdev->identifier != (u32)wdev_id) in __cfg80211_rdev_from_attrs()
978 struct wireless_dev **wdev, in nl80211_prepare_wdev_dump() argument
1004 *wdev = __cfg80211_wdev_from_attrs(NULL, sock_net(cb->skb->sk), in nl80211_prepare_wdev_dump()
1007 if (IS_ERR(*wdev)) { in nl80211_prepare_wdev_dump()
1009 return PTR_ERR(*wdev); in nl80211_prepare_wdev_dump()
1011 *rdev = wiphy_to_rdev((*wdev)->wiphy); in nl80211_prepare_wdev_dump()
1016 cb->args[1] = (*wdev)->identifier; in nl80211_prepare_wdev_dump()
1029 *wdev = NULL; in nl80211_prepare_wdev_dump()
1033 *wdev = tmp; in nl80211_prepare_wdev_dump()
1038 if (!*wdev) { in nl80211_prepare_wdev_dump()
1540 static int nl80211_key_allowed(struct wireless_dev *wdev) in nl80211_key_allowed() argument
1542 ASSERT_WDEV_LOCK(wdev); in nl80211_key_allowed()
1544 switch (wdev->iftype) { in nl80211_key_allowed()
1551 if (wdev->u.ibss.current_bss) in nl80211_key_allowed()
1556 if (wdev->connected) in nl80211_key_allowed()
1560 if (wiphy_ext_feature_isset(wdev->wiphy, in nl80211_key_allowed()
3171 static bool nl80211_can_set_dev_channel(struct wireless_dev *wdev) in nl80211_can_set_dev_channel() argument
3188 return !wdev || in nl80211_can_set_dev_channel()
3189 wdev->iftype == NL80211_IFTYPE_AP || in nl80211_can_set_dev_channel()
3190 wdev->iftype == NL80211_IFTYPE_MESH_POINT || in nl80211_can_set_dev_channel()
3191 wdev->iftype == NL80211_IFTYPE_MONITOR || in nl80211_can_set_dev_channel()
3192 wdev->iftype == NL80211_IFTYPE_P2P_GO; in nl80211_can_set_dev_channel()
3343 struct wireless_dev *wdev = NULL; in __nl80211_set_channel() local
3347 wdev = dev->ieee80211_ptr; in __nl80211_set_channel()
3348 if (!nl80211_can_set_dev_channel(wdev)) in __nl80211_set_channel()
3350 if (wdev) in __nl80211_set_channel()
3351 iftype = wdev->iftype; in __nl80211_set_channel()
3354 if (wdev && wdev->valid_links) in __nl80211_set_channel()
3369 if (wdev->links[link_id].ap.beacon_interval) { in __nl80211_set_channel()
3378 cur_chan = wdev->links[link_id].ap.chandef.chan; in __nl80211_set_channel()
3386 wdev->links[link_id].ap.chandef = chandef; in __nl80211_set_channel()
3388 wdev->u.ap.preset_chandef = chandef; in __nl80211_set_channel()
3392 return cfg80211_set_mesh_channel(rdev, wdev, &chandef); in __nl80211_set_channel()
3420 struct wireless_dev *wdev; in nl80211_set_wiphy() local
3457 wdev = NULL; in nl80211_set_wiphy()
3461 wdev = netdev->ieee80211_ptr; in nl80211_set_wiphy()
3540 if (wdev) { in nl80211_set_wiphy()
3541 wdev_lock(wdev); in nl80211_set_wiphy()
3544 nl80211_can_set_dev_channel(wdev) ? netdev : NULL, in nl80211_set_wiphy()
3546 wdev_unlock(wdev); in nl80211_set_wiphy()
3556 struct wireless_dev *txp_wdev = wdev; in nl80211_set_wiphy()
3805 struct wireless_dev *wdev, in nl80211_send_iface() argument
3808 struct net_device *dev = wdev->netdev; in nl80211_send_iface()
3825 nla_put_u32(msg, NL80211_ATTR_IFTYPE, wdev->iftype) || in nl80211_send_iface()
3826 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev), in nl80211_send_iface()
3828 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, wdev_address(wdev)) || in nl80211_send_iface()
3832 nla_put_u8(msg, NL80211_ATTR_4ADDR, wdev->use_4addr)) in nl80211_send_iface()
3835 if (rdev->ops->get_channel && !wdev->valid_links) { in nl80211_send_iface()
3839 ret = rdev_get_channel(rdev, wdev, 0, &chandef); in nl80211_send_iface()
3847 ret = rdev_get_tx_power(rdev, wdev, &dbm); in nl80211_send_iface()
3854 wdev_lock(wdev); in nl80211_send_iface()
3855 switch (wdev->iftype) { in nl80211_send_iface()
3858 if (wdev->u.ap.ssid_len && in nl80211_send_iface()
3859 nla_put(msg, NL80211_ATTR_SSID, wdev->u.ap.ssid_len, in nl80211_send_iface()
3860 wdev->u.ap.ssid)) in nl80211_send_iface()
3865 if (wdev->u.client.ssid_len && in nl80211_send_iface()
3866 nla_put(msg, NL80211_ATTR_SSID, wdev->u.client.ssid_len, in nl80211_send_iface()
3867 wdev->u.client.ssid)) in nl80211_send_iface()
3871 if (wdev->u.ibss.ssid_len && in nl80211_send_iface()
3872 nla_put(msg, NL80211_ATTR_SSID, wdev->u.ibss.ssid_len, in nl80211_send_iface()
3873 wdev->u.ibss.ssid)) in nl80211_send_iface()
3880 wdev_unlock(wdev); in nl80211_send_iface()
3884 int ret = rdev_get_txq_stats(rdev, wdev, &txqstats); in nl80211_send_iface()
3892 if (wdev->valid_links) { in nl80211_send_iface()
3900 for_each_valid_link(wdev, link_id) { in nl80211_send_iface()
3911 wdev->links[link_id].addr)) in nl80211_send_iface()
3914 ret = rdev_get_channel(rdev, wdev, link_id, &chandef); in nl80211_send_iface()
3928 wdev_unlock(wdev); in nl80211_send_iface()
3942 struct wireless_dev *wdev; in nl80211_dump_interface() local
3982 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) { in nl80211_dump_interface()
3989 rdev, wdev, in nl80211_dump_interface()
4013 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_get_interface() local
4020 rdev, wdev, NL80211_CMD_NEW_INTERFACE) < 0) { in nl80211_get_interface()
4168 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_set_interface() local
4175 wdev_lock(wdev); in nl80211_set_interface()
4178 wdev->u.mesh.id_up_len = in nl80211_set_interface()
4180 memcpy(wdev->u.mesh.id, in nl80211_set_interface()
4182 wdev->u.mesh.id_up_len); in nl80211_set_interface()
4183 wdev_unlock(wdev); in nl80211_set_interface()
4211 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_set_interface() local
4213 nl80211_notify_iface(rdev, wdev, NL80211_CMD_SET_INTERFACE); in nl80211_set_interface()
4223 struct wireless_dev *wdev; in _nl80211_new_interface() local
4266 wdev = rdev_add_virtual_intf(rdev, in _nl80211_new_interface()
4269 if (WARN_ON(!wdev)) { in _nl80211_new_interface()
4272 } else if (IS_ERR(wdev)) { in _nl80211_new_interface()
4274 return PTR_ERR(wdev); in _nl80211_new_interface()
4278 wdev->owner_nlportid = info->snd_portid; in _nl80211_new_interface()
4284 wdev_lock(wdev); in _nl80211_new_interface()
4287 wdev->u.mesh.id_up_len = in _nl80211_new_interface()
4289 memcpy(wdev->u.mesh.id, in _nl80211_new_interface()
4291 wdev->u.mesh.id_up_len); in _nl80211_new_interface()
4292 wdev_unlock(wdev); in _nl80211_new_interface()
4300 cfg80211_init_wdev(wdev); in _nl80211_new_interface()
4301 cfg80211_register_wdev(rdev, wdev); in _nl80211_new_interface()
4308 rdev, wdev, NL80211_CMD_NEW_INTERFACE) < 0) { in _nl80211_new_interface()
4334 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_del_interface() local
4357 if (!wdev->netdev) in nl80211_del_interface()
4360 dev_close(wdev->netdev); in nl80211_del_interface()
4364 return cfg80211_remove_virtual_intf(rdev, wdev); in nl80211_del_interface()
4385 struct wireless_dev *wdev, in nl80211_validate_key_link_id() argument
4398 if (wdev->valid_links) { in nl80211_validate_key_link_id()
4404 if (!(wdev->valid_links & BIT(link_id))) { in nl80211_validate_key_link_id()
4478 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_get_key() local
4484 if ((wdev->iftype == NL80211_IFTYPE_STATION || in nl80211_get_key()
4485 wdev->iftype == NL80211_IFTYPE_P2P_CLIENT) && in nl80211_get_key()
4537 err = nl80211_validate_key_link_id(info, wdev, link_id, pairwise); in nl80211_get_key()
4567 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_set_key() local
4583 wdev_lock(wdev); in nl80211_set_key()
4591 err = nl80211_key_allowed(wdev); in nl80211_set_key()
4595 err = nl80211_validate_key_link_id(info, wdev, link_id, false); in nl80211_set_key()
4606 wdev->wext.default_key = key.idx; in nl80211_set_key()
4619 err = nl80211_key_allowed(wdev); in nl80211_set_key()
4623 err = nl80211_validate_key_link_id(info, wdev, link_id, false); in nl80211_set_key()
4632 wdev->wext.default_mgmt_key = key.idx; in nl80211_set_key()
4645 err = nl80211_key_allowed(wdev); in nl80211_set_key()
4649 err = nl80211_validate_key_link_id(info, wdev, link_id, false); in nl80211_set_key()
4669 err = nl80211_validate_key_link_id(info, wdev, link_id, true); in nl80211_set_key()
4680 wdev_unlock(wdev); in nl80211_set_key()
4693 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_new_key() local
4735 wdev_lock(wdev); in nl80211_new_key()
4736 err = nl80211_key_allowed(wdev); in nl80211_new_key()
4741 err = nl80211_validate_key_link_id(info, wdev, link_id, in nl80211_new_key()
4751 wdev_unlock(wdev); in nl80211_new_key()
4764 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_del_key() local
4792 wdev_lock(wdev); in nl80211_del_key()
4793 err = nl80211_key_allowed(wdev); in nl80211_del_key()
4800 err = nl80211_validate_key_link_id(info, wdev, link_id, in nl80211_del_key()
4810 if (key.idx == wdev->wext.default_key) in nl80211_del_key()
4811 wdev->wext.default_key = -1; in nl80211_del_key()
4812 else if (key.idx == wdev->wext.default_mgmt_key) in nl80211_del_key()
4813 wdev->wext.default_mgmt_key = -1; in nl80211_del_key()
4816 wdev_unlock(wdev); in nl80211_del_key()
5057 struct wireless_dev *wdev = dev->ieee80211_ptr; in he_get_txmcsmap() local
5061 chandef = wdev_chandef(wdev, link_id); in he_get_txmcsmap()
5086 struct wireless_dev *wdev, in he_set_mcs_mask() argument
5097 he_cap = ieee80211_get_he_iftype_cap(sband, wdev->iftype); in he_set_mcs_mask()
5128 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_parse_tx_bitrate_mask() local
5157 he_cap = ieee80211_get_he_iftype_cap(sband, wdev->iftype); in nl80211_parse_tx_bitrate_mask()
5224 !he_set_mcs_mask(info, wdev, sband, in nl80211_parse_tx_bitrate_mask()
5243 ieee80211_get_he_iftype_cap(sband, wdev->iftype))) in nl80211_parse_tx_bitrate_mask()
5738 struct wireless_dev *wdev; in nl80211_get_ap_channel() local
5740 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) { in nl80211_get_ap_channel()
5741 if (wdev->iftype != NL80211_IFTYPE_AP && in nl80211_get_ap_channel()
5742 wdev->iftype != NL80211_IFTYPE_P2P_GO) in nl80211_get_ap_channel()
5745 if (!wdev->u.ap.preset_chandef.chan) in nl80211_get_ap_channel()
5748 params->chandef = wdev->u.ap.preset_chandef; in nl80211_get_ap_channel()
5812 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_start_ap() local
5823 if (wdev->links[link_id].ap.beacon_interval) in nl80211_start_ap()
5866 if (wdev->u.ap.ssid_len && in nl80211_start_ap()
5867 (wdev->u.ap.ssid_len != params->ssid_len || in nl80211_start_ap()
5868 memcmp(wdev->u.ap.ssid, params->ssid, params->ssid_len))) { in nl80211_start_ap()
5873 } else if (wdev->valid_links) { in nl80211_start_ap()
5944 } else if (wdev->valid_links) { in nl80211_start_ap()
5948 } else if (wdev->u.ap.preset_chandef.chan) { in nl80211_start_ap()
5949 params->chandef = wdev->u.ap.preset_chandef; in nl80211_start_ap()
5964 wdev->iftype)) { in nl80211_start_ap()
5969 wdev_lock(wdev); in nl80211_start_ap()
6076 if (wdev->conn_owner_nlportid && in nl80211_start_ap()
6078 wdev->conn_owner_nlportid != info->snd_portid) { in nl80211_start_ap()
6087 wdev->links[link_id].ap.beacon_interval = params->beacon_interval; in nl80211_start_ap()
6088 wdev->links[link_id].ap.chandef = params->chandef; in nl80211_start_ap()
6089 wdev->u.ap.ssid_len = params->ssid_len; in nl80211_start_ap()
6090 memcpy(wdev->u.ap.ssid, params->ssid, in nl80211_start_ap()
6094 wdev->conn_owner_nlportid = info->snd_portid; in nl80211_start_ap()
6097 wdev_unlock(wdev); in nl80211_start_ap()
6115 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_set_beacon() local
6126 if (!wdev->links[link_id].ap.beacon_interval) in nl80211_set_beacon()
6133 wdev_lock(wdev); in nl80211_set_beacon()
6135 wdev_unlock(wdev); in nl80211_set_beacon()
6603 struct wireless_dev *wdev; in nl80211_dump_station() local
6608 err = nl80211_prepare_wdev_dump(cb, &rdev, &wdev, NULL); in nl80211_dump_station()
6614 if (!wdev->netdev) { in nl80211_dump_station()
6626 err = rdev_dump_station(rdev, wdev->netdev, sta_idx, in nl80211_dump_station()
6636 rdev, wdev->netdev, mac_addr, in nl80211_dump_station()
7185 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_new_station() local
7441 if (wdev->valid_links) { in nl80211_new_station()
7446 if (!(wdev->valid_links & BIT(params.link_sta_params.link_id))) { in nl80211_new_station()
7588 struct wireless_dev *wdev; in nl80211_dump_mpath() local
7594 err = nl80211_prepare_wdev_dump(cb, &rdev, &wdev, NULL); in nl80211_dump_mpath()
7605 if (wdev->iftype != NL80211_IFTYPE_MESH_POINT) { in nl80211_dump_mpath()
7611 err = rdev_dump_mpath(rdev, wdev->netdev, path_idx, dst, in nl80211_dump_mpath()
7620 wdev->netdev, dst, next_hop, in nl80211_dump_mpath()
7788 struct wireless_dev *wdev; in nl80211_dump_mpp() local
7794 err = nl80211_prepare_wdev_dump(cb, &rdev, &wdev, NULL); in nl80211_dump_mpp()
7805 if (wdev->iftype != NL80211_IFTYPE_MESH_POINT) { in nl80211_dump_mpp()
7811 err = rdev_dump_mpp(rdev, wdev->netdev, path_idx, dst, in nl80211_dump_mpp()
7820 wdev->netdev, dst, mpp, in nl80211_dump_mpp()
7839 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_set_bss() local
7904 wdev_lock(wdev); in nl80211_set_bss()
7906 wdev_unlock(wdev); in nl80211_set_bss()
7966 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_get_mesh_config() local
7973 if (wdev->iftype != NL80211_IFTYPE_MESH_POINT) in nl80211_get_mesh_config()
7979 wdev_lock(wdev); in nl80211_get_mesh_config()
7981 if (!wdev->u.mesh.id_len) in nl80211_get_mesh_config()
7985 wdev_unlock(wdev); in nl80211_get_mesh_config()
8346 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_update_mesh_config() local
8351 if (wdev->iftype != NL80211_IFTYPE_MESH_POINT) in nl80211_update_mesh_config()
8361 wdev_lock(wdev); in nl80211_update_mesh_config()
8362 if (!wdev->u.mesh.id_len) in nl80211_update_mesh_config()
8368 wdev_unlock(wdev); in nl80211_update_mesh_config()
8854 static bool cfg80211_off_channel_oper_allowed(struct wireless_dev *wdev, in cfg80211_off_channel_oper_allowed() argument
8860 ASSERT_WDEV_LOCK(wdev); in cfg80211_off_channel_oper_allowed()
8862 if (!cfg80211_beaconing_iface_active(wdev)) in cfg80211_off_channel_oper_allowed()
8873 for_each_valid_link(wdev, link_id) { in cfg80211_off_channel_oper_allowed()
8876 chandef = wdev_chandef(wdev, link_id); in cfg80211_off_channel_oper_allowed()
8894 return regulatory_pre_cac_allowed(wdev->wiphy); in cfg80211_off_channel_oper_allowed()
8908 nl80211_check_scan_flags(struct wiphy *wiphy, struct wireless_dev *wdev, in nl80211_check_scan_flags() argument
8922 randomness_flag = wdev ? in nl80211_check_scan_flags()
8974 (wdev && wdev->connected)) in nl80211_check_scan_flags()
8988 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_trigger_scan() local
8999 if (wdev->iftype == NL80211_IFTYPE_NAN) in nl80211_trigger_scan()
9110 wdev_lock(wdev); in nl80211_trigger_scan()
9115 if (cfg80211_off_channel_oper_allowed(wdev, chan)) in nl80211_trigger_scan()
9118 if (!cfg80211_wdev_on_sub_chan(wdev, chan, true)) { in nl80211_trigger_scan()
9119 wdev_unlock(wdev); in nl80211_trigger_scan()
9124 wdev_unlock(wdev); in nl80211_trigger_scan()
9181 err = nl80211_check_scan_flags(wiphy, wdev, request, info->attrs, in nl80211_trigger_scan()
9208 request->wdev = wdev; in nl80211_trigger_scan()
9218 nl80211_send_scan_start(rdev, wdev); in nl80211_trigger_scan()
9219 dev_hold(wdev->netdev); in nl80211_trigger_scan()
9233 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_abort_scan() local
9244 rdev_abort_scan(rdev, wdev); in nl80211_abort_scan()
9369 nl80211_parse_sched_scan(struct wiphy *wiphy, struct wireless_dev *wdev, in nl80211_parse_sched_scan() argument
9672 err = nl80211_check_scan_flags(wiphy, wdev, request, attrs, true); in nl80211_parse_sched_scan()
9718 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_start_sched_scan() local
9731 sched_scan_req = nl80211_parse_sched_scan(&rdev->wiphy, wdev, in nl80211_start_sched_scan()
9797 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_start_radar_detection() local
9798 struct wiphy *wiphy = wdev->wiphy; in nl80211_start_radar_detection()
9816 err = cfg80211_chandef_dfs_required(wiphy, &chandef, wdev->iftype); in nl80211_start_radar_detection()
9831 err = cfg80211_start_background_radar_detection(rdev, wdev, in nl80211_start_radar_detection()
9841 if (wdev->cac_started) { in nl80211_start_radar_detection()
9863 wdev->links[0].ap.chandef = chandef; in nl80211_start_radar_detection()
9864 wdev->cac_started = true; in nl80211_start_radar_detection()
9865 wdev->cac_start_time = jiffies; in nl80211_start_radar_detection()
9866 wdev->cac_time_ms = cac_time_ms; in nl80211_start_radar_detection()
9879 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_notify_radar_detection() local
9880 struct wiphy *wiphy = wdev->wiphy; in nl80211_notify_radar_detection()
9898 err = cfg80211_chandef_dfs_required(wiphy, &chandef, wdev->iftype); in nl80211_notify_radar_detection()
9933 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_channel_switch() local
9958 if (!wdev->links[link_id].ap.beacon_interval) in nl80211_channel_switch()
9962 if (!wdev->u.ibss.ssid_len) in nl80211_channel_switch()
9966 if (!wdev->u.mesh.id_len) in nl80211_channel_switch()
10095 wdev->iftype)) { in nl80211_channel_switch()
10100 err = cfg80211_chandef_dfs_required(wdev->wiphy, in nl80211_channel_switch()
10102 wdev->iftype); in nl80211_channel_switch()
10126 wdev_lock(wdev); in nl80211_channel_switch()
10128 wdev_unlock(wdev); in nl80211_channel_switch()
10140 struct wireless_dev *wdev, in nl80211_send_bss() argument
10149 ASSERT_WDEV_LOCK(wdev); in nl80211_send_bss()
10160 if (wdev->netdev && in nl80211_send_bss()
10161 nla_put_u32(msg, NL80211_ATTR_IFINDEX, wdev->netdev->ifindex)) in nl80211_send_bss()
10163 if (nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev), in nl80211_send_bss()
10247 switch (wdev->iftype) { in nl80211_send_bss()
10250 for_each_valid_link(wdev, link_id) { in nl80211_send_bss()
10251 if (intbss == wdev->links[link_id].client.current_bss && in nl80211_send_bss()
10254 (wdev->valid_links && in nl80211_send_bss()
10258 wdev->u.client.connected_addr))))) in nl80211_send_bss()
10263 if (intbss == wdev->u.ibss.current_bss && in nl80211_send_bss()
10288 struct wireless_dev *wdev; in nl80211_dump_scan() local
10292 err = nl80211_prepare_wdev_dump(cb, &rdev, &wdev, NULL); in nl80211_dump_scan()
10298 wdev_lock(wdev); in nl80211_dump_scan()
10317 rdev, wdev, scan) < 0) { in nl80211_dump_scan()
10324 wdev_unlock(wdev); in nl80211_dump_scan()
10416 struct wireless_dev *wdev; in nl80211_dump_survey() local
10425 res = nl80211_prepare_wdev_dump(cb, &rdev, &wdev, attrbuf); in nl80211_dump_survey()
10436 if (!wdev->netdev) { in nl80211_dump_survey()
10447 wdev_lock(wdev); in nl80211_dump_survey()
10448 res = rdev_dump_survey(rdev, wdev->netdev, survey_idx, &survey); in nl80211_dump_survey()
10449 wdev_unlock(wdev); in nl80211_dump_survey()
10465 wdev->netdev, radio_stats, &survey) < 0) in nl80211_dump_survey()
11377 struct wireless_dev *wdev, int approxlen, in __cfg80211_alloc_vendor_skb() argument
11409 if (wdev) { in __cfg80211_alloc_vendor_skb()
11411 wdev_id(wdev), NL80211_ATTR_PAD)) in __cfg80211_alloc_vendor_skb()
11413 if (wdev->netdev && in __cfg80211_alloc_vendor_skb()
11415 wdev->netdev->ifindex)) in __cfg80211_alloc_vendor_skb()
11435 struct wireless_dev *wdev, in __cfg80211_alloc_event_skb() argument
11462 return __cfg80211_alloc_vendor_skb(rdev, wdev, approxlen, portid, 0, in __cfg80211_alloc_event_skb()
11498 struct wireless_dev *wdev; in nl80211_testmode_do() local
11503 wdev = __cfg80211_wdev_from_attrs(rdev, genl_info_net(info), in nl80211_testmode_do()
11509 if (IS_ERR(wdev)) { in nl80211_testmode_do()
11510 err = PTR_ERR(wdev); in nl80211_testmode_do()
11513 wdev = NULL; in nl80211_testmode_do()
11514 } else if (wdev->wiphy != &rdev->wiphy) { in nl80211_testmode_do()
11522 err = rdev_testmode_cmd(rdev, wdev, in nl80211_testmode_do()
11889 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_update_connect_params() local
11955 if (!wdev->connected) in nl80211_update_connect_params()
12169 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_remain_on_channel() local
12199 wdev_lock(wdev); in nl80211_remain_on_channel()
12200 if (!cfg80211_off_channel_oper_allowed(wdev, chandef.chan)) { in nl80211_remain_on_channel()
12203 oper_chandef = wdev_chandef(wdev, link_id); in nl80211_remain_on_channel()
12208 wdev_unlock(wdev); in nl80211_remain_on_channel()
12217 wdev_unlock(wdev); in nl80211_remain_on_channel()
12221 wdev_unlock(wdev); in nl80211_remain_on_channel()
12234 err = rdev_remain_on_channel(rdev, wdev, chandef.chan, in nl80211_remain_on_channel()
12259 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_cancel_remain_on_channel() local
12270 return rdev_cancel_remain_on_channel(rdev, wdev, cookie); in nl80211_cancel_remain_on_channel()
12280 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_set_tx_bitrate_mask() local
12286 wdev_lock(wdev); in nl80211_set_tx_bitrate_mask()
12295 wdev_unlock(wdev); in nl80211_set_tx_bitrate_mask()
12302 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_register_mgmt() local
12311 switch (wdev->iftype) { in nl80211_register_mgmt()
12322 if (!wiphy_ext_feature_isset(wdev->wiphy, in nl80211_register_mgmt()
12342 return cfg80211_mlme_register_mgmt(wdev, info->snd_portid, frame_type, in nl80211_register_mgmt()
12352 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_tx_mgmt() local
12369 switch (wdev->iftype) { in nl80211_tx_mgmt()
12383 if (!wiphy_ext_feature_isset(wdev->wiphy, in nl80211_tx_mgmt()
12425 wdev_lock(wdev); in nl80211_tx_mgmt()
12427 !cfg80211_off_channel_oper_allowed(wdev, chandef.chan)) { in nl80211_tx_mgmt()
12428 wdev_unlock(wdev); in nl80211_tx_mgmt()
12439 !(wdev->valid_links & BIT(params.link_id))) { in nl80211_tx_mgmt()
12440 wdev_unlock(wdev); in nl80211_tx_mgmt()
12443 wdev_unlock(wdev); in nl80211_tx_mgmt()
12480 err = cfg80211_mlme_mgmt_tx(rdev, wdev, ¶ms, &cookie); in nl80211_tx_mgmt()
12505 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_tx_mgmt_cancel_wait() local
12514 switch (wdev->iftype) { in nl80211_tx_mgmt_cancel_wait()
12524 if (!wiphy_ext_feature_isset(wdev->wiphy, in nl80211_tx_mgmt_cancel_wait()
12534 return rdev_mgmt_tx_cancel_wait(rdev, wdev, cookie); in nl80211_tx_mgmt_cancel_wait()
12540 struct wireless_dev *wdev; in nl80211_set_power_save() local
12551 wdev = dev->ieee80211_ptr; in nl80211_set_power_save()
12558 if (state == wdev->ps) in nl80211_set_power_save()
12561 err = rdev_set_power_mgmt(rdev, dev, state, wdev->ps_timeout); in nl80211_set_power_save()
12563 wdev->ps = state; in nl80211_set_power_save()
12571 struct wireless_dev *wdev; in nl80211_get_power_save() local
12577 wdev = dev->ieee80211_ptr; in nl80211_get_power_save()
12593 if (wdev->ps) in nl80211_get_power_save()
12627 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_set_cqm_txe() local
12635 if (wdev->iftype != NL80211_IFTYPE_STATION && in nl80211_set_cqm_txe()
12636 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT) in nl80211_set_cqm_txe()
12645 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_cqm_rssi_update() local
12652 if (!wdev->cqm_config) in cfg80211_cqm_rssi_update()
12661 if (!wdev->cqm_config->last_rssi_event_value && in cfg80211_cqm_rssi_update()
12662 wdev->links[0].client.current_bss && in cfg80211_cqm_rssi_update()
12667 mac_addr = wdev->links[0].client.current_bss->pub.bssid; in cfg80211_cqm_rssi_update()
12675 wdev->cqm_config->last_rssi_event_value = in cfg80211_cqm_rssi_update()
12679 last = wdev->cqm_config->last_rssi_event_value; in cfg80211_cqm_rssi_update()
12680 hyst = wdev->cqm_config->rssi_hyst; in cfg80211_cqm_rssi_update()
12681 n = wdev->cqm_config->n_rssi_thresholds; in cfg80211_cqm_rssi_update()
12685 if (last < wdev->cqm_config->rssi_thresholds[i]) in cfg80211_cqm_rssi_update()
12692 low = wdev->cqm_config->rssi_thresholds[low_index] - hyst; in cfg80211_cqm_rssi_update()
12698 high = wdev->cqm_config->rssi_thresholds[i] + hyst - 1; in cfg80211_cqm_rssi_update()
12712 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_set_cqm_rssi() local
12724 if (wdev->iftype != NL80211_IFTYPE_STATION && in nl80211_set_cqm_rssi()
12725 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT) in nl80211_set_cqm_rssi()
12728 wdev_lock(wdev); in nl80211_set_cqm_rssi()
12729 cfg80211_cqm_config_free(wdev); in nl80211_set_cqm_rssi()
12730 wdev_unlock(wdev); in nl80211_set_cqm_rssi()
12747 wdev_lock(wdev); in nl80211_set_cqm_rssi()
12763 wdev->cqm_config = cqm_config; in nl80211_set_cqm_rssi()
12769 wdev_unlock(wdev); in nl80211_set_cqm_rssi()
13863 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_set_rekey_data() local
13899 wdev_lock(wdev); in nl80211_set_rekey_data()
13900 if (!wdev->connected) { in nl80211_set_rekey_data()
13912 wdev_unlock(wdev); in nl80211_set_rekey_data()
13920 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_register_unexpected_frame() local
13922 if (wdev->iftype != NL80211_IFTYPE_AP && in nl80211_register_unexpected_frame()
13923 wdev->iftype != NL80211_IFTYPE_P2P_GO) in nl80211_register_unexpected_frame()
13926 if (wdev->ap_unexpected_nlportid) in nl80211_register_unexpected_frame()
13929 wdev->ap_unexpected_nlportid = info->snd_portid; in nl80211_register_unexpected_frame()
13938 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_probe_client() local
13945 if (wdev->iftype != NL80211_IFTYPE_AP && in nl80211_probe_client()
13946 wdev->iftype != NL80211_IFTYPE_P2P_GO) in nl80211_probe_client()
14024 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_start_p2p_device() local
14030 if (wdev->iftype != NL80211_IFTYPE_P2P_DEVICE) in nl80211_start_p2p_device()
14033 if (wdev_running(wdev)) in nl80211_start_p2p_device()
14039 err = rdev_start_p2p_device(rdev, wdev); in nl80211_start_p2p_device()
14043 wdev->is_running = true; in nl80211_start_p2p_device()
14052 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_stop_p2p_device() local
14054 if (wdev->iftype != NL80211_IFTYPE_P2P_DEVICE) in nl80211_stop_p2p_device()
14060 cfg80211_stop_p2p_device(rdev, wdev); in nl80211_stop_p2p_device()
14068 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_start_nan() local
14072 if (wdev->iftype != NL80211_IFTYPE_NAN) in nl80211_start_nan()
14075 if (wdev_running(wdev)) in nl80211_start_nan()
14090 if (bands & ~(u32)wdev->wiphy->nan_supported_bands) in nl80211_start_nan()
14099 err = rdev_start_nan(rdev, wdev, &conf); in nl80211_start_nan()
14103 wdev->is_running = true; in nl80211_start_nan()
14112 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_stop_nan() local
14114 if (wdev->iftype != NL80211_IFTYPE_NAN) in nl80211_stop_nan()
14117 cfg80211_stop_nan(rdev, wdev); in nl80211_stop_nan()
14189 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_nan_add_func() local
14196 if (wdev->iftype != NL80211_IFTYPE_NAN) in nl80211_nan_add_func()
14199 if (!wdev_running(wdev)) in nl80211_nan_add_func()
14392 err = rdev_add_nan_func(rdev, wdev, func); in nl80211_nan_add_func()
14427 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_nan_del_func() local
14430 if (wdev->iftype != NL80211_IFTYPE_NAN) in nl80211_nan_del_func()
14433 if (!wdev_running(wdev)) in nl80211_nan_del_func()
14441 rdev_del_nan_func(rdev, wdev, cookie); in nl80211_nan_del_func()
14450 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_nan_change_config() local
14454 if (wdev->iftype != NL80211_IFTYPE_NAN) in nl80211_nan_change_config()
14457 if (!wdev_running(wdev)) in nl80211_nan_change_config()
14472 if (bands & ~(u32)wdev->wiphy->nan_supported_bands) in nl80211_nan_change_config()
14485 return rdev_nan_change_conf(rdev, wdev, &conf, changed); in nl80211_nan_change_config()
14488 void cfg80211_nan_match(struct wireless_dev *wdev, in cfg80211_nan_match() argument
14491 struct wiphy *wiphy = wdev->wiphy; in cfg80211_nan_match()
14511 (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX, in cfg80211_nan_match()
14512 wdev->netdev->ifindex)) || in cfg80211_nan_match()
14513 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev), in cfg80211_nan_match()
14554 if (!wdev->owner_nlportid) in cfg80211_nan_match()
14559 wdev->owner_nlportid); in cfg80211_nan_match()
14568 void cfg80211_nan_func_terminated(struct wireless_dev *wdev, in cfg80211_nan_func_terminated() argument
14573 struct wiphy *wiphy = wdev->wiphy; in cfg80211_nan_func_terminated()
14593 (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX, in cfg80211_nan_func_terminated()
14594 wdev->netdev->ifindex)) || in cfg80211_nan_func_terminated()
14595 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev), in cfg80211_nan_func_terminated()
14614 if (!wdev->owner_nlportid) in cfg80211_nan_func_terminated()
14619 wdev->owner_nlportid); in cfg80211_nan_func_terminated()
14680 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_crit_protocol_start() local
14708 ret = rdev_crit_proto_start(rdev, wdev, proto, duration); in nl80211_crit_protocol_start()
14719 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_crit_protocol_stop() local
14726 rdev_crit_proto_stop(rdev, wdev); in nl80211_crit_protocol_stop()
14756 struct wireless_dev *wdev = in nl80211_vendor_cmd() local
14765 if (IS_ERR(wdev)) { in nl80211_vendor_cmd()
14766 err = PTR_ERR(wdev); in nl80211_vendor_cmd()
14769 wdev = NULL; in nl80211_vendor_cmd()
14770 } else if (wdev->wiphy != &rdev->wiphy) { in nl80211_vendor_cmd()
14792 if (!wdev) in nl80211_vendor_cmd()
14795 !wdev->netdev) in nl80211_vendor_cmd()
14799 if (!wdev_running(wdev)) in nl80211_vendor_cmd()
14803 wdev = NULL; in nl80211_vendor_cmd()
14821 err = vcmd->doit(&rdev->wiphy, wdev, data, len); in nl80211_vendor_cmd()
14832 struct wireless_dev **wdev) in nl80211_prepare_vendor_dump() argument
14850 *wdev = NULL; in nl80211_prepare_vendor_dump()
14855 *wdev = tmp; in nl80211_prepare_vendor_dump()
14882 *wdev = __cfg80211_wdev_from_attrs(NULL, sock_net(skb->sk), attrbuf); in nl80211_prepare_vendor_dump()
14883 if (IS_ERR(*wdev)) in nl80211_prepare_vendor_dump()
14884 *wdev = NULL; in nl80211_prepare_vendor_dump()
14932 cb->args[1] = *wdev ? (*wdev)->identifier + 1 : 0; in nl80211_prepare_vendor_dump()
14948 struct wireless_dev *wdev; in nl80211_vendor_cmd_dump() local
14957 err = nl80211_prepare_vendor_dump(skb, cb, &rdev, &wdev); in nl80211_vendor_cmd_dump()
14968 if (!wdev) { in nl80211_vendor_cmd_dump()
14973 !wdev->netdev) { in nl80211_vendor_cmd_dump()
14979 if (!wdev_running(wdev)) { in nl80211_vendor_cmd_dump()
14994 (wdev && nla_put_u64_64bit(skb, NL80211_ATTR_WDEV, in nl80211_vendor_cmd_dump()
14995 wdev_id(wdev), in nl80211_vendor_cmd_dump()
15008 err = vcmd->dumpit(&rdev->wiphy, wdev, skb, data, data_len, in nl80211_vendor_cmd_dump()
15131 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_add_tx_ts() local
15165 wdev_lock(wdev); in nl80211_add_tx_ts()
15166 switch (wdev->iftype) { in nl80211_add_tx_ts()
15169 if (wdev->connected) in nl80211_add_tx_ts()
15181 wdev_unlock(wdev); in nl80211_add_tx_ts()
15189 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_del_tx_ts() local
15200 wdev_lock(wdev); in nl80211_del_tx_ts()
15202 wdev_unlock(wdev); in nl80211_del_tx_ts()
15212 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_tdls_channel_switch() local
15250 wdev->iftype)) in nl80211_tdls_channel_switch()
15254 if (cfg80211_chandef_dfs_required(wdev->wiphy, &chandef, wdev->iftype)) in nl80211_tdls_channel_switch()
15260 wdev_lock(wdev); in nl80211_tdls_channel_switch()
15262 wdev_unlock(wdev); in nl80211_tdls_channel_switch()
15272 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_tdls_cancel_channel_switch() local
15293 wdev_lock(wdev); in nl80211_tdls_cancel_channel_switch()
15295 wdev_unlock(wdev); in nl80211_tdls_cancel_channel_switch()
15305 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_set_multicast_to_unicast() local
15312 if (wdev->iftype != NL80211_IFTYPE_AP && in nl80211_set_multicast_to_unicast()
15313 wdev->iftype != NL80211_IFTYPE_P2P_GO) in nl80211_set_multicast_to_unicast()
15326 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_set_pmk() local
15330 if (wdev->iftype != NL80211_IFTYPE_STATION && in nl80211_set_pmk()
15331 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT) in nl80211_set_pmk()
15341 wdev_lock(wdev); in nl80211_set_pmk()
15342 if (!wdev->connected) { in nl80211_set_pmk()
15348 if (memcmp(pmk_conf.aa, wdev->u.client.connected_addr, ETH_ALEN)) { in nl80211_set_pmk()
15367 wdev_unlock(wdev); in nl80211_set_pmk()
15375 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_del_pmk() local
15379 if (wdev->iftype != NL80211_IFTYPE_STATION && in nl80211_del_pmk()
15380 wdev->iftype != NL80211_IFTYPE_P2P_CLIENT) in nl80211_del_pmk()
15390 wdev_lock(wdev); in nl80211_del_pmk()
15393 wdev_unlock(wdev); in nl80211_del_pmk()
15445 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_tx_control_port() local
15469 wdev_lock(wdev); in nl80211_tx_control_port()
15471 switch (wdev->iftype) { in nl80211_tx_control_port()
15477 if (wdev->u.ibss.current_bss) in nl80211_tx_control_port()
15483 if (wdev->connected) in nl80211_tx_control_port()
15492 wdev_unlock(wdev); in nl80211_tx_control_port()
15510 wdev_unlock(wdev); in nl80211_tx_control_port()
15519 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_get_ftm_responder_stats() local
15527 if (wdev->iftype != NL80211_IFTYPE_AP || in nl80211_get_ftm_responder_stats()
15528 !wdev->links[link_id].ap.beacon_interval) in nl80211_get_ftm_responder_stats()
15616 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_probe_mesh_link() local
15632 if (wdev->iftype != NL80211_IFTYPE_MESH_POINT) in nl80211_probe_mesh_link()
15821 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_color_change() local
15833 if (wdev->iftype != NL80211_IFTYPE_AP) in nl80211_color_change()
15907 wdev_lock(wdev); in nl80211_color_change()
15909 wdev_unlock(wdev); in nl80211_color_change()
15946 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_add_link() local
15949 if (!(wdev->wiphy->flags & WIPHY_FLAG_SUPPORTS_MLO)) in nl80211_add_link()
15952 switch (wdev->iftype) { in nl80211_add_link()
15963 wdev_lock(wdev); in nl80211_add_link()
15964 wdev->valid_links |= BIT(link_id); in nl80211_add_link()
15965 ether_addr_copy(wdev->links[link_id].addr, in nl80211_add_link()
15968 ret = rdev_add_intf_link(rdev, wdev, link_id); in nl80211_add_link()
15970 wdev->valid_links &= ~BIT(link_id); in nl80211_add_link()
15971 eth_zero_addr(wdev->links[link_id].addr); in nl80211_add_link()
15973 wdev_unlock(wdev); in nl80211_add_link()
15982 struct wireless_dev *wdev = dev->ieee80211_ptr; in nl80211_remove_link() local
15988 switch (wdev->iftype) { in nl80211_remove_link()
15995 wdev_lock(wdev); in nl80211_remove_link()
15996 cfg80211_remove_link(wdev, link_id); in nl80211_remove_link()
15997 wdev_unlock(wdev); in nl80211_remove_link()
16226 struct wireless_dev *wdev = NULL; in nl80211_pre_doit() local
16246 wdev = __cfg80211_wdev_from_attrs(NULL, genl_info_net(info), in nl80211_pre_doit()
16248 if (IS_ERR(wdev)) { in nl80211_pre_doit()
16249 err = PTR_ERR(wdev); in nl80211_pre_doit()
16253 dev = wdev->netdev; in nl80211_pre_doit()
16255 rdev = wiphy_to_rdev(wdev->wiphy); in nl80211_pre_doit()
16265 info->user_ptr[1] = wdev; in nl80211_pre_doit()
16269 !wdev_running(wdev)) { in nl80211_pre_doit()
16280 if (!wdev) { in nl80211_pre_doit()
16286 if (wdev->valid_links && in nl80211_pre_doit()
16288 !(wdev->valid_links & BIT(nla_get_u8(link_id))))) { in nl80211_pre_doit()
16294 if (!wdev->valid_links && link_id) { in nl80211_pre_doit()
16302 (wdev && wdev->valid_links)) { in nl80211_pre_doit()
16330 struct wireless_dev *wdev = info->user_ptr[1]; in nl80211_post_doit() local
16332 dev_put(wdev->netdev); in nl80211_post_doit()
17354 struct wireless_dev *wdev, in nl80211_notify_iface() argument
17363 if (nl80211_send_iface(msg, 0, 0, 0, rdev, wdev, cmd) < 0) { in nl80211_notify_iface()
17438 struct wireless_dev *wdev, in nl80211_prep_scan_msg() argument
17449 (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX, in nl80211_prep_scan_msg()
17450 wdev->netdev->ifindex)) || in nl80211_prep_scan_msg()
17451 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev), in nl80211_prep_scan_msg()
17492 struct wireless_dev *wdev) in nl80211_send_scan_start() argument
17500 if (nl80211_prep_scan_msg(msg, rdev, wdev, 0, 0, 0, in nl80211_send_scan_start()
17511 struct wireless_dev *wdev, bool aborted) in nl80211_build_scan_msg() argument
17519 if (nl80211_prep_scan_msg(msg, rdev, wdev, 0, 0, 0, in nl80211_build_scan_msg()
17731 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_rx_unprot_mlme_mgmt() local
17732 struct wiphy *wiphy = wdev->wiphy; in cfg80211_rx_unprot_mlme_mgmt()
17745 if (wdev->unprot_beacon_reported && in cfg80211_rx_unprot_mlme_mgmt()
17746 elapsed_jiffies_msecs(wdev->unprot_beacon_reported) < 10000) in cfg80211_rx_unprot_mlme_mgmt()
17749 wdev->unprot_beacon_reported = jiffies; in cfg80211_rx_unprot_mlme_mgmt()
18135 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_notify_new_peer_candidate() local
18136 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_notify_new_peer_candidate()
18140 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_MESH_POINT)) in cfg80211_notify_new_peer_candidate()
18270 struct wireless_dev *wdev, u64 cookie, in nl80211_send_remain_on_chan_event() argument
18288 (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX, in nl80211_send_remain_on_chan_event()
18289 wdev->netdev->ifindex)) || in nl80211_send_remain_on_chan_event()
18290 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev), in nl80211_send_remain_on_chan_event()
18316 struct wireless_dev *wdev = netdev->ieee80211_ptr; in cfg80211_assoc_comeback() local
18317 struct wiphy *wiphy = wdev->wiphy; in cfg80211_assoc_comeback()
18322 trace_cfg80211_assoc_comeback(wdev, ap_addr, timeout); in cfg80211_assoc_comeback()
18351 void cfg80211_ready_on_channel(struct wireless_dev *wdev, u64 cookie, in cfg80211_ready_on_channel() argument
18355 struct wiphy *wiphy = wdev->wiphy; in cfg80211_ready_on_channel()
18358 trace_cfg80211_ready_on_channel(wdev, cookie, chan, duration); in cfg80211_ready_on_channel()
18360 rdev, wdev, cookie, chan, in cfg80211_ready_on_channel()
18365 void cfg80211_remain_on_channel_expired(struct wireless_dev *wdev, u64 cookie, in cfg80211_remain_on_channel_expired() argument
18369 struct wiphy *wiphy = wdev->wiphy; in cfg80211_remain_on_channel_expired()
18372 trace_cfg80211_ready_on_channel_expired(wdev, cookie, chan); in cfg80211_remain_on_channel_expired()
18374 rdev, wdev, cookie, chan, 0, gfp); in cfg80211_remain_on_channel_expired()
18378 void cfg80211_tx_mgmt_expired(struct wireless_dev *wdev, u64 cookie, in cfg80211_tx_mgmt_expired() argument
18382 struct wiphy *wiphy = wdev->wiphy; in cfg80211_tx_mgmt_expired()
18385 trace_cfg80211_tx_mgmt_expired(wdev, cookie, chan); in cfg80211_tx_mgmt_expired()
18387 rdev, wdev, cookie, chan, 0, gfp); in cfg80211_tx_mgmt_expired()
18483 struct wireless_dev *wdev = dev->ieee80211_ptr; in __nl80211_unexpected_frame() local
18484 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in __nl80211_unexpected_frame()
18487 u32 nlportid = READ_ONCE(wdev->ap_unexpected_nlportid); in __nl80211_unexpected_frame()
18519 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_rx_spurious_frame() local
18524 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_AP && in cfg80211_rx_spurious_frame()
18525 wdev->iftype != NL80211_IFTYPE_P2P_GO)) { in cfg80211_rx_spurious_frame()
18539 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_rx_unexpected_4addr_frame() local
18544 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_AP && in cfg80211_rx_unexpected_4addr_frame()
18545 wdev->iftype != NL80211_IFTYPE_P2P_GO && in cfg80211_rx_unexpected_4addr_frame()
18546 wdev->iftype != NL80211_IFTYPE_AP_VLAN)) { in cfg80211_rx_unexpected_4addr_frame()
18559 struct wireless_dev *wdev, u32 nlportid, in nl80211_send_mgmt() argument
18562 struct net_device *netdev = wdev->netdev; in nl80211_send_mgmt()
18579 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev), in nl80211_send_mgmt()
18609 static void nl80211_frame_tx_status(struct wireless_dev *wdev, in nl80211_frame_tx_status() argument
18613 struct wiphy *wiphy = wdev->wiphy; in nl80211_frame_tx_status()
18615 struct net_device *netdev = wdev->netdev; in nl80211_frame_tx_status()
18620 trace_cfg80211_mgmt_tx_status(wdev, status->cookie, in nl80211_frame_tx_status()
18623 trace_cfg80211_control_port_tx_status(wdev, status->cookie, in nl80211_frame_tx_status()
18639 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev), in nl80211_frame_tx_status()
18663 void cfg80211_control_port_tx_status(struct wireless_dev *wdev, u64 cookie, in cfg80211_control_port_tx_status() argument
18674 nl80211_frame_tx_status(wdev, &status, gfp, in cfg80211_control_port_tx_status()
18679 void cfg80211_mgmt_tx_status_ext(struct wireless_dev *wdev, in cfg80211_mgmt_tx_status_ext() argument
18682 nl80211_frame_tx_status(wdev, status, gfp, NL80211_CMD_FRAME_TX_STATUS); in cfg80211_mgmt_tx_status_ext()
18692 struct wireless_dev *wdev = dev->ieee80211_ptr; in __nl80211_rx_control_port() local
18693 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in __nl80211_rx_control_port()
18701 u32 nlportid = READ_ONCE(wdev->conn_owner_nlportid); in __nl80211_rx_control_port()
18718 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev), in __nl80211_rx_control_port()
18758 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_prepare_cqm() local
18759 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_prepare_cqm()
18812 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_cqm_rssi_notify() local
18813 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_cqm_rssi_notify()
18821 if (wdev->cqm_config) { in cfg80211_cqm_rssi_notify()
18822 wdev->cqm_config->last_rssi_event_value = rssi_level; in cfg80211_cqm_rssi_notify()
18827 rssi_level = wdev->cqm_config->last_rssi_event_value; in cfg80211_cqm_rssi_notify()
18965 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_gtk_rekey_notify() local
18966 struct wiphy *wiphy = wdev->wiphy; in cfg80211_gtk_rekey_notify()
19022 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_pmksa_candidate_notify() local
19023 struct wiphy *wiphy = wdev->wiphy; in cfg80211_pmksa_candidate_notify()
19039 struct wireless_dev *wdev = netdev->ieee80211_ptr; in nl80211_ch_switch_notify() local
19056 if (wdev->valid_links && in nl80211_ch_switch_notify()
19088 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_ch_switch_notify() local
19089 struct wiphy *wiphy = wdev->wiphy; in cfg80211_ch_switch_notify()
19092 ASSERT_WDEV_LOCK(wdev); in cfg80211_ch_switch_notify()
19093 WARN_INVALID_LINK_ID(wdev, link_id); in cfg80211_ch_switch_notify()
19097 switch (wdev->iftype) { in cfg80211_ch_switch_notify()
19100 if (!WARN_ON(!wdev->links[link_id].client.current_bss)) in cfg80211_ch_switch_notify()
19101 cfg80211_update_assoc_bss_entry(wdev, link_id, in cfg80211_ch_switch_notify()
19105 wdev->u.mesh.chandef = *chandef; in cfg80211_ch_switch_notify()
19106 wdev->u.mesh.preset_chandef = *chandef; in cfg80211_ch_switch_notify()
19110 wdev->links[link_id].ap.chandef = *chandef; in cfg80211_ch_switch_notify()
19113 wdev->u.ibss.chandef = *chandef; in cfg80211_ch_switch_notify()
19133 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_ch_switch_started_notify() local
19134 struct wiphy *wiphy = wdev->wiphy; in cfg80211_ch_switch_started_notify()
19137 ASSERT_WDEV_LOCK(wdev); in cfg80211_ch_switch_started_notify()
19138 WARN_INVALID_LINK_ID(wdev, link_id); in cfg80211_ch_switch_started_notify()
19154 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_bss_color_notify() local
19155 struct wiphy *wiphy = wdev->wiphy; in cfg80211_bss_color_notify()
19160 ASSERT_WDEV_LOCK(wdev); in cfg80211_bss_color_notify()
19219 struct wireless_dev *wdev = netdev->ieee80211_ptr; in nl80211_radar_notify() local
19222 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev), in nl80211_radar_notify()
19248 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_sta_opmode_change_notify() local
19249 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_sta_opmode_change_notify()
19302 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_probe_status() local
19303 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_probe_status()
19447 void cfg80211_report_wowlan_wakeup(struct wireless_dev *wdev, in cfg80211_report_wowlan_wakeup() argument
19451 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_report_wowlan_wakeup()
19456 trace_cfg80211_report_wowlan_wakeup(wdev->wiphy, wdev, wakeup); in cfg80211_report_wowlan_wakeup()
19470 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev), in cfg80211_report_wowlan_wakeup()
19474 if (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX, in cfg80211_report_wowlan_wakeup()
19475 wdev->netdev->ifindex)) in cfg80211_report_wowlan_wakeup()
19566 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_tdls_oper_request() local
19567 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_tdls_oper_request()
19571 trace_cfg80211_tdls_oper_request(wdev->wiphy, dev, peer, oper, in cfg80211_tdls_oper_request()
19609 struct wireless_dev *wdev; in nl80211_netlink_notify() local
19629 list_for_each_entry_rcu(wdev, &rdev->wiphy.wdev_list, list) { in nl80211_netlink_notify()
19630 cfg80211_mlme_unregister_socket(wdev, notify->portid); in nl80211_netlink_notify()
19632 if (wdev->owner_nlportid == notify->portid) { in nl80211_netlink_notify()
19633 wdev->nl_owner_dead = true; in nl80211_netlink_notify()
19635 } else if (wdev->conn_owner_nlportid == notify->portid) { in nl80211_netlink_notify()
19636 schedule_work(&wdev->disconnect_wk); in nl80211_netlink_notify()
19639 cfg80211_release_pmsr(wdev, notify->portid); in nl80211_netlink_notify()
19713 void cfg80211_crit_proto_stopped(struct wireless_dev *wdev, gfp_t gfp) in cfg80211_crit_proto_stopped() argument
19720 rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_crit_proto_stopped()
19736 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev), in cfg80211_crit_proto_stopped()
19750 void nl80211_send_ap_stopped(struct wireless_dev *wdev, unsigned int link_id) in nl80211_send_ap_stopped() argument
19752 struct wiphy *wiphy = wdev->wiphy; in nl80211_send_ap_stopped()
19766 nla_put_u32(msg, NL80211_ATTR_IFINDEX, wdev->netdev->ifindex) || in nl80211_send_ap_stopped()
19767 nla_put_u64_64bit(msg, NL80211_ATTR_WDEV, wdev_id(wdev), in nl80211_send_ap_stopped()
19769 (wdev->valid_links && in nl80211_send_ap_stopped()
19786 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_external_auth_request() local
19787 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_external_auth_request()
19791 if (!wdev->conn_owner_nlportid) in cfg80211_external_auth_request()
19816 wdev->conn_owner_nlportid); in cfg80211_external_auth_request()