mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Maxime Chevallier <maxime.chevallier@bootlin.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: davem@davemloft.net, "Jakub Kicinski" <kuba@kernel.org>,
	"Eric Dumazet" <edumazet@google.com>,
	"Paolo Abeni" <pabeni@redhat.com>,
	"Russell King" <linux@armlinux.org.uk>,
	"Heiner Kallweit" <hkallweit1@gmail.com>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	thomas.petazzoni@bootlin.com,
	"Christophe Leroy" <christophe.leroy@csgroup.eu>,
	"Herve Codina" <herve.codina@bootlin.com>,
	"Florian Fainelli" <f.fainelli@gmail.com>,
	"Vladimir Oltean" <vladimir.oltean@nxp.com>,
	"Köry Maincent" <kory.maincent@bootlin.com>,
	"Marek Behún" <kabel@kernel.org>,
	"Oleksij Rempel" <o.rempel@pengutronix.de>,
	"Nicolò Veronese" <nicveronese@gmail.com>,
	"Simon Horman" <horms@kernel.org>,
	mwojtas@chromium.org,
	"Romain Gantois" <romain.gantois@bootlin.com>,
	"Daniel Golle" <daniel@makrotopia.org>,
	"Dimitri Fedrau" <dimitri.fedrau@liebherr.com>,
	"Frank Wunderlich" <frank.wunderlich@linux.dev>
Subject: Re: [PATCH net-next v10 6/9] net: phy: phy_port: Store information about a MII port's vacant state
Date: Wed, 20 May 2026 09:28:14 +0200	[thread overview]
Message-ID: <b1eb4c18-7dd9-4c40-97c8-81e277332228@bootlin.com> (raw)
In-Reply-To: <d7086094-9f8b-4d18-92ae-e278b4e67658@lunn.ch>

Hi again,

On 5/15/26 15:12, Andrew Lunn wrote:
> On Fri, May 15, 2026 at 09:22:29AM +0200, Maxime Chevallier wrote:
>> Hi Andrew,
>>
>> On 5/14/26 15:58, Andrew Lunn wrote:
>>>> We have information about what MII they can handle, however we don't
>>>> store anything about whether they are currently connected to an SFP
>>>> module or not. As phy_port aims at listing the front-facing ports, let's
>>>> store an "vacant" bit to know whether or not a MII port is currently
>>>> vacant (i.e. there's no module in the SFP cage), or not (i.e.
>>>> there's an SFP module).
>>>
>>> vacant == False actually means a bit more than there is a module in
>>> the cage. It also means that, so far, we have not had any errors
>>> trying to use the module. If there is an error, we might have a module
>>> physically in the cage, but vacant == True.
>>
>> This is a good point. Even with an error, we should have vacant = false.
>>
>> TBH I'm unsure how to name this, vacant may not be the best word there, but
>> I'm struggling to find a better term.
>>
>> maybe "empty" ?
> 
> My comment is really about, what do we mean by vacant/empty?
> 
> Is it simply about there physically being a module in the cage, or is
> it also about being able to drive that module? If it is just about
> there being a module in the cage, then vacant/empty is good. If we
> also want to say that we have been able to read out the EEPROM and
> determined the module will work in combination with the PCS and MAC,
> then i would probably use a different name. "usable", "compatible"?
> 
> Either way, i think the code either needs simplifying, or made more
> complex.

I've given this a go, and now I remember why it's that way. In a 
nutshell, if something fails during .module_insert() (e.g. module isn't 
compatible with the MII modes ont the cage), then .module_remove() isn't 
called, so we can't track module presence unless we add that in the sfp 
code itself.

However a better way to deal with this whole situation may just be to 
store the presence information in the module's port itself, as the 
parent port id :
                    phy_port.id = 1
                   /                   phy_port.id = 2;
                  /                  / phy_port.upstream_port = 1
+------+     +----------+     +------------+
| MAC  | --- | SFP Cage | --- | SFP module |
+------+     +----------+     +------------+

So, we lose one piece of information, that is "is there an SFP module 
present, even if the module doesn't work". It's now indirectly present
as "there's another port that references the SFP cage port, hence it's
not empty".

We gain however information about the topology, and this is relevant for 
combo-port support :


                    phy_port.id = 1
                   /                   phy_port.id = 3;
                  /                  / phy_port.upstream_port = 1
+------+     +----------+     +------------+
| PHY  | --- | SFP Cage | --- | SFP module |
|      | -   +----------+     +------------+
+------+  \
            \   +------+
             -- | RJ45 |
                +------+
                  \
                   phy_port.id = 2

If we want to allow userspace to select which port to use, the following
commands will be equivalent (the command itself isn't set in stone, just 
a rough idea of what it'll look like) :

# Force using SFP

   ethtool --set-port eth0 port 1 force-active on
and
   ethtool --set-port eth0 port 3 force-active on

These commands above should be exactly equivalent

As they act on ports, having the relationship "port 3 is actually 
controlled through port 1" readily available will ease the implementation.

If that's ok, add this change to the next iteration (only the GET part, 
not yet the port selection :) )

Maxime

  parent reply	other threads:[~2026-05-20  7:28 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-13 13:05 [PATCH net-next v10 0/9] net: phy_port: SFP modules representation and phy_port listing Maxime Chevallier
2026-05-13 13:05 ` [PATCH net-next v10 1/9] net: phy: phy_link_topology: Add a helper for opportunistic alloc Maxime Chevallier
2026-05-13 13:05 ` [PATCH net-next v10 2/9] net: phy: phy_link_topology: Track ports in phy_link_topology Maxime Chevallier
2026-05-13 13:05 ` [PATCH net-next v10 3/9] net: phylink: Register a phy_port for MAC-driven SFP cages Maxime Chevallier
2026-05-14 13:43   ` Andrew Lunn
2026-05-13 13:05 ` [PATCH net-next v10 4/9] net: phy: Create SFP phy_port before registering upstream Maxime Chevallier
2026-05-14 13:46   ` Andrew Lunn
2026-05-13 13:05 ` [PATCH net-next v10 5/9] net: phy: Represent PHY-less SFP modules with phy_port Maxime Chevallier
2026-05-14 13:49   ` Andrew Lunn
2026-05-13 13:05 ` [PATCH net-next v10 6/9] net: phy: phy_port: Store information about a MII port's vacant state Maxime Chevallier
2026-05-14 13:58   ` Andrew Lunn
2026-05-15  7:22     ` Maxime Chevallier
2026-05-15 13:12       ` Andrew Lunn
2026-05-15 16:22         ` Maxime Chevallier
2026-05-20  7:28         ` Maxime Chevallier [this message]
2026-05-20 16:54           ` Andrew Lunn
2026-05-13 13:05 ` [PATCH net-next v10 7/9] net: phy: phy_link_topology: Add a helper to retrieve ports Maxime Chevallier
2026-05-14 13:59   ` Andrew Lunn
2026-05-13 13:05 ` [PATCH net-next v10 8/9] netlink: specs: Add ethernet port listing with ethtool Maxime Chevallier
2026-05-14 14:05   ` Andrew Lunn
2026-05-13 13:05 ` [PATCH net-next v10 9/9] net: ethtool: Introduce ethtool command to list ports Maxime Chevallier
2026-05-14 14:07   ` Andrew Lunn

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=b1eb4c18-7dd9-4c40-97c8-81e277332228@bootlin.com \
    --to=maxime.chevallier@bootlin.com \
    --cc=andrew@lunn.ch \
    --cc=christophe.leroy@csgroup.eu \
    --cc=daniel@makrotopia.org \
    --cc=davem@davemloft.net \
    --cc=dimitri.fedrau@liebherr.com \
    --cc=edumazet@google.com \
    --cc=f.fainelli@gmail.com \
    --cc=frank.wunderlich@linux.dev \
    --cc=herve.codina@bootlin.com \
    --cc=hkallweit1@gmail.com \
    --cc=horms@kernel.org \
    --cc=kabel@kernel.org \
    --cc=kory.maincent@bootlin.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=mwojtas@chromium.org \
    --cc=netdev@vger.kernel.org \
    --cc=nicveronese@gmail.com \
    --cc=o.rempel@pengutronix.de \
    --cc=pabeni@redhat.com \
    --cc=romain.gantois@bootlin.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

all inboxes | Powered by JetHome®