kernel: add driver for Marvell 88E6171 switch
[openwrt.git] / target / linux / generic / files / drivers / net / phy / swconfig.c
index 03db7a6..4f2df4c 100644 (file)
@@ -24,6 +24,7 @@
 #include <linux/skbuff.h>
 #include <linux/switch.h>
 #include <linux/of.h>
+#include <linux/version.h>
 
 #define SWCONFIG_DEVNAME       "switch%d"
 
@@ -1078,7 +1079,7 @@ register_switch(struct switch_dev *dev, struct net_device *netdev)
        /* fill device name */
        snprintf(dev->devname, IFNAMSIZ, SWCONFIG_DEVNAME, i);
 
-       list_add(&dev->dev_list, &swdevs);
+       list_add_tail(&dev->dev_list, &swdevs);
        swconfig_unlock();
 
        err = swconfig_create_led_trigger(dev);
@@ -1106,9 +1107,14 @@ EXPORT_SYMBOL_GPL(unregister_switch);
 static int __init
 swconfig_init(void)
 {
-       int i, err;
+       int err;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,13,0))
+       int i;
+#endif
 
        INIT_LIST_HEAD(&swdevs);
+       
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,13,0))
        err = genl_register_family(&switch_fam);
        if (err)
                return err;
@@ -1118,12 +1124,17 @@ swconfig_init(void)
                if (err)
                        goto unregister;
        }
-
        return 0;
 
 unregister:
        genl_unregister_family(&switch_fam);
        return err;
+#else
+       err = genl_register_family_with_ops(&switch_fam, swconfig_ops);
+       if (err)
+               return err;
+       return 0;
+#endif
 }
 
 static void __exit