From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Maxime Chevallier <maxime.chevallier@bootlin.com>
Cc: davem@davemloft.net, "Andrew Lunn" <andrew@lunn.ch>,
"Jakub Kicinski" <kuba@kernel.org>,
"Eric Dumazet" <edumazet@google.com>,
"Paolo Abeni" <pabeni@redhat.com>,
"Heiner Kallweit" <hkallweit1@gmail.com>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
thomas.petazzoni@bootlin.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>,
"Vladimir Oltean" <vladimir.oltean@nxp.com>,
"Köry Maincent" <kory.maincent@bootlin.com>,
"Oleksij Rempel" <o.rempel@pengutronix.de>,
"Simon Horman" <horms@kernel.org>,
"Romain Gantois" <romain.gantois@bootlin.com>
Subject: Re: [PATCH net-next v2 09/13] net: phy: phylink: Use phy_caps_lookup for fixed-link configuration
Date: Wed, 26 Feb 2025 14:01:57 +0000 [thread overview]
Message-ID: <Z78e1dmEuQzMER5L@shell.armlinux.org.uk> (raw)
In-Reply-To: <20250226100929.1646454-10-maxime.chevallier@bootlin.com>
Please use a subject line of "net: phylink: " for phylink patches, not
"net: phy: " which is for phylib.
On Wed, Feb 26, 2025 at 11:09:24AM +0100, Maxime Chevallier wrote:
> When phylink creates a fixed-link configuration, it finds a matching
> linkmode to set as the advertised, lp_advertising and supported modes
> based on the speed and duplex of the fixed link.
>
> Use the newly introduced phy_caps_lookup to get these modes instead of
> phy_lookup_settings(). This has the side effect that the matched
> settings and configured linkmodes may now contain several linkmodes (the
> intersection of supported linkmodes from the phylink settings and the
> linkmodes that match speed/duplex) instead of the one from
> phy_lookup_settings().
>
> Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
> ---
> V1 -> V2: - fixed pl->link_config.lp_advertising setting
>
> drivers/net/phy/phylink.c | 26 +++++++++++++++-----------
> 1 file changed, 15 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
> index 6c67d5c9b787..63fbf3d8708a 100644
> --- a/drivers/net/phy/phylink.c
> +++ b/drivers/net/phy/phylink.c
> @@ -805,9 +805,10 @@ static int phylink_validate(struct phylink *pl, unsigned long *supported,
> static int phylink_parse_fixedlink(struct phylink *pl,
> const struct fwnode_handle *fwnode)
> {
> + __ETHTOOL_DECLARE_LINK_MODE_MASK(match) = { 0, };
> __ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, };
> + const struct link_capabilities *c;
> struct fwnode_handle *fixed_node;
> - const struct phy_setting *s;
> struct gpio_desc *desc;
> u32 speed;
> int ret;
> @@ -879,8 +880,10 @@ static int phylink_parse_fixedlink(struct phylink *pl,
> linkmode_copy(pl->link_config.advertising, pl->supported);
> phylink_validate(pl, pl->supported, &pl->link_config);
>
> - s = phy_lookup_setting(pl->link_config.speed, pl->link_config.duplex,
> - pl->supported, true);
> + c = phy_caps_lookup(pl->link_config.speed, pl->link_config.duplex,
> + pl->supported, true);
> + if (c)
> + linkmode_and(match, pl->supported, c->linkmodes);
What's this for? Surely phy_caps_lookup() should not return a link mode
that wasn't in phy_caps_lookup()'s 3rd argument.
Otherwise...
> linkmode_set_bit(ETHTOOL_LINK_MODE_Pause_BIT, mask);
> linkmode_set_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT, mask);
> @@ -889,9 +892,10 @@ static int phylink_parse_fixedlink(struct phylink *pl,
>
> phylink_set(pl->supported, MII);
>
> - if (s) {
> - __set_bit(s->bit, pl->supported);
> - __set_bit(s->bit, pl->link_config.lp_advertising);
> + if (c) {
> + linkmode_or(pl->supported, pl->supported, match);
> + linkmode_or(pl->link_config.lp_advertising,
> + pl->link_config.lp_advertising, match);
> } else {
> phylink_warn(pl, "fixed link %s duplex %dMbps not recognised\n",
> pl->link_config.duplex == DUPLEX_FULL ? "full" : "half",
> @@ -1879,21 +1883,21 @@ static int phylink_register_sfp(struct phylink *pl,
> int phylink_set_fixed_link(struct phylink *pl,
> const struct phylink_link_state *state)
> {
> - const struct phy_setting *s;
> + const struct link_capabilities *c;
> unsigned long *adv;
>
> if (pl->cfg_link_an_mode != MLO_AN_PHY || !state ||
> !test_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state))
> return -EINVAL;
>
> - s = phy_lookup_setting(state->speed, state->duplex,
> - pl->supported, true);
> - if (!s)
> + c = phy_caps_lookup(state->speed, state->duplex,
> + pl->supported, true);
> + if (!c)
> return -EINVAL;
>
> adv = pl->link_config.advertising;
> linkmode_zero(adv);
> - linkmode_set_bit(s->bit, adv);
> + linkmode_and(adv, pl->supported, c->linkmodes);
... this is wrong since this is basically doing the same as the above
parsing.
I'm not sure why you're generating different code for what is
essentially the same thing.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
next prev parent reply other threads:[~2025-02-26 14:02 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-26 10:09 [PATCH net-next v2 00/13] net: phy: Rework linkmodes handling in a dedicated file Maxime Chevallier
2025-02-26 10:09 ` [PATCH net-next v2 01/13] net: ethtool: Export the link_mode_params definitions Maxime Chevallier
2025-02-26 10:09 ` [PATCH net-next v2 02/13] net: phy: Use an internal, searchable storage for the linkmodes Maxime Chevallier
2025-02-26 10:09 ` [PATCH net-next v2 03/13] net: phy: phy_caps: Move phy_speeds to phy_caps Maxime Chevallier
2025-02-26 10:09 ` [PATCH net-next v2 04/13] net: phy: phy_caps: Move __set_linkmode_max_speed " Maxime Chevallier
2025-02-26 10:09 ` [PATCH net-next v2 05/13] net: phy: phy_caps: Introduce phy_caps_valid Maxime Chevallier
2025-02-26 10:09 ` [PATCH net-next v2 06/13] net: phy: phy_caps: Implement link_capabilities lookup by linkmode Maxime Chevallier
2025-02-26 10:09 ` [PATCH net-next v2 07/13] net: phy: phy_caps: Allow looking-up link caps based on speed and duplex Maxime Chevallier
2025-02-26 10:09 ` [PATCH net-next v2 08/13] net: phy: phy_device: Use link_capabilities lookup for PHY aneg config Maxime Chevallier
2025-02-26 10:09 ` [PATCH net-next v2 09/13] net: phy: phylink: Use phy_caps_lookup for fixed-link configuration Maxime Chevallier
2025-02-26 14:01 ` Russell King (Oracle) [this message]
2025-02-26 15:16 ` Maxime Chevallier
2025-02-26 10:09 ` [PATCH net-next v2 10/13] net: phy: drop phy_settings and the associated lookup helpers Maxime Chevallier
2025-02-26 10:09 ` [PATCH net-next v2 11/13] net: phy: phylink: Add a mapping between MAC_CAPS and LINK_CAPS Maxime Chevallier
2025-02-26 14:03 ` Russell King (Oracle)
2025-02-26 15:09 ` Maxime Chevallier
2025-02-26 10:09 ` [PATCH net-next v2 12/13] net: phy: phylink: Convert capabilities to linkmodes using phy_caps Maxime Chevallier
2025-02-26 10:09 ` [PATCH net-next v2 13/13] net: phy: phy_caps: Allow getting an phy_interface's capabilities 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=Z78e1dmEuQzMER5L@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=andrew@lunn.ch \
--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=kory.maincent@bootlin.com \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maxime.chevallier@bootlin.com \
--cc=netdev@vger.kernel.org \
--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;
as well as URLs for NNTP newsgroup(s).