Subject: Re: [PATCH net-next v2] mlxbf_gige: report unknown speed and duplex when link is down

From: Jakub Kicinski <[email-masked]>
Date: Fri, 17 Oct 2025 15:54:02 -0700

On Tue, 14 Oct 2025 12:16:31 -0400 Chris Babroski wrote:
> The "Speed" and "Duplex" fields displayed by ethtool for the OOB
> interface should report "Unknown" when the link is down to match the
> behavior of other network interfaces on BlueField (implemented by the
> mlx5 driver). Currently, the mlxbf_gige driver always reports the
> initially configured link speed and duplex, regardless of the actual
> link state.
> 
> The link speed and duplex are not updated for two reasons:
>   1. On BlueField the OOB phy is internally hardwired to a three port
>      switch. This means the physical link between the phy and link
>      partner is always up, regardless of the administrative link state
>      configured with ifconfig.
>   2. phy_ethtool_get_link_ksettings() reads cached values that are only
>      updated when phy_read_status() is called by the phy state machine.
>      Doing "ifconfig down" will trigger phy_stop() in the
>      ndo_stop() handler. This halts the phy state machine and sets
>      phydev->link without calling phy_read_status() or explicitly
>      updating other values, so the speed and duplex returned by
>      future phy_ethtool_get_link_ksettings() calls will be stale.
> 
> While #2 could potentially be fixed (assuming this is even an issue for
> other devices), #1 is unique to BlueField.
> 
> Implement a custom get_link_ksettings() handler in mlxbf_gige that calls
> phy_ethtool_get_link_ksettings() and updates the speed and duplex based
> on the link state. When the link is brought down with ifconfig, the
> driver now reports unknown speed and duplex to ethtool as expected.

Are you sure you still need this now that 60f887b1290b has been applied?