Re: [RFC PATCH 01/10] net: stmmac: move XPCS lifetime management to platform drivers
From: Christian Marangi <ansuelsmth@gmail.com>
Date: 2026-07-15 08:44:49
Also in:
linux-arm-kernel, linux-devicetree, linux-phy, linux-rockchip
On Wed, Jul 15, 2026 at 04:17:50PM +0800, Coia Prant wrote:
Maxime Chevallier [off-list ref] 于2026年7月15日周三 15:31写道:quoted
Hi, +Christian On 7/14/26 21:08, Coia Prant wrote:quoted
The current XPCS creation logic in stmmac_pcs_setup() is problematic for several reasons. First, if a device tree specifies a "pcs-handle" but no select_pcs() callback is provided by the platform driver, the created XPCS is never used. The phylink framework requires select_pcs() to actually return the PCS to the core, so the pcs-handle property becomes effectively useless without the matching callback. This is confusing for developers who expect that specifying a pcs-handle in their device tree should be sufficient to enable the PCS.I think Christian's work on fwnode PCS would help a lot with that PCS handling in stmmac: https://lore.kernel.org/netdev/20260618125752.1223-1-ansuelsmth@gmail.com/ (local) I don't know when Christian plans to iterate, it could be worth using that new fwnode mechanism here ? MaximeHi Maxime, Thanks for pointing me to Christian's work. This looks like a much-needed improvement. I actually spent all night debugging call traces caused by the current stmmac PCS lifetime management, and it was not a pleasant experience. The code feels like accumulated technical debt that should be cleaned up.
Yes we also got a similar situation with an ipq50xx SoC where the standalone PCS feature was implemented (I can add reference to OpenWrt code) and we also had some ""magic"" code to implement PCS as it does use the DWMAC plat. It seems for DWMAC PCS is very abstracted and have at least 3 different implementation aside from the common "select_pcs" one.
Regarding timeline: since Christian's series is still in RFC with an uncertain merge date, I'd prefer to keep this series as-is for now, as it solves the problem for Rockchip and has already started receiving review feedback. Once Christian's fwnode PCS work lands in net-next, I'm happy to rebase and convert the Rockchip glue driver to the new interface.
The series in RFC just because i posted while net-next was closed but it's not in RFC state. (sashiko is starting to hallucinate problems) I plan to post v10 today but still low review aside from ""lovely"" bot.
One thing I'd really like to see: the ability to specify the logical
MII port instance via something like:
pcs-handle = <&pcs MII_PortX>;
That would make the DT binding much cleaner and more flexible for
multi-port configurations.That is exactly one of the main feature of this new implementation as is already used downstream by Airoha SoC where a PCIe PCS expose 2 PCS from a single provider. (the code use the simple consumer/provider pattern and the driver have complete freedom of applying whatever logic is needed when returning the correct cell) I think the idea of Maxime is to test that series on most Scenario as possible to verify for fragility or regression on it. (but just for Maxime the feature is getting actively used on OpenWrt by 3 different SoC and no complain for now) -- Ansuel