* [PATCH] arm64: dts: rockchip: use rgmii-id for LubanCat 4 gmac1
@ 2026-11-09 19:15 Pufan Jin
2026-11-09 19:55 ` Andrew Lunn
0 siblings, 1 reply; 3+ messages in thread
From: Pufan Jin @ 2026-11-09 19:15 UTC (permalink / raw)
To: Conor Dooley, Heiko Stuebner, Krzysztof Kozlowski, Rob Herring
Cc: andrew, devicetree, linux-arm-kernel, linux-kernel, linux-rockchip
The LubanCat 4 PCB adds ~2ns of trace delay on both TXC and RXC, but
that alone is not sufficient for reliable RGMII operation. With
phy-mode = "rgmii" and zero MAC delays the link comes up at 1Gbps but
drops ~90% of the packets; the PHY's internal TX/RX delay is required.
Use phy-mode = "rgmii-id" and keep the MAC's default delays. With
this configuration a direct link to another 1Gbps NIC passes 2GB in
each direction with iperf3 at ~859-905Mbps, 0% packet loss, and no
CRC or error counters.
Fixes: 6d9430d58714 ("arm64: dts: rockchip: Add EmbedFire LubanCat 4 board")
Signed-off-by: Pufan Jin <cyan2254650260@gmail.com>
---
arch/arm64/boot/dts/rockchip/rk3588s-lubancat-4.dts | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-lubancat-4.dts b/arch/arm64/boot/dts/rockchip/rk3588s-lubancat-4.dts
index 0d28c6165..a042aa702 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588s-lubancat-4.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588s-lubancat-4.dts
@@ -168,12 +168,13 @@ &gmac1 {
clock_in_out = "output";
phy-handle = <&rgmii_phy1>;
/*
- * The PCB adds ~2ns of trace delay on both TXC and RXC, so the
- * required RGMII clock skew is provided by the board itself.
- * Neither the MAC nor the PHY should add any internal delay,
- * hence "rgmii" (not "rgmii-id") is correct here.
+ * The PCB adds ~2ns of trace delay on both TXC and RXC, but that
+ * alone is not sufficient for reliable RGMII operation: with
+ * "rgmii" and zero MAC delays the link shows ~90% packet loss.
+ * The PHY's internal TX/RX delay is required, so use "rgmii-id"
+ * and keep the MAC's default delays.
*/
- phy-mode = "rgmii";
+ phy-mode = "rgmii-id";
pinctrl-0 = <&gmac1_miim
&gmac1_tx_bus2
&gmac1_rx_bus2
--
2.56.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] arm64: dts: rockchip: use rgmii-id for LubanCat 4 gmac1
2026-11-09 19:15 [PATCH] arm64: dts: rockchip: use rgmii-id for LubanCat 4 gmac1 Pufan Jin
@ 2026-11-09 19:55 ` Andrew Lunn
2026-11-09 20:48 ` Pufan Jin
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Lunn @ 2026-11-09 19:55 UTC (permalink / raw)
To: Pufan Jin
Cc: Conor Dooley, Heiko Stuebner, Krzysztof Kozlowski, Rob Herring,
devicetree, linux-arm-kernel, linux-kernel, linux-rockchip
On Tue, Nov 10, 2026 at 03:15:15AM +0800, Pufan Jin wrote:
> The LubanCat 4 PCB adds ~2ns of trace delay on both TXC and RXC, but
> that alone is not sufficient for reliable RGMII operation. With
> phy-mode = "rgmii" and zero MAC delays the link comes up at 1Gbps but
> drops ~90% of the packets; the PHY's internal TX/RX delay is required.
Sorry, but this does not make sense. 4ns of delay is 2ns too many.
You need a proper explanation of what is going on here.
Andrew
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] arm64: dts: rockchip: use rgmii-id for LubanCat 4 gmac1
2026-11-09 19:55 ` Andrew Lunn
@ 2026-11-09 20:48 ` Pufan Jin
0 siblings, 0 replies; 3+ messages in thread
From: Pufan Jin @ 2026-11-09 20:48 UTC (permalink / raw)
To: Andrew Lunn
Cc: Conor Dooley, Heiko Stuebner, Krzysztof Kozlowski, Rob Herring,
devicetree, linux-arm-kernel, linux-kernel, linux-rockchip
On 2026/11/10 03:55, Andrew Lunn wrote:
> On Tue, Nov 10, 2026 at 03:15:15AM +0800, Pufan Jin wrote:
>> The LubanCat 4 PCB adds ~2ns of trace delay on both TXC and RXC, but
>> that alone is not sufficient for reliable RGMII operation. With
>> phy-mode = "rgmii" and zero MAC delays the link comes up at 1Gbps but
>> drops ~90% of the packets; the PHY's internal TX/RX delay is required.
> Sorry, but this does not make sense. 4ns of delay is 2ns too many.
>
> You need a proper explanation of what is going on here.
>
> Andrew
Hi Andrew,
The old comment was wrong. Here is what is actually happening on the
board, with measurements.
Conf A: phy-mode = "rgmii", no tx_delay/rx_delay in the DT.
dwmac-rk programs its defaults tx_delay = 0x30, rx_delay = 0x10; the
PHY's internal delays are disabled. On the board's direct 1Gbps link:
host -> board ping: 200 sent, 20 received, 90% loss
board -> host ping: 200 sent, 19 received, 90.5% loss
mmc_rx_crc_error: 118
Conf B: phy-mode = "rgmii-id".
dwmac-rk programs (0, 0) into the MAC; the PHY inserts its internal
2ns TX/RX delays. On the same direct link:
host -> board ping: 200/200, 0% loss
board -> host ping: 200/200, 0% loss
iperf3 TX: 921 Mbps
iperf3 RX: 941 Mbps
mmc_rx_crc_error: 0
The vendor BSP DTS for this board is:
phy-mode = "rgmii-rxid";
tx_delay = <0x1b>;
/* rx_delay = <0x00>; */
rtl8211f,tx-delay = <0x1b>;
The vendor configures an explicit MAC TX delay and PHY TX/RX delays.
The mainline RTL8211F driver only supports the standard 2ns TX/RX
enable selected by phy-mode; it cannot program the vendor's
fine-grained rtl8211f,tx-delay. With "rgmii-id" the PHY provides the
2ns TX/RX clock delay and the MAC delays are zero, which is the tested
mainline configuration.
The "PCB adds ~2ns" text was never measured and is removed. I will
follow up with a v2 containing the corrected comment and these
measurements.
Pufan
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-11-09 20:48 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-09 19:15 [PATCH] arm64: dts: rockchip: use rgmii-id for LubanCat 4 gmac1 Pufan Jin
2026-11-09 19:55 ` Andrew Lunn
2026-11-09 20:48 ` Pufan Jin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®