diff mbox series

[v2,4/5] realtek: Fix failsafe mode

Message ID 20210621224522.633341-5-hauke@hauke-m.de
State Accepted
Delegated to: Hauke Mehrtens
Headers show
Series Fix failsafe mode | expand

Commit Message

Hauke Mehrtens June 21, 2021, 10:45 p.m. UTC
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>
---
 .../lib/preinit/05_set_preinit_iface_realtek        | 13 +++++++++++++
 .../lib/preinit/98_remove_preinit_realtek           |  6 ++++++
 2 files changed, 19 insertions(+)
 create mode 100644 target/linux/realtek/base-files/lib/preinit/05_set_preinit_iface_realtek
 create mode 100644 target/linux/realtek/base-files/lib/preinit/98_remove_preinit_realtek

Comments

Birger Koblitz June 26, 2021, 9:17 p.m. UTC | #1
Hi Hauke,

it looks as if there could be a more elegant solution to this, tomn just posted
this on the forum:
https://forum.openwrt.org/t/support-for-rtl838x-based-managed-switches/57875
I did not have time to test it so far, though.

Birger

On 22/06/2021 00:45, Hauke Mehrtens wrote:
> 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>
> ---
>   .../lib/preinit/05_set_preinit_iface_realtek        | 13 +++++++++++++
>   .../lib/preinit/98_remove_preinit_realtek           |  6 ++++++
>   2 files changed, 19 insertions(+)
>   create mode 100644 target/linux/realtek/base-files/lib/preinit/05_set_preinit_iface_realtek
>   create mode 100644 target/linux/realtek/base-files/lib/preinit/98_remove_preinit_realtek
> 
> 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
> index 000000000000..e2a7cf5a69e9
> --- /dev/null
> +++ b/target/linux/realtek/base-files/lib/preinit/05_set_preinit_iface_realtek
> @@ -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
> index 000000000000..dc5fdb059b9b
> --- /dev/null
> +++ b/target/linux/realtek/base-files/lib/preinit/98_remove_preinit_realtek
> @@ -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
>
Hauke Mehrtens June 27, 2021, 7:02 p.m. UTC | #2
Hi Birger,

This looks good. I will try to have a closer look in the next days.

Hauke

On 6/26/21 11:17 PM, Birger Koblitz wrote:
> Hi Hauke,
> 
> it looks as if there could be a more elegant solution to this, tomn just 
> posted
> this on the forum:
> https://forum.openwrt.org/t/support-for-rtl838x-based-managed-switches/57875 
> 
> I did not have time to test it so far, though.
> 
> Birger
> 
> On 22/06/2021 00:45, Hauke Mehrtens wrote:
>> 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>
>> ---
>>   .../lib/preinit/05_set_preinit_iface_realtek        | 13 +++++++++++++
>>   .../lib/preinit/98_remove_preinit_realtek           |  6 ++++++
>>   2 files changed, 19 insertions(+)
>>   create mode 100644 
>> target/linux/realtek/base-files/lib/preinit/05_set_preinit_iface_realtek
>>   create mode 100644 
>> target/linux/realtek/base-files/lib/preinit/98_remove_preinit_realtek
>>
>> 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
>> index 000000000000..e2a7cf5a69e9
>> --- /dev/null
>> +++ 
>> b/target/linux/realtek/base-files/lib/preinit/05_set_preinit_iface_realtek 
>>
>> @@ -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
>> index 000000000000..dc5fdb059b9b
>> --- /dev/null
>> +++ 
>> b/target/linux/realtek/base-files/lib/preinit/98_remove_preinit_realtek
>> @@ -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
>>
diff mbox series

Patch

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
index 000000000000..e2a7cf5a69e9
--- /dev/null
+++ b/target/linux/realtek/base-files/lib/preinit/05_set_preinit_iface_realtek
@@ -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
index 000000000000..dc5fdb059b9b
--- /dev/null
+++ b/target/linux/realtek/base-files/lib/preinit/98_remove_preinit_realtek
@@ -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