From: Maxime Chevallier <maxime.chevallier@bootlin.com>
To: Kory Maincent <kory.maincent@bootlin.com>
Cc: davem@davemloft.net, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org,
thomas.petazzoni@bootlin.com, "Andrew Lunn" <andrew@lunn.ch>,
"Jakub Kicinski" <kuba@kernel.org>,
"Eric Dumazet" <edumazet@google.com>,
"Paolo Abeni" <pabeni@redhat.com>,
"Russell King" <linux@armlinux.org.uk>,
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>,
"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, "Antoine Tenart" <atenart@kernel.org>,
devicetree@vger.kernel.org, "Conor Dooley" <conor+dt@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Rob Herring" <robh@kernel.org>,
"Romain Gantois" <romain.gantois@bootlin.com>
Subject: Re: [PATCH net-next 03/13] net: phy: Introduce PHY ports representation
Date: Tue, 11 Feb 2025 14:42:43 +0100 [thread overview]
Message-ID: <20250211144243.6190005a@fedora.home> (raw)
In-Reply-To: <20250211143209.74f84a10@kmaincent-XPS-13-7390>
Hi Köry,
On Tue, 11 Feb 2025 14:32:09 +0100
Kory Maincent <kory.maincent@bootlin.com> wrote:
> On Fri, 7 Feb 2025 23:36:22 +0100
> Maxime Chevallier <maxime.chevallier@bootlin.com> wrote:
>
> > Ethernet provides a wide variety of layer 1 protocols and standards for
> > data transmission. The front-facing ports of an interface have their own
> > complexity and configurability.
> >
> > Introduce a representation of these front-facing ports. The current code
> > is minimalistic and only support ports controlled by PHY devices, but
> > the plan is to extend that to SFP as well as raw Ethernet MACs that
> > don't use PHY devices.
> >
> > This minimal port representation allows describing the media and number
> > of lanes of a port. From that information, we can derive the linkmodes
> > usable on the port, which can be used to limit the capabilities of an
> > interface.
> >
> > For now, the port lanes and medium is derived from devicetree, defined
> > by the PHY driver, or populated with default values (as we assume that
> > all PHYs expose at least one port).
> >
> > The typical example is 100M ethernet. 100BaseT can work using only 2
> > lanes on a Cat 5 cables. However, in the situation where a 10/100/1000
> > capable PHY is wired to its RJ45 port through 2 lanes only, we have no
> > way of detecting that. The "max-speed" DT property can be used, but a
> > more accurate representation can be used :
> >
> > mdi {
> > port@0 {
> > media = "BaseT";
> > lanes = <2>;
> > };
> > };
> >
> > From that information, we can derive the max speed reachable on the
> > port.
> >
> > Another benefit of having that is to avoid vendor-specific DT properties
> > (micrel,fiber-mode or ti,fiber-mode).
> >
> > This basic representation is meant to be expanded, by the introduction
> > of port ops, userspace listing of ports, and support for multi-port
> > devices.
>
> This patch is tackling the support of ports only for the PHY API. Keeping in
> mind that this port abstraction support will also be of interest to the NICs.
> Isn't it preferable to handle port in a standalone API?
The way I see it, nothing prevents from using the port definition in
ethernet-port.yml in DSA/raw nics.
> With net drivers having PHY managed by the firmware or DSA, there is no linux
> description of their PHYs. On that case, if we want to use port abstraction,
> what is the best? Register a virtual phy_device to use the abstraction port or
> use the port abstraction API directly which meant that it is not related to any
> PHY?
I think the next steps will be to have net_device have a list of ports
(maintained in the phy_link_topology) that aggregates ports from all
its PHYs/SFPs/raw interfaces. in that case net_device will be the
direct parent. I haven't worked on the bindings for that though,
especially for DSA :'(
I don't think the virtual phydev is going to be helpful. I'm hitting
the 15 patches limit, but a possible extension is to make so that
phylink also creates a port when it finds an SFP (hence, when upstream
is a MAC).
This is why phy_port has these fields :
enum phy_port_parent {
PHY_PORT_PHY,
};
struct phy_port {
...
enum phy_port_parent parent_type;
union {
struct phy_device *phy;
};
};
The parent type may (will) be extended with PORT_PHY_MAC, and that's
also why the parent pointer is in a union :)
I'm trying hard to make so that phy_port doesn't depend on phylib
(altough, phylib depends on phy_port). There's a dependency on some
core stuff (converting from medium => linkmodes) and phylink
(converting the interfaces list to linkmodes), but we can extract these
fairly easily.
You're correct in that for now, the integration is with phylib only
though, but let's make sure this will also work for phy-less devices.
Thanks a lot for your input,
Maxime
next prev parent reply other threads:[~2025-02-11 13:42 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-07 22:36 [PATCH net-next 00/13] Introduce an ethernet port representation Maxime Chevallier
2025-02-07 22:36 ` [PATCH net-next 01/13] net: ethtool: Introduce ETHTOOL_LINK_MEDIUM_* values Maxime Chevallier
2025-02-07 22:36 ` [PATCH net-next 02/13] net: ethtool: Export the link_mode_params definitions Maxime Chevallier
2025-02-07 22:36 ` [PATCH net-next 03/13] net: phy: Introduce PHY ports representation Maxime Chevallier
2025-02-11 13:32 ` Kory Maincent
2025-02-11 13:42 ` Maxime Chevallier [this message]
2025-02-11 13:52 ` Kory Maincent
2025-02-11 14:04 ` Andrew Lunn
2025-02-11 14:17 ` Maxime Chevallier
2025-02-07 22:36 ` [PATCH net-next 04/13] net: phy: dp83822: Add support for phy_port representation Maxime Chevallier
2025-02-07 22:36 ` [PATCH net-next 05/13] net: phy: Create a phy_port for PHY-driven SFPs Maxime Chevallier
2025-02-12 15:59 ` Maxime Chevallier
2025-02-07 22:36 ` [PATCH net-next 06/13] net: phy: Intrduce generic SFP handling for PHY drivers Maxime Chevallier
2025-02-08 15:32 ` kernel test robot
2025-02-07 22:36 ` [PATCH net-next 07/13] net: phy: marvell-88x2222: Support SFP through phy_port interface Maxime Chevallier
2025-02-07 22:36 ` [PATCH net-next 08/13] net: phy: marvell: " Maxime Chevallier
2025-02-07 22:36 ` [PATCH net-next 09/13] net: phy: marvell10g: Support SFP through phy_port Maxime Chevallier
2025-02-07 22:36 ` [PATCH net-next 10/13] net: phy: at803x: Support SFP through phy_port interface Maxime Chevallier
2025-02-07 22:36 ` [PATCH net-next 11/13] net: phy: Only rely on phy_port for PHY-driven SFP Maxime Chevallier
2025-02-08 16:04 ` kernel test robot
2025-02-11 9:17 ` Maxime Chevallier
2025-02-07 22:36 ` [PATCH net-next 12/13] net: phy: dp83822: Add SFP support through the phy_port interface Maxime Chevallier
2025-02-08 16:15 ` kernel test robot
2025-02-07 22:36 ` [PATCH net-next 13/13] dt-bindings: net: Introduce the phy-port description Maxime Chevallier
2025-02-08 2:14 ` [PATCH net-next 00/13] Introduce an ethernet port representation Sean Anderson
2025-02-10 8:55 ` Maxime Chevallier
2025-02-12 15:39 ` Sean Anderson
2025-02-12 15:44 ` Maxime Chevallier
2025-02-12 19:48 ` Rob Herring
2025-02-13 9:57 ` Maxime Chevallier
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=20250211144243.6190005a@fedora.home \
--to=maxime.chevallier@bootlin.com \
--cc=andrew@lunn.ch \
--cc=atenart@kernel.org \
--cc=christophe.leroy@csgroup.eu \
--cc=conor+dt@kernel.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=herve.codina@bootlin.com \
--cc=hkallweit1@gmail.com \
--cc=horms@kernel.org \
--cc=kabel@kernel.org \
--cc=kory.maincent@bootlin.com \
--cc=krzk+dt@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.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=robh@kernel.org \
--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;
as well as URLs for NNTP newsgroup(s).