realtek: Fix failsafe mode
authorHauke Mehrtens <hauke@hauke-m.de>
Mon, 21 Jun 2021 22:45:21 +0000 (00:45 +0200)
committerHauke Mehrtens <hauke@hauke-m.de>
Tue, 22 Jun 2021 21:23:00 +0000 (23:23 +0200)
The RTL8380-RTL9300 switches only forward packets when VLAN ID 1 is
configured. Do not use the standard failsafe configuration for DSA
accessing the default port directly, but configure a switch on the lan1
interface instead.

This will add the VLAN ID 1 configuration to the switch:
$ bridge vlan show
port              vlan-id
lan1              1 PVID Egress Untagged
switch            1 PVID Egress Untagged

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
target/linux/realtek/base-files/lib/preinit/05_set_preinit_iface_realtek [new file with mode: 0644]
target/linux/realtek/base-files/lib/preinit/98_remove_preinit_realtek [new file with mode: 0644]

diff --git a/target/linux/realtek/base-files/lib/preinit/05_set_preinit_iface_realtek b/target/linux/realtek/base-files/lib/preinit/05_set_preinit_iface_realtek
new file mode 100644 (file)
index 0000000..e2a7cf5
--- /dev/null
@@ -0,0 +1,13 @@
+set_preinit_iface() {
+
+       # Create a switch on lan1 to configure the VLAN 1.
+       # Without configuring VLAN ID 1 RTL8380 - RTL9300 will not
+       # forward packets.
+       ip link add name switch type bridge vlan_filtering 1
+       ip link set dev lan1 master switch
+       ip link set lan1 up
+
+       pi_ifname=switch
+}
+
+boot_hook_add preinit_main set_preinit_iface
diff --git a/target/linux/realtek/base-files/lib/preinit/98_remove_preinit_realtek b/target/linux/realtek/base-files/lib/preinit/98_remove_preinit_realtek
new file mode 100644 (file)
index 0000000..dc5fdb0
--- /dev/null
@@ -0,0 +1,6 @@
+remove_switch() {
+       # delete switch created in 05_set_preinit_iface_realtek again
+       ip link del name switch
+}
+
+boot_hook_add preinit_main remove_switch