amd-xgbe: propagate the correct speed and duplex status
authorRaju Rangoju <Raju.Rangoju@amd.com>
Tue, 21 Nov 2023 19:14:35 +0000 (00:44 +0530)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 23 Nov 2023 12:47:23 +0000 (13:47 +0100)
xgbe_get_link_ksettings() does not propagate correct speed and duplex
information to ethtool during cable unplug. Due to which ethtool reports
incorrect values for speed and duplex.

Address this by propagating correct information.

Fixes: 7c12aa08779c ("amd-xgbe: Move the PHY support into amd-xgbe")
Acked-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
Signed-off-by: Raju Rangoju <Raju.Rangoju@amd.com>
Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c

index 6e83ff5..32fab5e 100644 (file)
@@ -314,10 +314,15 @@ static int xgbe_get_link_ksettings(struct net_device *netdev,
 
        cmd->base.phy_address = pdata->phy.address;
 
-       cmd->base.autoneg = pdata->phy.autoneg;
-       cmd->base.speed = pdata->phy.speed;
-       cmd->base.duplex = pdata->phy.duplex;
+       if (netif_carrier_ok(netdev)) {
+               cmd->base.speed = pdata->phy.speed;
+               cmd->base.duplex = pdata->phy.duplex;
+       } else {
+               cmd->base.speed = SPEED_UNKNOWN;
+               cmd->base.duplex = DUPLEX_UNKNOWN;
+       }
 
+       cmd->base.autoneg = pdata->phy.autoneg;
        cmd->base.port = PORT_NONE;
 
        XGBE_LM_COPY(cmd, supported, lks, supported);