]> nv-tegra.nvidia Code Review - linux-2.6.git/commitdiff
net: introduce NETDEV_POST_INIT notifier
authorJohannes Berg <johannes@sipsolutions.net>
Fri, 2 Oct 2009 05:15:27 +0000 (05:15 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 5 Oct 2009 07:43:34 +0000 (00:43 -0700)
For various purposes including a wireless extensions
bugfix, we need to hook into the netdev creation before
before netdev_register_kobject(). This will also ease
doing the dev type assignment that Marcel was working
on for cfg80211 drivers w/o touching them all.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/notifier.h
net/core/dev.c

index 44428d247dbe6e3b52e9b71798eff99735ae4319..29714b8441b1a10cad0ad151064d45bcef1364f4 100644 (file)
@@ -201,6 +201,7 @@ static inline int notifier_to_errno(int ret)
 #define NETDEV_PRE_UP          0x000D
 #define NETDEV_BONDING_OLDTYPE  0x000E
 #define NETDEV_BONDING_NEWTYPE  0x000F
 #define NETDEV_PRE_UP          0x000D
 #define NETDEV_BONDING_OLDTYPE  0x000E
 #define NETDEV_BONDING_NEWTYPE  0x000F
+#define NETDEV_POST_INIT       0x0010
 
 #define SYS_DOWN       0x0001  /* Notify of system down */
 #define SYS_RESTART    SYS_DOWN
 
 #define SYS_DOWN       0x0001  /* Notify of system down */
 #define SYS_RESTART    SYS_DOWN
index b8f74cfb1bfdf1365494e87a1b712834f936f287..a74c8fd6955629ac6c023da86cb7847eef4a0a43 100644 (file)
@@ -4836,6 +4836,12 @@ int register_netdevice(struct net_device *dev)
                dev->features |= NETIF_F_GSO;
 
        netdev_initialize_kobject(dev);
                dev->features |= NETIF_F_GSO;
 
        netdev_initialize_kobject(dev);
+
+       ret = call_netdevice_notifiers(NETDEV_POST_INIT, dev);
+       ret = notifier_to_errno(ret);
+       if (ret)
+               goto err_uninit;
+
        ret = netdev_register_kobject(dev);
        if (ret)
                goto err_uninit;
        ret = netdev_register_kobject(dev);
        if (ret)
                goto err_uninit;