Message ID | 20231121191435.4049995-4-Raju.Rangoju@amd.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 7a2323ac24a50311f64a3a9b54ed5bef5821ecae |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | amd-xgbe: fixes to handle corner-cases | expand |
On 21.11.2023 20:14, Raju Rangoju wrote: > 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> > drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c > index 6e83ff59172a..32fab5e77246 100644 > --- a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c > +++ b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c > @@ -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);
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c index 6e83ff59172a..32fab5e77246 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c @@ -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);