From: Maxime Chevallier <maxime.chevallier@bootlin.com>
To: "Russell King (Oracle)" <linux@armlinux.org.uk>
Cc: "Andrew Lunn" <andrew@lunn.ch>,
"Jakub Kicinski" <kuba@kernel.org>,
davem@davemloft.net, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, thomas.petazzoni@bootlin.com,
"Eric Dumazet" <edumazet@google.com>,
"Paolo Abeni" <pabeni@redhat.com>,
linux-arm-kernel@lists.infradead.org,
"Christophe Leroy" <christophe.leroy@csgroup.eu>,
"Herve Codina" <herve.codina@bootlin.com>,
"Florian Fainelli" <f.fainelli@gmail.com>,
"Heiner Kallweit" <hkallweit1@gmail.com>,
"Vladimir Oltean" <vladimir.oltean@nxp.com>,
"Köry Maincent" <kory.maincent@bootlin.com>,
"Jesse Brandeburg" <jesse.brandeburg@intel.com>,
"Marek Behún" <kabel@kernel.org>,
"Piergiorgio Beruto" <piergiorgio.beruto@gmail.com>,
"Oleksij Rempel" <o.rempel@pengutronix.de>,
"Nicolò Veronese" <nicveronese@gmail.com>,
"Simon Horman" <horms@kernel.org>,
mwojtas@chromium.org, "Nathan Chancellor" <nathan@kernel.org>,
"Antoine Tenart" <atenart@kernel.org>
Subject: Re: [PATCH net-next v13 05/13] net: ethtool: Allow passing a phy index for some commands
Date: Sun, 16 Jun 2024 23:31:52 +0200 [thread overview]
Message-ID: <20240616233152.64f06133@fedora> (raw)
In-Reply-To: <Zm8NrEproHTPzo+O@shell.armlinux.org.uk>
Hi Russell,
> > It gets interesting with copper SFP. They contain a PHY, and that PHY
> > can physically disappear at any time. What i don't know is when the
> > logical representation of the PHY will disappear after the hotunplug
> > event.
I'm replying to your mail to summarize what the topology code does,
which I think is correct according to these explanations.
>
> On a SFP module unplug, the following upstream device methods will be
> called in order:
> 1. link_down
> 2. module_stop
> 3. disconnect_phy
Patch 03 adds a phy_sfp_connect_phy() / phy_sfp_disconnect_phy() set of
helpers that new PHY drivers supporting downstream SFP busses must
specify in their sfp_upstream_ops, which will add/remove the SFP phy
to/from the topology. I realize now that I need to add some clear
documentation so that new drivers get that right.
That is because in this situation, the SFP PHY won't be attached to the
netdev (as the media-converter PHY already is), so relying on the
phy_attach / phy_detach paths won't cover these cases.
>
> At this point, the PHY device will be removed (phy_device_remove()) and
> freed (phy_device_free()), and shortly thereafter, the MDIO bus is
> unregistered and thus destroyed.
>
> In response to the above, phylink will, respectively for each method:
>
> 1. disable the netdev carrier and call mac_link_down()
> 2. call phy_stop() on the attached PHY
> 3. remove the PHY from phylink, and then call phy_disconnect(),
> disconnecting it from the netdev.
>
> Thus, when a SFP PHY is being removed, phylib will see in order the
> following calls:
>
> phy_disconnect()
> phy_device_remove()
> phy_device_free()
>
> Provided the topology linkage is removed on phy_disconnect() which
> disassociates the PHY from the netdev, SFP PHYs should be fine.
>
And here in that case, there's a hook in phy_detach() to remove the phy
from the topology as well, which deals with the case where phylink
deals with the sfp_upstream_ops. I think this covers all cases :)
Thanks,
Maxime
next prev parent reply other threads:[~2024-06-16 21:32 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-07 7:18 [PATCH net-next v13 00/13] Introduce PHY listing and link_topology tracking Maxime Chevallier
2024-06-07 7:18 ` [PATCH net-next v13 01/13] net: phy: Introduce ethernet link topology representation Maxime Chevallier
2024-06-14 0:58 ` Jakub Kicinski
2024-06-14 9:20 ` Maxime Chevallier
2024-06-07 7:18 ` [PATCH net-next v13 02/13] net: sfp: pass the phy_device when disconnecting an sfp module's PHY Maxime Chevallier
2024-06-07 7:18 ` [PATCH net-next v13 03/13] net: phy: add helpers to handle sfp phy connect/disconnect Maxime Chevallier
2024-06-07 7:18 ` [PATCH net-next v13 04/13] net: sfp: Add helper to return the SFP bus name Maxime Chevallier
2024-06-14 1:13 ` Jakub Kicinski
2024-06-07 7:18 ` [PATCH net-next v13 05/13] net: ethtool: Allow passing a phy index for some commands Maxime Chevallier
2024-06-14 1:26 ` Jakub Kicinski
2024-06-16 16:02 ` Maxime Chevallier
2024-06-16 15:21 ` Andrew Lunn
2024-06-16 16:07 ` Russell King (Oracle)
2024-06-16 21:31 ` Maxime Chevallier [this message]
2024-06-16 16:15 ` Russell King (Oracle)
2024-06-23 1:21 ` Maxime Chevallier
2024-06-07 7:18 ` [PATCH net-next v13 06/13] netlink: specs: add phy-index as a header parameter Maxime Chevallier
2024-06-07 7:18 ` [PATCH net-next v13 07/13] net: ethtool: Introduce a command to list PHYs on an interface Maxime Chevallier
2024-06-14 1:18 ` Jakub Kicinski
2024-06-20 3:50 ` Maxime Chevallier
2024-06-07 7:18 ` [PATCH net-next v13 08/13] netlink: specs: add ethnl PHY_GET command set Maxime Chevallier
2024-06-07 7:18 ` [PATCH net-next v13 09/13] net: ethtool: plca: Target the command to the requested PHY Maxime Chevallier
2024-06-07 7:18 ` [PATCH net-next v13 10/13] net: ethtool: pse-pd: " Maxime Chevallier
2024-06-07 7:18 ` [PATCH net-next v13 11/13] net: ethtool: cable-test: " Maxime Chevallier
2024-06-07 7:18 ` [PATCH net-next v13 12/13] net: ethtool: strset: Allow querying phy stats by index Maxime Chevallier
2024-06-07 7:18 ` [PATCH net-next v13 13/13] Documentation: networking: document phy_link_topology Maxime Chevallier
2024-06-26 9:47 ` [PATCH net-next v13 00/13] Introduce PHY listing and link_topology tracking Marc Kleine-Budde
2024-06-26 10:01 ` Maxime Chevallier
2024-06-26 10:15 ` Marc Kleine-Budde
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=20240616233152.64f06133@fedora \
--to=maxime.chevallier@bootlin.com \
--cc=andrew@lunn.ch \
--cc=atenart@kernel.org \
--cc=christophe.leroy@csgroup.eu \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=herve.codina@bootlin.com \
--cc=hkallweit1@gmail.com \
--cc=horms@kernel.org \
--cc=jesse.brandeburg@intel.com \
--cc=kabel@kernel.org \
--cc=kory.maincent@bootlin.com \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=mwojtas@chromium.org \
--cc=nathan@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=nicveronese@gmail.com \
--cc=o.rempel@pengutronix.de \
--cc=pabeni@redhat.com \
--cc=piergiorgio.beruto@gmail.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=vladimir.oltean@nxp.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).