]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
realtek: dsa: rtl931x: remove enabling MAC from phylink_mac_config 20369/head
authorJonas Jelonek <jelonek.jonas@gmail.com>
Wed, 8 Oct 2025 19:07:06 +0000 (19:07 +0000)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 19 Oct 2025 21:49:56 +0000 (23:49 +0200)
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 <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20369
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
target/linux/realtek/files-6.12/drivers/net/dsa/rtl83xx/dsa.c

index fa3ecd816f99c91ddb57c19844046060f80af0e9..fd8205326190a893d247f2aca0518b6c9dca2bdc 100644 (file)
@@ -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));
 }