From 29cc0b6ccf4aeb9e3246d98ce67088847ff9b8a1 Mon Sep 17 00:00:00 2001 From: Jonas Jelonek Date: Wed, 8 Oct 2025 19:07:06 +0000 Subject: [PATCH] realtek: dsa: rtl931x: remove enabling MAC from phylink_mac_config Originally, phylink_mac_config first disabled the MAC, then triggered the SerDes setup and then re-enabled MAC. SerDes setup has been moved to the PCS driver now but pcs_config is called AFTER phylink_mac_config by phylink subsystem. Thus, just disable the MAC in phylink_mac_config. After PCS has setup the SerDes, the MAC should be properly brought up in a mac_link_up call coming from the phylink subsystem. Signed-off-by: Jonas Jelonek Link: https://github.com/openwrt/openwrt/pull/20369 Signed-off-by: Hauke Mehrtens --- .../files-6.12/drivers/net/dsa/rtl83xx/dsa.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/dsa.c b/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/dsa.c index fa3ecd816f9..fd820532619 100644 --- a/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/dsa.c +++ b/target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/dsa.c @@ -700,18 +700,8 @@ static void rtl931x_phylink_mac_config(struct dsa_switch *ds, int port, reg = sw_r32(priv->r->mac_force_mode_ctrl(port)); pr_info("%s reading FORCE_MODE_CTRL: %08x\n", __func__, reg); - reg &= ~(RTL931X_DUPLEX_MODE | RTL931X_FORCE_EN | RTL931X_FORCE_LINK_EN); - - reg &= ~(0xf << 12); - reg |= 0x2 << 12; /* Set SMI speed to 0x2 */ - - reg |= RTL931X_TX_PAUSE_EN | RTL931X_RX_PAUSE_EN; - - if (priv->lagmembers & BIT_ULL(port)) - reg |= RTL931X_DUPLEX_MODE; - - if (state->duplex == DUPLEX_FULL) - reg |= RTL931X_DUPLEX_MODE; + /* Disable MAC completely so PCS can setup the SerDes */ + reg = 0; sw_w32(reg, priv->r->mac_force_mode_ctrl(port)); } -- 2.47.3