net: stmmac: Fix ethool link settings ops for integrated PCS
authorSneh Shah <quic_snehshah@quicinc.com>
Tue, 9 Jan 2024 14:47:29 +0000 (20:17 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jan 2024 23:35:57 +0000 (15:35 -0800)
[ Upstream commit 08300adac3b8dab9e2fd3be0155c7d3093c755f4 ]

Currently get/set_link_ksettings ethtool ops are dependent on PCS.
When PCS is integrated, it will not have separate link config.
Bypass configuring and checking PCS for integrated PCS.

Fixes: aa571b6275fb ("net: stmmac: add new switch to struct plat_stmmacenet_data")
Tested-by: Andrew Halaney <ahalaney@redhat.com> # sa8775p-ride
Signed-off-by: Sneh Shah <quic_snehshah@quicinc.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c

index aea5f89..419efe4 100644 (file)
@@ -311,8 +311,9 @@ static int stmmac_ethtool_get_link_ksettings(struct net_device *dev,
 {
        struct stmmac_priv *priv = netdev_priv(dev);
 
-       if (priv->hw->pcs & STMMAC_PCS_RGMII ||
-           priv->hw->pcs & STMMAC_PCS_SGMII) {
+       if (!(priv->plat->flags & STMMAC_FLAG_HAS_INTEGRATED_PCS) &&
+           (priv->hw->pcs & STMMAC_PCS_RGMII ||
+            priv->hw->pcs & STMMAC_PCS_SGMII)) {
                struct rgmii_adv adv;
                u32 supported, advertising, lp_advertising;
 
@@ -397,8 +398,9 @@ stmmac_ethtool_set_link_ksettings(struct net_device *dev,
 {
        struct stmmac_priv *priv = netdev_priv(dev);
 
-       if (priv->hw->pcs & STMMAC_PCS_RGMII ||
-           priv->hw->pcs & STMMAC_PCS_SGMII) {
+       if (!(priv->plat->flags & STMMAC_FLAG_HAS_INTEGRATED_PCS) &&
+           (priv->hw->pcs & STMMAC_PCS_RGMII ||
+            priv->hw->pcs & STMMAC_PCS_SGMII)) {
                /* Only support ANE */
                if (cmd->base.autoneg != AUTONEG_ENABLE)
                        return -EINVAL;