2023-06-27 09:55:06

by Vladimir Oltean

[permalink] [raw]
Subject: [PATCH net] net: phy: mscc: fix packet loss due to RGMII delays

Two deadly typos break RX and TX traffic on the VSC8502 PHY using RGMII
if phy-mode = "rgmii-id" or "rgmii-txid", and no "tx-internal-delay-ps"
override exists. The negative error code from phy_get_internal_delay()
does not get overridden with the delay deduced from the phy-mode, and
later gets committed to hardware. Also, the rx_delay gets overridden by
what should have been the tx_delay.

Fixes: dbb050d2bfc8 ("phy: mscc: Add support for RGMII delay configuration")
Signed-off-by: Vladimir Oltean <[email protected]>
---
drivers/net/phy/mscc/mscc_main.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/phy/mscc/mscc_main.c b/drivers/net/phy/mscc/mscc_main.c
index 669a4a7a28ce..4171f01d34e5 100644
--- a/drivers/net/phy/mscc/mscc_main.c
+++ b/drivers/net/phy/mscc/mscc_main.c
@@ -563,9 +563,9 @@ static int vsc85xx_update_rgmii_cntl(struct phy_device *phydev, u32 rgmii_cntl,
if (tx_delay < 0) {
if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID ||
phydev->interface == PHY_INTERFACE_MODE_RGMII_ID)
- rx_delay = RGMII_CLK_DELAY_2_0_NS;
+ tx_delay = RGMII_CLK_DELAY_2_0_NS;
else
- rx_delay = RGMII_CLK_DELAY_0_2_NS;
+ tx_delay = RGMII_CLK_DELAY_0_2_NS;
}

reg_val |= rx_delay << rgmii_rx_delay_pos;
--
2.34.1



2023-06-27 10:17:26

by Harini Katakam

[permalink] [raw]
Subject: RE: [PATCH net] net: phy: mscc: fix packet loss due to RGMII delays



> -----Original Message-----
> From: Vladimir Oltean <[email protected]>
> Sent: Tuesday, June 27, 2023 2:41 PM
> To: [email protected]
> Cc: Jose Abreu <[email protected]>; Andrew Lunn
> <[email protected]>; Heiner Kallweit <[email protected]>; Russell King
> <[email protected]>; David S. Miller <[email protected]>; Eric
> Dumazet <[email protected]>; Jakub Kicinski <[email protected]>; Paolo
> Abeni <[email protected]>; [email protected]; Katakam, Harini
> <[email protected]>
> Subject: [PATCH net] net: phy: mscc: fix packet loss due to RGMII delays
>
> Two deadly typos break RX and TX traffic on the VSC8502 PHY using RGMII
> if phy-mode = "rgmii-id" or "rgmii-txid", and no "tx-internal-delay-ps"
> override exists. The negative error code from phy_get_internal_delay()
> does not get overridden with the delay deduced from the phy-mode, and
> later gets committed to hardware. Also, the rx_delay gets overridden by
> what should have been the tx_delay.
>
> Fixes: dbb050d2bfc8 ("phy: mscc: Add support for RGMII delay
> configuration")
> Signed-off-by: Vladimir Oltean <[email protected]>

Thanks
Reviewed-by: Harini Katakam <[email protected]>

Regards,
Harini

2023-06-27 12:53:08

by Vladimir Oltean

[permalink] [raw]
Subject: Re: [PATCH net] net: phy: mscc: fix packet loss due to RGMII delays

On Tue, Jun 27, 2023 at 12:11:09PM +0300, Vladimir Oltean wrote:
> Two deadly typos break RX and TX traffic on the VSC8502 PHY using RGMII
> if phy-mode = "rgmii-id" or "rgmii-txid", and no "tx-internal-delay-ps"
> override exists. The negative error code from phy_get_internal_delay()
> does not get overridden with the delay deduced from the phy-mode, and
> later gets committed to hardware. Also, the rx_delay gets overridden by
> what should have been the tx_delay.
>
> Fixes: dbb050d2bfc8 ("phy: mscc: Add support for RGMII delay configuration")
> Signed-off-by: Vladimir Oltean <[email protected]>
> ---

I may have mis-targeted this patch towards "net" while the "net-next"
pull request has not been yet sent out. Can patchwork be instructed to
re-run the tests on net-next?

2023-06-27 13:13:04

by Paolo Abeni

[permalink] [raw]
Subject: Re: [PATCH net] net: phy: mscc: fix packet loss due to RGMII delays

On Tue, 2023-06-27 at 15:13 +0300, Vladimir Oltean wrote:
> On Tue, Jun 27, 2023 at 12:11:09PM +0300, Vladimir Oltean wrote:
> > Two deadly typos break RX and TX traffic on the VSC8502 PHY using RGMII
> > if phy-mode = "rgmii-id" or "rgmii-txid", and no "tx-internal-delay-ps"
> > override exists. The negative error code from phy_get_internal_delay()
> > does not get overridden with the delay deduced from the phy-mode, and
> > later gets committed to hardware. Also, the rx_delay gets overridden by
> > what should have been the tx_delay.
> >
> > Fixes: dbb050d2bfc8 ("phy: mscc: Add support for RGMII delay configuration")
> > Signed-off-by: Vladimir Oltean <[email protected]>
> > ---
>
> I may have mis-targeted this patch towards "net" while the "net-next"
> pull request has not been yet sent out. Can patchwork be instructed to
> re-run the tests on net-next?

I'm not 110% sure, but I think you have to re-send the patch with a
different prefix to achieve the above.

Cheers,

Paolo
>