Re: [PATCH 3/3] arm64: dts: rockchip: Add RTL8367RB-VB switch to Radxa E24C

From: Chukun Pan
Date: Mon Jul 28 2025 - 10:31:27 EST


Hi,

> Initial testing with iperf3 showed ~930-940 Mbits/sec in one direction
> and only around ~1-2 Mbits/sec in the other direction.

> Any mix of MAC (rx/tx delay) and switch (rx/tx internal delay) did not
> seem to resolve this speed issue, however dropping snps,tso seems to fix
> that issue.

Have you tried setting phy-mode to rgmii? (just for testing)
Usually this problem is caused by incorrect rx/tx delay.

> + ethernet-switch@1d {
> + compatible = "realtek,rtl8365mb";
> + reg = <0x1d>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&rtl8367rb_eint>;

Shouldn't this pinctrl be written in interrupts?

> + ethernet-port@6 {
> + reg = <6>;
> + ethernet = <&gmac1>;
> + label = "cpu";

No need for label = "cpu":
https://github.com/torvalds/linux/commit/567f38317054e66647fd59cfa4e261219a2a21db

> This series relaxes the realtek dsa drivers requirement of having a mdio
> child OF node to probe and instead have it register a user_mii_bus to
> make it function when a mdio child OF node is missing.

This is weird, the switch is connected to the gmac via mdio.
Can you try the following and see if it works? I tried it on
a rk3568 + rtl8367s board and it worked:

```
&mdio1 {
switch@29 {
compatible = "realtek,rtl8365mb";
reg = <29>;
reset-gpios = ...

switch_intc: interrupt-controller {
interrupt-parent = ...
interrupts = ...
interrupt-controller;
#address-cells = <0>;
#interrupt-cells = <1>;
};

mdio {
#address-cells = <1>;
#size-cells = <0>;

phy0: ethernet-phy@0 {
reg = <0>;
interrupt-parent = <&switch_intc>;
interrupts = <0>;
};

phy1: ethernet-phy@1 {
reg = <1>;
interrupt-parent = <&switch_intc>;
interrupts = <1>;
};

phy2: ethernet-phy@2 {
reg = <2>;
interrupt-parent = <&switch_intc>;
interrupts = <2>;
};

phy3: ethernet-phy@3 {
reg = <3>;
interrupt-parent = <&switch_intc>;
interrupts = <3>;
};
};

ports {
#address-cells = <1>;
#size-cells = <0>;

port@0 {
reg = <0>;
label = "wan";
phy-handle = <&phy0>;
};

port@1 {
reg = <1>;
label = "lan1";
phy-handle = <&phy1>;
};

port@2 {
reg = <2>;
label = "lan2";
phy-handle = <&phy2>;
};

port@3 {
reg = <3>;
label = "lan3";
phy-handle = <&phy3>;
};

port@x {
reg = <x>;
ethernet = <&gmac1>;
phy-mode = "rgmii";

fixed-link {
speed = <1000>;
full-duplex;
};
};
};
};
};
```

Thanks,
Chukun

--
2.25.1