|
@@ -15,7 +15,8 @@
|
|
|
|
|
|
#include <net/6lowpan.h>
|
|
|
|
|
|
-void lowpan_netdev_setup(struct net_device *dev, enum lowpan_lltypes lltype)
|
|
|
+int lowpan_register_netdevice(struct net_device *dev,
|
|
|
+ enum lowpan_lltypes lltype)
|
|
|
{
|
|
|
dev->addr_len = EUI64_ADDR_LEN;
|
|
|
dev->type = ARPHRD_6LOWPAN;
|
|
@@ -23,8 +24,36 @@ void lowpan_netdev_setup(struct net_device *dev, enum lowpan_lltypes lltype)
|
|
|
dev->priv_flags |= IFF_NO_QUEUE;
|
|
|
|
|
|
lowpan_priv(dev)->lltype = lltype;
|
|
|
+
|
|
|
+ return register_netdevice(dev);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(lowpan_register_netdevice);
|
|
|
+
|
|
|
+int lowpan_register_netdev(struct net_device *dev,
|
|
|
+ enum lowpan_lltypes lltype)
|
|
|
+{
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ rtnl_lock();
|
|
|
+ ret = lowpan_register_netdevice(dev, lltype);
|
|
|
+ rtnl_unlock();
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(lowpan_register_netdev);
|
|
|
+
|
|
|
+void lowpan_unregister_netdevice(struct net_device *dev)
|
|
|
+{
|
|
|
+ unregister_netdevice(dev);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(lowpan_unregister_netdevice);
|
|
|
+
|
|
|
+void lowpan_unregister_netdev(struct net_device *dev)
|
|
|
+{
|
|
|
+ rtnl_lock();
|
|
|
+ lowpan_unregister_netdevice(dev);
|
|
|
+ rtnl_unlock();
|
|
|
}
|
|
|
-EXPORT_SYMBOL(lowpan_netdev_setup);
|
|
|
+EXPORT_SYMBOL(lowpan_unregister_netdev);
|
|
|
|
|
|
static int __init lowpan_module_init(void)
|
|
|
{
|