rtl83xx: dsa: Clear duplex bit correctly
authorHarshal Gohel <hg@simonwunderlich.de>
Wed, 13 Dec 2023 07:29:36 +0000 (08:29 +0100)
committerSander Vanheule <sander@svanheule.net>
Tue, 9 Jan 2024 20:19:21 +0000 (21:19 +0100)
Without this, luci shows 10M full duplex when there is no link. So
explicitly set half duplex and unknown speed.

Acked-by: Simon Wunderlich <sw@simonwunderlich.de>
Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
target/linux/realtek/files-5.15/drivers/net/dsa/rtl83xx/dsa.c

index 3b5af72dd6a78154e954631708503cdb3a3c72a3..0e1d64ae691284a6cd0bb888e849dde40ec09e33 100644 (file)
@@ -870,6 +870,8 @@ static void rtl93xx_phylink_mac_config(struct dsa_switch *ds, int port,
 
        if (state->duplex == DUPLEX_FULL)
                reg |= RTL930X_DUPLEX_MODE;
+       else
+               reg &= ~RTL930X_DUPLEX_MODE; /* Clear duplex bit otherwise */
 
        if (priv->ports[port].phy_is_integrated)
                reg &= ~RTL930X_FORCE_EN; /* Clear MAC_FORCE_EN to allow SDS-MAC link */