]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: stmmac: hw->ps becomes hw->reverse_sgmii_enable
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Thu, 16 Oct 2025 14:37:32 +0000 (15:37 +0100)
committerJakub Kicinski <kuba@kernel.org>
Tue, 21 Oct 2025 00:17:15 +0000 (17:17 -0700)
After a lot of digging, it seems that the oddly named hw->ps member
is all about setting the core into reverse SGMII speed. When set to
a non-zero value, it:

1. Configures the MAC at initialisation time to operate at a specific
   speed.
2. It _incorrectly_ enables the transmitter (GMAC_CONFIG_TE) which
   makes no sense, rather than enabling the "transmit configuration"
   bit (GMAC_CONFIG_TC).
3. It configures the SGMII rate adapter layer to retrieve its speed
   setting from the MAC configuration register rather than the PHY.

In the previous commit, we removed (1) and (2) as phylink overwrites
the configuration set at that step.

Thus, the only functional aspect is (3), which is a boolean operation.
This means there is no need to store the actual speed, and just have a
boolean flag.

Convert the priv->ps member to a boolean, and rename it to
priv->reverse_sgmii_enable to make it more understandable.

Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Tested-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Tested-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Link: https://patch.msgid.link/E1v9P6i-0000000Aom3-1y2y@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/stmicro/stmmac/common.h
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c

index ed5e207ffdba8fdd9ce712dc3890a6385c6e97f1..fee7021246b1a4e466bb38604c30af90a54a758f 100644 (file)
@@ -599,13 +599,13 @@ struct mac_device_info {
        unsigned int mcast_bits_log2;
        unsigned int rx_csum;
        unsigned int pcs;
-       unsigned int ps;
        unsigned int xlgmac;
        unsigned int num_vlan;
        u32 vlan_filter[32];
        bool vlan_fail_q_en;
        u8 vlan_fail_q;
        bool hw_vlan_en;
+       bool reverse_sgmii_enable;
 };
 
 struct stmmac_rx_routing {
index 832062b2f4f31e01a88582e4671d03a9837fe6c5..c4d749396b53efaa57bcd5eabc1df25965becba4 100644 (file)
@@ -1096,12 +1096,12 @@ static void stmmac_check_pcs_mode(struct stmmac_priv *priv)
                case SPEED_10:
                case SPEED_100:
                case SPEED_1000:
-                       priv->hw->ps = speed;
+                       priv->hw->reverse_sgmii_enable = true;
                        break;
 
                default:
                        dev_warn(priv->device, "invalid port speed\n");
-                       priv->hw->ps = 0;
+                       priv->hw->reverse_sgmii_enable = false;
                        break;
                }
        }
@@ -3486,7 +3486,7 @@ static int stmmac_hw_setup(struct net_device *dev)
        }
 
        if (priv->hw->pcs)
-               stmmac_pcs_ctrl_ane(priv, 1, priv->hw->ps);
+               stmmac_pcs_ctrl_ane(priv, 1, priv->hw->reverse_sgmii_enable);
 
        /* set TX and RX rings length */
        stmmac_set_rings_length(priv);