Lines Matching refs:wdev

156 	struct wireless_dev *wdev;  in cfg80211_switch_netns()  local
162 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) { in cfg80211_switch_netns()
163 if (!wdev->netdev) in cfg80211_switch_netns()
165 wdev->netdev->netns_immutable = false; in cfg80211_switch_netns()
166 err = dev_change_net_namespace(wdev->netdev, net, "wlan%d"); in cfg80211_switch_netns()
169 wdev->netdev->netns_immutable = true; in cfg80211_switch_netns()
176 list_for_each_entry_continue_reverse(wdev, in cfg80211_switch_netns()
179 if (!wdev->netdev) in cfg80211_switch_netns()
181 wdev->netdev->netns_immutable = false; in cfg80211_switch_netns()
182 err = dev_change_net_namespace(wdev->netdev, net, in cfg80211_switch_netns()
185 wdev->netdev->netns_immutable = true; in cfg80211_switch_netns()
193 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) { in cfg80211_switch_netns()
194 if (!wdev->netdev) in cfg80211_switch_netns()
196 nl80211_notify_iface(rdev, wdev, NL80211_CMD_DEL_INTERFACE); in cfg80211_switch_netns()
208 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) { in cfg80211_switch_netns()
209 if (!wdev->netdev) in cfg80211_switch_netns()
211 nl80211_notify_iface(rdev, wdev, NL80211_CMD_NEW_INTERFACE); in cfg80211_switch_netns()
227 struct wireless_dev *wdev) in cfg80211_stop_p2p_device() argument
231 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_P2P_DEVICE)) in cfg80211_stop_p2p_device()
234 if (!wdev_running(wdev)) in cfg80211_stop_p2p_device()
237 rdev_stop_p2p_device(rdev, wdev); in cfg80211_stop_p2p_device()
238 wdev->is_running = false; in cfg80211_stop_p2p_device()
242 if (rdev->scan_req && rdev->scan_req->req.wdev == wdev) { in cfg80211_stop_p2p_device()
252 struct wireless_dev *wdev) in cfg80211_stop_nan() argument
256 if (WARN_ON(wdev->iftype != NL80211_IFTYPE_NAN)) in cfg80211_stop_nan()
259 if (!wdev_running(wdev)) in cfg80211_stop_nan()
262 rdev_stop_nan(rdev, wdev); in cfg80211_stop_nan()
263 wdev->is_running = false; in cfg80211_stop_nan()
271 struct wireless_dev *wdev; in cfg80211_shutdown_all_interfaces() local
275 list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) { in cfg80211_shutdown_all_interfaces()
276 if (wdev->netdev) { in cfg80211_shutdown_all_interfaces()
277 dev_close(wdev->netdev); in cfg80211_shutdown_all_interfaces()
285 switch (wdev->iftype) { in cfg80211_shutdown_all_interfaces()
287 cfg80211_stop_p2p_device(rdev, wdev); in cfg80211_shutdown_all_interfaces()
290 cfg80211_stop_nan(rdev, wdev); in cfg80211_shutdown_all_interfaces()
336 struct wireless_dev *wdev, *tmp; in cfg80211_destroy_ifaces() local
340 list_for_each_entry_safe(wdev, tmp, &rdev->wiphy.wdev_list, list) { in cfg80211_destroy_ifaces()
341 if (wdev->nl_owner_dead) { in cfg80211_destroy_ifaces()
342 if (wdev->netdev) in cfg80211_destroy_ifaces()
343 dev_close(wdev->netdev); in cfg80211_destroy_ifaces()
347 cfg80211_leave(rdev, wdev); in cfg80211_destroy_ifaces()
348 cfg80211_remove_virtual_intf(rdev, wdev); in cfg80211_destroy_ifaces()
1258 static void _cfg80211_unregister_wdev(struct wireless_dev *wdev, in _cfg80211_unregister_wdev() argument
1261 struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); in _cfg80211_unregister_wdev()
1268 nl80211_notify_iface(rdev, wdev, NL80211_CMD_DEL_INTERFACE); in _cfg80211_unregister_wdev()
1270 wdev->registered = false; in _cfg80211_unregister_wdev()
1272 if (wdev->netdev) { in _cfg80211_unregister_wdev()
1273 sysfs_remove_link(&wdev->netdev->dev.kobj, "phy80211"); in _cfg80211_unregister_wdev()
1275 unregister_netdevice(wdev->netdev); in _cfg80211_unregister_wdev()
1278 list_del_rcu(&wdev->list); in _cfg80211_unregister_wdev()
1282 cfg80211_mlme_purge_registrations(wdev); in _cfg80211_unregister_wdev()
1284 switch (wdev->iftype) { in _cfg80211_unregister_wdev()
1286 cfg80211_stop_p2p_device(rdev, wdev); in _cfg80211_unregister_wdev()
1289 cfg80211_stop_nan(rdev, wdev); in _cfg80211_unregister_wdev()
1296 kfree_sensitive(wdev->wext.keys); in _cfg80211_unregister_wdev()
1297 wdev->wext.keys = NULL; in _cfg80211_unregister_wdev()
1299 wiphy_work_cancel(wdev->wiphy, &wdev->cqm_rssi_work); in _cfg80211_unregister_wdev()
1301 cqm_config = rcu_access_pointer(wdev->cqm_config); in _cfg80211_unregister_wdev()
1303 RCU_INIT_POINTER(wdev->cqm_config, NULL); in _cfg80211_unregister_wdev()
1309 cfg80211_process_wdev_events(wdev); in _cfg80211_unregister_wdev()
1311 if (wdev->iftype == NL80211_IFTYPE_STATION || in _cfg80211_unregister_wdev()
1312 wdev->iftype == NL80211_IFTYPE_P2P_CLIENT) { in _cfg80211_unregister_wdev()
1313 for (link_id = 0; link_id < ARRAY_SIZE(wdev->links); link_id++) { in _cfg80211_unregister_wdev()
1316 curbss = wdev->links[link_id].client.current_bss; in _cfg80211_unregister_wdev()
1320 cfg80211_put_bss(wdev->wiphy, &curbss->pub); in _cfg80211_unregister_wdev()
1321 wdev->links[link_id].client.current_bss = NULL; in _cfg80211_unregister_wdev()
1326 wdev->connected = false; in _cfg80211_unregister_wdev()
1329 void cfg80211_unregister_wdev(struct wireless_dev *wdev) in cfg80211_unregister_wdev() argument
1331 _cfg80211_unregister_wdev(wdev, true); in cfg80211_unregister_wdev()
1350 struct wireless_dev *wdev) in cfg80211_leave() argument
1352 struct net_device *dev = wdev->netdev; in cfg80211_leave()
1357 cfg80211_pmsr_wdev_down(wdev); in cfg80211_leave()
1359 cfg80211_stop_background_radar_detection(wdev); in cfg80211_leave()
1361 switch (wdev->iftype) { in cfg80211_leave()
1374 kfree(wdev->wext.ie); in cfg80211_leave()
1375 wdev->wext.ie = NULL; in cfg80211_leave()
1376 wdev->wext.ie_len = 0; in cfg80211_leave()
1377 wdev->wext.connect.auth_type = NL80211_AUTHTYPE_AUTOMATIC; in cfg80211_leave()
1408 void cfg80211_stop_iface(struct wiphy *wiphy, struct wireless_dev *wdev, in cfg80211_stop_iface() argument
1415 trace_cfg80211_stop_iface(wiphy, wdev); in cfg80211_stop_iface()
1423 spin_lock_irqsave(&wdev->event_lock, flags); in cfg80211_stop_iface()
1424 list_add_tail(&ev->list, &wdev->event_list); in cfg80211_stop_iface()
1425 spin_unlock_irqrestore(&wdev->event_lock, flags); in cfg80211_stop_iface()
1430 void cfg80211_init_wdev(struct wireless_dev *wdev) in cfg80211_init_wdev() argument
1432 INIT_LIST_HEAD(&wdev->event_list); in cfg80211_init_wdev()
1433 spin_lock_init(&wdev->event_lock); in cfg80211_init_wdev()
1434 INIT_LIST_HEAD(&wdev->mgmt_registrations); in cfg80211_init_wdev()
1435 INIT_LIST_HEAD(&wdev->pmsr_list); in cfg80211_init_wdev()
1436 spin_lock_init(&wdev->pmsr_lock); in cfg80211_init_wdev()
1437 INIT_WORK(&wdev->pmsr_free_wk, cfg80211_pmsr_free_wk); in cfg80211_init_wdev()
1440 wdev->wext.default_key = -1; in cfg80211_init_wdev()
1441 wdev->wext.default_mgmt_key = -1; in cfg80211_init_wdev()
1442 wdev->wext.connect.auth_type = NL80211_AUTHTYPE_AUTOMATIC; in cfg80211_init_wdev()
1445 wiphy_work_init(&wdev->cqm_rssi_work, cfg80211_cqm_rssi_notify_work); in cfg80211_init_wdev()
1447 if (wdev->wiphy->flags & WIPHY_FLAG_PS_ON_BY_DEFAULT) in cfg80211_init_wdev()
1448 wdev->ps = true; in cfg80211_init_wdev()
1450 wdev->ps = false; in cfg80211_init_wdev()
1452 wdev->ps_timeout = -1; in cfg80211_init_wdev()
1454 wdev->radio_mask = BIT(wdev->wiphy->n_radio) - 1; in cfg80211_init_wdev()
1456 if ((wdev->iftype == NL80211_IFTYPE_STATION || in cfg80211_init_wdev()
1457 wdev->iftype == NL80211_IFTYPE_P2P_CLIENT || in cfg80211_init_wdev()
1458 wdev->iftype == NL80211_IFTYPE_ADHOC) && !wdev->use_4addr) in cfg80211_init_wdev()
1459 wdev->netdev->priv_flags |= IFF_DONT_BRIDGE; in cfg80211_init_wdev()
1461 INIT_WORK(&wdev->disconnect_wk, cfg80211_autodisconnect_wk); in cfg80211_init_wdev()
1465 struct wireless_dev *wdev) in cfg80211_register_wdev() argument
1477 if (!wdev->identifier) in cfg80211_register_wdev()
1478 wdev->identifier = ++rdev->wdev_id; in cfg80211_register_wdev()
1479 list_add_rcu(&wdev->list, &rdev->wiphy.wdev_list); in cfg80211_register_wdev()
1481 wdev->registered = true; in cfg80211_register_wdev()
1483 if (wdev->netdev && in cfg80211_register_wdev()
1484 sysfs_create_link(&wdev->netdev->dev.kobj, &rdev->wiphy.dev.kobj, in cfg80211_register_wdev()
1488 nl80211_notify_iface(rdev, wdev, NL80211_CMD_NEW_INTERFACE); in cfg80211_register_wdev()
1493 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_register_netdevice() local
1499 if (WARN_ON(!wdev)) in cfg80211_register_netdevice()
1502 rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_register_netdevice()
1507 wdev->registered = true; in cfg80211_register_netdevice()
1508 wdev->registering = true; in cfg80211_register_netdevice()
1513 cfg80211_register_wdev(rdev, wdev); in cfg80211_register_netdevice()
1516 wdev->registering = false; in cfg80211_register_netdevice()
1518 wdev->registered = false; in cfg80211_register_netdevice()
1527 struct wireless_dev *wdev = dev->ieee80211_ptr; in cfg80211_netdev_notifier_call() local
1531 if (!wdev) in cfg80211_netdev_notifier_call()
1534 rdev = wiphy_to_rdev(wdev->wiphy); in cfg80211_netdev_notifier_call()
1536 WARN_ON(wdev->iftype == NL80211_IFTYPE_UNSPECIFIED); in cfg80211_netdev_notifier_call()
1541 wdev->netdev = dev; in cfg80211_netdev_notifier_call()
1545 cfg80211_init_wdev(wdev); in cfg80211_netdev_notifier_call()
1548 if (!wdev->registered) { in cfg80211_netdev_notifier_call()
1551 cfg80211_register_wdev(rdev, wdev); in cfg80211_netdev_notifier_call()
1559 if (wdev->registered && !wdev->registering) { in cfg80211_netdev_notifier_call()
1562 _cfg80211_unregister_wdev(wdev, false); in cfg80211_netdev_notifier_call()
1567 cfg80211_leave(rdev, wdev); in cfg80211_netdev_notifier_call()
1568 cfg80211_remove_links(wdev); in cfg80211_netdev_notifier_call()
1571 cancel_work_sync(&wdev->disconnect_wk); in cfg80211_netdev_notifier_call()
1572 cancel_work_sync(&wdev->pmsr_free_wk); in cfg80211_netdev_notifier_call()
1576 cfg80211_update_iface_num(rdev, wdev->iftype, -1); in cfg80211_netdev_notifier_call()
1577 if (rdev->scan_req && rdev->scan_req->req.wdev == wdev) { in cfg80211_netdev_notifier_call()
1587 if (WARN_ON(pos->dev == wdev->netdev)) in cfg80211_netdev_notifier_call()
1597 cfg80211_update_iface_num(rdev, wdev->iftype, 1); in cfg80211_netdev_notifier_call()
1598 switch (wdev->iftype) { in cfg80211_netdev_notifier_call()
1601 cfg80211_ibss_wext_join(rdev, wdev); in cfg80211_netdev_notifier_call()
1604 cfg80211_mgd_wext_connect(rdev, wdev); in cfg80211_netdev_notifier_call()
1615 setup.mesh_id = wdev->u.mesh.id; in cfg80211_netdev_notifier_call()
1616 setup.mesh_id_len = wdev->u.mesh.id_up_len; in cfg80211_netdev_notifier_call()
1617 if (wdev->u.mesh.id_up_len) in cfg80211_netdev_notifier_call()
1633 if ((wdev->iftype == NL80211_IFTYPE_STATION || in cfg80211_netdev_notifier_call()
1634 wdev->iftype == NL80211_IFTYPE_P2P_CLIENT) && in cfg80211_netdev_notifier_call()
1636 rdev_set_power_mgmt(rdev, dev, wdev->ps, in cfg80211_netdev_notifier_call()
1637 wdev->ps_timeout)) { in cfg80211_netdev_notifier_call()
1639 wdev->ps = false; in cfg80211_netdev_notifier_call()
1644 if (!cfg80211_iftype_allowed(wdev->wiphy, wdev->iftype, in cfg80211_netdev_notifier_call()
1645 wdev->use_4addr, 0)) in cfg80211_netdev_notifier_call()