Re: [PATCH net-next 12/13] net: phy: phylink: Use phy_caps_lookup for fixed-link configuration
From: Kory Maincent <kory.maincent@bootlin.com>
Date: 2025-02-24 13:44:41
Also in:
linux-arm-kernel, lkml
From: Kory Maincent <kory.maincent@bootlin.com>
Date: 2025-02-24 13:44:41
Also in:
linux-arm-kernel, lkml
On Sat, 22 Feb 2025 15:27:24 +0100 Maxime Chevallier [off-list ref] 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().
...
linkmode_set_bit(ETHTOOL_LINK_MODE_Pause_BIT, mask); linkmode_set_bit(ETHTOOL_LINK_MODE_Asym_Pause_BIT, mask);@@ -588,9 +591,9 @@ 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->supported, match);
You are doing the OR twice. You should use linkmode_copy() instead. Regards, -- Köry Maincent, Bootlin Embedded Linux and kernel engineering https://bootlin.com