[][Fix switch command can be used both in 7531 and jaguar]

[Description]
Fix switch command can be used both in 7531 and jaguar.
The change sumbit before affects the use of switch command in 7531.
(https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/6189993.)

This change modifies the initialization sequence, first netlink initialization, then ioctl initialization.

[Release-log]
N/A

Change-Id: I889cea3f6fce7a1dfa9c68d822afb3f307378378
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/6248306
diff --git a/feed/switch/src/switch_753x.c b/feed/switch/src/switch_753x.c
index 95a6a0d..1730235 100644
--- a/feed/switch/src/switch_753x.c
+++ b/feed/switch/src/switch_753x.c
@@ -351,8 +351,8 @@
 	if (err < 0) {
 		err = switch_ioctl_init();
 		if (!err) {
-			chip_name = get_chip_name();
 			nl_init_flag = false;
+			chip_name = get_chip_name();
 			if (chip_name < 0) {
 				printf("no chip unsupport or chip id is invalid!\n");
 				exit_free();
diff --git a/target/linux/mediatek/files-5.4/drivers/net/phy/mtk/mt753x/mt753x_mdio.c b/target/linux/mediatek/files-5.4/drivers/net/phy/mtk/mt753x/mt753x_mdio.c
index 06a1114..3639df1 100755
--- a/target/linux/mediatek/files-5.4/drivers/net/phy/mtk/mt753x/mt753x_mdio.c
+++ b/target/linux/mediatek/files-5.4/drivers/net/phy/mtk/mt753x/mt753x_mdio.c
@@ -776,6 +776,8 @@
 	mt753x_mdio_register(gsw);
 #endif
 
+	mt753x_nl_init();
+
 	mt753x_swconfig_init(gsw);
 
 	if (sw->post_init)
@@ -812,6 +814,8 @@
 	mdiobus_unregister(gsw->gphy_bus);
 #endif
 
+	mt753x_nl_exit();
+
 	mt753x_remove_gsw(gsw);
 
 	platform_set_drvdata(pdev, NULL);
@@ -842,16 +846,12 @@
 	INIT_LIST_HEAD(&mt753x_devs);
 	ret = platform_driver_register(&mt753x_driver);
 
-	mt753x_nl_init();
-
 	return ret;
 }
 module_init(mt753x_init);
 
 static void __exit mt753x_exit(void)
 {
-	mt753x_nl_exit();
-
 	platform_driver_unregister(&mt753x_driver);
 }
 module_exit(mt753x_exit);
diff --git a/target/linux/mediatek/files-5.4/drivers/net/phy/mtk/mt753x/mt753x_nl.c b/target/linux/mediatek/files-5.4/drivers/net/phy/mtk/mt753x/mt753x_nl.c
index a04c701..cee89db 100755
--- a/target/linux/mediatek/files-5.4/drivers/net/phy/mtk/mt753x/mt753x_nl.c
+++ b/target/linux/mediatek/files-5.4/drivers/net/phy/mtk/mt753x/mt753x_nl.c
@@ -362,7 +362,7 @@
 	return ret;
 }
 
-int __init mt753x_nl_init(void)
+int mt753x_nl_init(void)
 {
 	int ret;
 
@@ -375,7 +375,7 @@
 	return 0;
 }
 
-void __exit mt753x_nl_exit(void)
+void mt753x_nl_exit(void)
 {
 	genl_unregister_family(&mt753x_nl_family);
 }
diff --git a/target/linux/mediatek/files-5.4/drivers/net/phy/mtk/mt753x/mt753x_nl.h b/target/linux/mediatek/files-5.4/drivers/net/phy/mtk/mt753x/mt753x_nl.h
new file mode 100755
index 0000000..7a2a992
--- /dev/null
+++ b/target/linux/mediatek/files-5.4/drivers/net/phy/mtk/mt753x/mt753x_nl.h
@@ -0,0 +1,44 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2018 MediaTek Inc.
+ * Author: Sirui Zhao <Sirui.Zhao@mediatek.com>
+ */
+
+#ifndef _MT753X_NL_H_
+#define _MT753X_NL_H_
+
+#define MT753X_GENL_NAME		"mt753x"
+#define MT753X_GENL_VERSION		0x1
+
+enum mt753x_cmd {
+	MT753X_CMD_UNSPEC = 0,
+	MT753X_CMD_REQUEST,
+	MT753X_CMD_REPLY,
+	MT753X_CMD_READ,
+	MT753X_CMD_WRITE,
+
+	__MT753X_CMD_MAX,
+};
+
+enum mt753x_attr {
+	MT753X_ATTR_TYPE_UNSPEC = 0,
+	MT753X_ATTR_TYPE_MESG,
+	MT753X_ATTR_TYPE_PHY,
+	MT753X_ATTR_TYPE_DEVAD,
+	MT753X_ATTR_TYPE_REG,
+	MT753X_ATTR_TYPE_VAL,
+	MT753X_ATTR_TYPE_DEV_NAME,
+	MT753X_ATTR_TYPE_DEV_ID,
+
+	__MT753X_ATTR_TYPE_MAX,
+};
+
+#define MT753X_NR_ATTR_TYPE		(__MT753X_ATTR_TYPE_MAX - 1)
+
+#ifdef __KERNEL__
+int mt753x_nl_init(void);
+void mt753x_nl_exit(void);
+
+#endif /* __KERNEL__ */
+
+#endif /* _MT753X_NL_H_ */