[][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_ */