mirror of
https://github.com/FUjr/gl-infra-builder.git
synced 2025-12-16 09:10:02 +00:00
92 lines
3.0 KiB
Diff
92 lines
3.0 KiB
Diff
From ac2d27c66e3a8529a4e1f0ea02f94bca5f39e39e Mon Sep 17 00:00:00 2001
|
|
From: "GL.iNet-Xinfa.Deng" <xinfa.deng@gl-inet.com>
|
|
Date: Fri, 13 May 2022 10:41:24 +0800
|
|
Subject: [PATCH] ramips: fix mt76x8 WAN-LAN leakage during router booting
|
|
|
|
---
|
|
.../lib/preinit/07_set_preinit_iface_ramips | 2 +-
|
|
.../drivers/net/ethernet/mediatek/esw_rt3050.c | 33 ++++++++++++++++++++--
|
|
2 files changed, 32 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/target/linux/ramips/base-files/lib/preinit/07_set_preinit_iface_ramips b/target/linux/ramips/base-files/lib/preinit/07_set_preinit_iface_ramips
|
|
index 5048dac..ed5684f 100644
|
|
--- a/target/linux/ramips/base-files/lib/preinit/07_set_preinit_iface_ramips
|
|
+++ b/target/linux/ramips/base-files/lib/preinit/07_set_preinit_iface_ramips
|
|
@@ -24,7 +24,7 @@ ramips_set_preinit_iface() {
|
|
;;
|
|
esac
|
|
swconfig dev $ralink_switchdev set reset 1
|
|
- swconfig dev $ralink_switchdev set enable_vlan 0
|
|
+ swconfig dev $ralink_switchdev set enable_vlan 1
|
|
swconfig dev $ralink_switchdev set apply 1
|
|
fi
|
|
|
|
diff --git a/target/linux/ramips/files-4.14/drivers/net/ethernet/mediatek/esw_rt3050.c b/target/linux/ramips/files-4.14/drivers/net/ethernet/mediatek/esw_rt3050.c
|
|
index 816c588..ef81200 100644
|
|
--- a/target/linux/ramips/files-4.14/drivers/net/ethernet/mediatek/esw_rt3050.c
|
|
+++ b/target/linux/ramips/files-4.14/drivers/net/ethernet/mediatek/esw_rt3050.c
|
|
@@ -434,7 +434,7 @@ static void esw_hw_init(struct rt305x_esw *esw)
|
|
{
|
|
int i;
|
|
u8 port_disable = 0;
|
|
- u8 port_map = RT305X_ESW_PMAP_LLLLLL;
|
|
+ u8 port_map = RT305X_ESW_PMAP_WLLLLL;
|
|
|
|
/* vodoo from original driver */
|
|
esw_w32(esw, 0xC8A07850, RT305X_ESW_REG_FCT0);
|
|
@@ -685,7 +685,7 @@ static void esw_hw_init(struct rt305x_esw *esw)
|
|
if (esw->port_map)
|
|
port_map = esw->port_map;
|
|
else
|
|
- port_map = RT305X_ESW_PMAP_LLLLLL;
|
|
+ port_map = RT305X_ESW_PMAP_WLLLLL;
|
|
|
|
/* Unused HW feature, but still nice to be consistent here...
|
|
* This is also exported to userspace ('lan' attribute) so it's
|
|
@@ -1197,6 +1197,34 @@ static int esw_set_vlan_ports(struct switch_dev *dev, struct switch_val *val)
|
|
return 0;
|
|
}
|
|
|
|
+static void esw_vlan_init(struct rt305x_esw *esw)
|
|
+{
|
|
+ esw_reset_switch(&esw->swdev);
|
|
+ struct switch_val val;
|
|
+ struct switch_port ports[7];
|
|
+ val.port_vlan = 1;
|
|
+ val.len = 2;
|
|
+ val.value.i = 1;
|
|
+ esw_set_vlan_enable(&esw->swdev, NULL, &val);
|
|
+ val.value.ports = ports;
|
|
+ ports[0].id = 1;
|
|
+ ports[0].flags = 0;
|
|
+ ports[1].id = 6;
|
|
+ ports[1].flags = 4;
|
|
+ esw_set_port_pvid(&esw->swdev, RT305X_ESW_PORT1, 1);
|
|
+ esw_set_vlan_ports(&esw->swdev, &val);
|
|
+ val.port_vlan = 2;
|
|
+ val.len = 2;
|
|
+ val.value.ports = ports;
|
|
+ ports[0].id = 0;
|
|
+ ports[0].flags = 0;
|
|
+ ports[1].id = 6;
|
|
+ ports[1].flags = 4;
|
|
+ esw_set_port_pvid(&esw->swdev, RT305X_ESW_PORT0, 2);
|
|
+ esw_set_vlan_ports(&esw->swdev, &val);
|
|
+ esw_apply_config(&esw->swdev);
|
|
+}
|
|
+
|
|
static const struct switch_attr esw_global[] = {
|
|
{
|
|
.type = SWITCH_TYPE_INT,
|
|
@@ -1422,6 +1450,7 @@ static int esw_probe(struct platform_device *pdev)
|
|
esw_w32(esw, ~RT305X_ESW_PORT_ST_CHG, RT305X_ESW_REG_IMR);
|
|
}
|
|
|
|
+ esw_vlan_init(esw);
|
|
return ret;
|
|
}
|
|
|
|
--
|
|
2.7.4
|
|
|