All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Oleksij Rempel <o.rempel@pengutronix.de>
Cc: Andrew Lunn <andrew@lunn.ch>,
	Heiner Kallweit <hkallweit1@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	kernel@pengutronix.de, linux-kernel@vger.kernel.org,
	netdev@vger.kernel.org
Subject: Re: [PATCH net-next v2 1/1] net: phy: Clear link-specific data on link down
Date: Fri, 22 Aug 2025 10:42:53 +0100	[thread overview]
Message-ID: <aKg7nf8YczCT6N0O@shell.armlinux.org.uk> (raw)
In-Reply-To: <aKg4XcM0vAIS4C-8@pengutronix.de>

On Fri, Aug 22, 2025 at 11:29:01AM +0200, Oleksij Rempel wrote:
> On Fri, Aug 22, 2025 at 10:19:24AM +0100, Russell King (Oracle) wrote:
> > On Fri, Aug 22, 2025 at 11:09:47AM +0200, Oleksij Rempel wrote:
> > > When a network interface is brought down, the associated PHY is stopped.
> > > However, several link-specific parameters within the phy_device struct
> > > are not cleared. This leads to userspace tools like ethtool reporting
> > > stale information from the last active connection, which is misleading
> > > as the link is no longer active.
> > 
> > This is not a good idea. Consider the case where the PHY has been
> > configured with autoneg disabled, and phydev->speed etc specifies
> > the desired speed.
> > 
> > When the link goes down, all that state gets cleared, and we lose
> > the user's settings.
> > 
> > So no, I don't think this is appropriate.
> > 
> > I think it is appropriate to clear some of the state, but anything that
> > the user can configure (such as ->speed and ->duplex) must not be
> > cleared.
> 
> Hm... should it be cleared conditionally? If autoneg is used, clear the
> speed and duplex?

Actually no, you can't do any of this here.

Look at phy_ethtool_set_eee_noneg(). If the LPI configuration changes,
it needs to inform the MAC of the change, and it does that by
_simulating_ a brief loss of link by calling phy_link_down() followed
by phy_link_up() - expecting all state to be preserved except that
which needs to be modified.

Maybe we should do something in the PHY_HALTED state in
_phy_state_machine() ?

Note that in the usual case of link down, it is the responsibility of
phy_read_status() to update most of what you're clearing, the
exception is phydev->eee_active and phydev->enable_tx_lpi which are
managed by phylib itself.

I think that both the PHY_HALTED and PHY_ERROR states should be
clearing phydev->eee_active and phydev->enable_tx_lpi, so that
should be in the existing if().

I'm not sure we want to clear out the remainder of the state on
PHY_ERROR, as this would aid debugging when something goes wrong.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

      reply	other threads:[~2025-08-22  9:43 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-22  9:09 [PATCH net-next v2 1/1] net: phy: Clear link-specific data on link down Oleksij Rempel
2025-08-22  9:19 ` Russell King (Oracle)
2025-08-22  9:29   ` Oleksij Rempel
2025-08-22  9:42     ` Russell King (Oracle) [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aKg7nf8YczCT6N0O@shell.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=hkallweit1@gmail.com \
    --cc=kernel@pengutronix.de \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=o.rempel@pengutronix.de \
    --cc=pabeni@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.