diff --git a/target/linux/generic/files/drivers/net/phy/swconfig.c b/target/linux/generic/files/drivers/net/phy/swconfig.c
index c043ee46494eb566e945f7b37fb6900626cdb90f..ba9136c34f4feb2eafbaa4e978a6699446ba8303 100644
--- a/target/linux/generic/files/drivers/net/phy/swconfig.c
+++ b/target/linux/generic/files/drivers/net/phy/swconfig.c
@@ -1107,7 +1107,10 @@ 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);
 	
@@ -1121,16 +1124,17 @@ swconfig_init(void)
 		if (err)
 			goto unregister;
 	}
-#else
-	err = genl_register_family_with_ops(&switch_fam, swconfig_ops);
-	if (err)
-		return err;
-#endif
 	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