[PATCH net-next 0/9] net: add phylink managed EEE support

Jiawen Wu jiawenwu at trustnetic.com
Fri Jan 17 00:56:34 PST 2025


> Hi,
> 
> Adding managed EEE support to phylink has been on the cards ever since
> the idea in phylib was mooted. This overly large series attempts to do
> so. I've included all the patches as it's important to get the driver
> patches out there.
> 
> Patch 1 adds a definition for the clock stop capable bit in the PCS
> MMD status register.
> 
> Patch 2 adds a phylib API to query whether the PHY allows the transmit
> xMII clock to be stopped while in LPI mode. This capability is for MAC
> drivers to save power when LPI is active, to allow them to stop their
> transmit clock.
> 
> Patch 3 extracts a phylink internal helper for determining whether the
> link is up.
> 
> Patch 4 adds basic phylink managed EEE support. Two new MAC APIs are
> added, to enable and disable LPI. The enable method is passed the LPI
> timer setting which it is expected to program into the hardware, and
> also a flag ehther the transmit clock should be stopped.
> 
> I have taken the decision to make enable_tx_lpi() to return an error
> code, but not do much with it other than report it - the intention
> being that we can later use it to extend functionality if needed
> without reworking loads of drivers.
> 
> I have also dropped the validation/limitation of the LPI timer, and
> left that in the driver code prior to calling phylink_ethtool_set_eee().
> 
> The remainder of the patches convert mvneta, lan743x and stmmac, and
> add support for mvneta.
> 
> Since yesterday's RFC:
> - fixed the mvpp2 GENMASK()
> - dropped the DSA patch
> - changed how phylink restricts EEE advertisement, and the EEE support
>   reported to userspace which fixes a bug.
> 
>  drivers/net/ethernet/marvell/mvneta.c             | 107 ++++++++++------
>  drivers/net/ethernet/marvell/mvpp2/mvpp2.h        |   5 +
>  drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c   |  86 +++++++++++++
>  drivers/net/ethernet/microchip/lan743x_ethtool.c  |  21 ---
>  drivers/net/ethernet/microchip/lan743x_main.c     |  46 ++++++-
>  drivers/net/ethernet/microchip/lan743x_main.h     |   1 -
>  drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |  57 +++++++--
>  drivers/net/phy/phy.c                             |  20 +++
>  drivers/net/phy/phylink.c                         | 149 ++++++++++++++++++++--
>  include/linux/phy.h                               |   1 +
>  include/linux/phylink.h                           |  45 +++++++
>  include/uapi/linux/mdio.h                         |   1 +
>  12 files changed, 446 insertions(+), 93 deletions(-)

Hi Russell,

Since merging these patches, phylink_connect_phy() can no longer be
invoked correctly in ngbe_open(). The error is returned from the function
phy_eee_rx_clock_stop(). Since EEE is not supported on our NGBE hardware.

How should I modify the ngbe driver to meet this change?

Thanks.






More information about the linux-arm-kernel mailing list