|
@@ -3,6 +3,7 @@
|
|
*
|
|
*
|
|
* Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net>
|
|
* Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net>
|
|
* Copyright 2013-2014 Intel Mobile Communications GmbH
|
|
* Copyright 2013-2014 Intel Mobile Communications GmbH
|
|
|
|
+ * Copyright 2015 Intel Deutschland GmbH
|
|
*/
|
|
*/
|
|
|
|
|
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
|
@@ -157,7 +158,7 @@ int cfg80211_switch_netns(struct cfg80211_registered_device *rdev,
|
|
if (!(rdev->wiphy.flags & WIPHY_FLAG_NETNS_OK))
|
|
if (!(rdev->wiphy.flags & WIPHY_FLAG_NETNS_OK))
|
|
return -EOPNOTSUPP;
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- list_for_each_entry(wdev, &rdev->wdev_list, list) {
|
|
|
|
|
|
+ list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) {
|
|
if (!wdev->netdev)
|
|
if (!wdev->netdev)
|
|
continue;
|
|
continue;
|
|
wdev->netdev->features &= ~NETIF_F_NETNS_LOCAL;
|
|
wdev->netdev->features &= ~NETIF_F_NETNS_LOCAL;
|
|
@@ -171,7 +172,8 @@ int cfg80211_switch_netns(struct cfg80211_registered_device *rdev,
|
|
/* failed -- clean up to old netns */
|
|
/* failed -- clean up to old netns */
|
|
net = wiphy_net(&rdev->wiphy);
|
|
net = wiphy_net(&rdev->wiphy);
|
|
|
|
|
|
- list_for_each_entry_continue_reverse(wdev, &rdev->wdev_list,
|
|
|
|
|
|
+ list_for_each_entry_continue_reverse(wdev,
|
|
|
|
+ &rdev->wiphy.wdev_list,
|
|
list) {
|
|
list) {
|
|
if (!wdev->netdev)
|
|
if (!wdev->netdev)
|
|
continue;
|
|
continue;
|
|
@@ -230,7 +232,7 @@ void cfg80211_shutdown_all_interfaces(struct wiphy *wiphy)
|
|
|
|
|
|
ASSERT_RTNL();
|
|
ASSERT_RTNL();
|
|
|
|
|
|
- list_for_each_entry(wdev, &rdev->wdev_list, list) {
|
|
|
|
|
|
+ list_for_each_entry(wdev, &rdev->wiphy.wdev_list, list) {
|
|
if (wdev->netdev) {
|
|
if (wdev->netdev) {
|
|
dev_close(wdev->netdev);
|
|
dev_close(wdev->netdev);
|
|
continue;
|
|
continue;
|
|
@@ -298,7 +300,8 @@ void cfg80211_destroy_ifaces(struct cfg80211_registered_device *rdev)
|
|
kfree(item);
|
|
kfree(item);
|
|
spin_unlock_irq(&rdev->destroy_list_lock);
|
|
spin_unlock_irq(&rdev->destroy_list_lock);
|
|
|
|
|
|
- list_for_each_entry_safe(wdev, tmp, &rdev->wdev_list, list) {
|
|
|
|
|
|
+ list_for_each_entry_safe(wdev, tmp,
|
|
|
|
+ &rdev->wiphy.wdev_list, list) {
|
|
if (nlportid == wdev->owner_nlportid)
|
|
if (nlportid == wdev->owner_nlportid)
|
|
rdev_del_virtual_intf(rdev, wdev);
|
|
rdev_del_virtual_intf(rdev, wdev);
|
|
}
|
|
}
|
|
@@ -410,7 +413,7 @@ use_default_name:
|
|
dev_set_name(&rdev->wiphy.dev, PHY_NAME "%d", rdev->wiphy_idx);
|
|
dev_set_name(&rdev->wiphy.dev, PHY_NAME "%d", rdev->wiphy_idx);
|
|
}
|
|
}
|
|
|
|
|
|
- INIT_LIST_HEAD(&rdev->wdev_list);
|
|
|
|
|
|
+ INIT_LIST_HEAD(&rdev->wiphy.wdev_list);
|
|
INIT_LIST_HEAD(&rdev->beacon_registrations);
|
|
INIT_LIST_HEAD(&rdev->beacon_registrations);
|
|
spin_lock_init(&rdev->beacon_registrations_lock);
|
|
spin_lock_init(&rdev->beacon_registrations_lock);
|
|
spin_lock_init(&rdev->bss_lock);
|
|
spin_lock_init(&rdev->bss_lock);
|
|
@@ -799,7 +802,7 @@ void wiphy_unregister(struct wiphy *wiphy)
|
|
nl80211_notify_wiphy(rdev, NL80211_CMD_DEL_WIPHY);
|
|
nl80211_notify_wiphy(rdev, NL80211_CMD_DEL_WIPHY);
|
|
rdev->wiphy.registered = false;
|
|
rdev->wiphy.registered = false;
|
|
|
|
|
|
- WARN_ON(!list_empty(&rdev->wdev_list));
|
|
|
|
|
|
+ WARN_ON(!list_empty(&rdev->wiphy.wdev_list));
|
|
|
|
|
|
/*
|
|
/*
|
|
* First remove the hardware from everywhere, this makes
|
|
* First remove the hardware from everywhere, this makes
|
|
@@ -1021,7 +1024,7 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
|
|
spin_lock_init(&wdev->mgmt_registrations_lock);
|
|
spin_lock_init(&wdev->mgmt_registrations_lock);
|
|
|
|
|
|
wdev->identifier = ++rdev->wdev_id;
|
|
wdev->identifier = ++rdev->wdev_id;
|
|
- list_add_rcu(&wdev->list, &rdev->wdev_list);
|
|
|
|
|
|
+ list_add_rcu(&wdev->list, &rdev->wiphy.wdev_list);
|
|
rdev->devlist_generation++;
|
|
rdev->devlist_generation++;
|
|
/* can only change netns with wiphy */
|
|
/* can only change netns with wiphy */
|
|
dev->features |= NETIF_F_NETNS_LOCAL;
|
|
dev->features |= NETIF_F_NETNS_LOCAL;
|