cfg80211: unify sending NL80211_CMD_NEW_INTERFACE
There isn't really any need for us to be sending this from two different places - move cfg80211_init_wdev() later and send the notification from there, removing it from the non- netdev case. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
85dd3da43d
commit
ec8f170bc3
|
@ -1186,6 +1186,8 @@ void cfg80211_init_wdev(struct cfg80211_registered_device *rdev,
|
||||||
wdev->identifier = ++rdev->wdev_id;
|
wdev->identifier = ++rdev->wdev_id;
|
||||||
list_add_rcu(&wdev->list, &rdev->wiphy.wdev_list);
|
list_add_rcu(&wdev->list, &rdev->wiphy.wdev_list);
|
||||||
rdev->devlist_generation++;
|
rdev->devlist_generation++;
|
||||||
|
|
||||||
|
nl80211_notify_iface(rdev, wdev, NL80211_CMD_NEW_INTERFACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
|
static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
|
||||||
|
@ -1213,7 +1215,6 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
|
||||||
* called within code protected by it when interfaces
|
* called within code protected by it when interfaces
|
||||||
* are added with nl80211.
|
* are added with nl80211.
|
||||||
*/
|
*/
|
||||||
cfg80211_init_wdev(rdev, wdev);
|
|
||||||
/* can only change netns with wiphy */
|
/* can only change netns with wiphy */
|
||||||
dev->features |= NETIF_F_NETNS_LOCAL;
|
dev->features |= NETIF_F_NETNS_LOCAL;
|
||||||
|
|
||||||
|
@ -1242,7 +1243,7 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
|
||||||
|
|
||||||
INIT_WORK(&wdev->disconnect_wk, cfg80211_autodisconnect_wk);
|
INIT_WORK(&wdev->disconnect_wk, cfg80211_autodisconnect_wk);
|
||||||
|
|
||||||
nl80211_notify_iface(rdev, wdev, NL80211_CMD_NEW_INTERFACE);
|
cfg80211_init_wdev(rdev, wdev);
|
||||||
break;
|
break;
|
||||||
case NETDEV_GOING_DOWN:
|
case NETDEV_GOING_DOWN:
|
||||||
cfg80211_leave(rdev, wdev);
|
cfg80211_leave(rdev, wdev);
|
||||||
|
|
|
@ -3295,15 +3295,6 @@ static int nl80211_new_interface(struct sk_buff *skb, struct genl_info *info)
|
||||||
return -ENOBUFS;
|
return -ENOBUFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* For wdevs which have no associated netdev object (e.g. of type
|
|
||||||
* NL80211_IFTYPE_P2P_DEVICE), emit the NEW_INTERFACE event here.
|
|
||||||
* For all other types, the event will be generated from the
|
|
||||||
* netdev notifier
|
|
||||||
*/
|
|
||||||
if (!wdev->netdev)
|
|
||||||
nl80211_notify_iface(rdev, wdev, NL80211_CMD_NEW_INTERFACE);
|
|
||||||
|
|
||||||
return genlmsg_reply(msg, info);
|
return genlmsg_reply(msg, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue