On Thu, Sep 21, 2023 at 08:25:05PM +0800, Choong Yong Liang wrote: > > > On 4/8/2023 8:04 pm, Andrew Lunn wrote: > > On Fri, Aug 04, 2023 at 04:45:22PM +0800, Choong Yong Liang wrote: > > > Intel platforms’ integrated Gigabit Ethernet controllers support > > > 2.5Gbps mode statically using BIOS programming. In the current > > > implementation, the BIOS menu provides an option to select between > > > 10/100/1000Mbps and 2.5Gbps modes. Based on the selection, the BIOS > > > programs the Phase Lock Loop (PLL) registers. The BIOS also read the > > > TSN lane registers from Flexible I/O Adapter (FIA) block and provided > > > 10/100/1000Mbps/2.5Gbps information to the stmmac driver. But > > > auto-negotiation between 10/100/1000Mbps and 2.5Gbps is not allowed. > > > The new proposal is to support auto-negotiation between 10/100/1000Mbps > > > and 2.5Gbps . Auto-negotiation between 10, 100, 1000Mbps will use > > > in-band auto negotiation. Auto-negotiation between 10/100/1000Mbps and > > > 2.5Gbps will work as the following proposed flow, the stmmac driver reads > > > the PHY link status registers then identifies the negotiated speed. > > > Based on the speed stmmac driver will identify TSN lane registers from > > > FIA then send IPC command to the Power Management controller (PMC) > > > through PMC driver/API. PMC will act as a proxy to programs the > > > PLL registers. > > > > Have you considered using out of band for all link modes? You might > > end up with a cleaner architecture, and not need any phylink/phylib > > hacks. > > > > Andrew > Hi Andrew, > > After conducting a comprehensive study, it seems that implementing > out-of-band for all link modes might not be feasible. I may have missed some > key aspects during my analysis. You need to provide details of why you think it's not feasible, because you're making those reading your message have to guess. We _do_ have cases where this is already supported. The DM7052 SFP module for example has a BCM84881 PHY on board that has no in-band support, so always has to use out-of-band. This module supports 10G, 5G, 2.5G, 1G, 100M and 10M speeds. It switches its interface between 10G, 2500base-X and SGMII mode. It's been supported in Linux for a while with MAC/PCS that implement phylink _correctly_. I wouldn't call stmmac a proper phylink implementation, especially when it comes to switching between different interfaces. My attempt at starting to clean up the stmmac code was thwarted by niggly review comments (over whether %u or %d should be used to print a _signed integer_ that stmmac stupidly implicitly casts to an unsigned integer. That lead me to decide that stmmac was beyond being cleaned up, so I junked the large patch set of improvements that I had - along with multiple issues that I had found in the driver. Someone else needs to sort stmmac out, and I suspect that may be a pre-requisit for your changes so that stmmac operates _correctly_ with phylink. -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!