Re: RFC: phylink: disable PHY autonomous EEE when MAC manages LPI

Andrew Lunn
2026-04-01T15:38:32Z

On Wed, Apr 01, 2026 at 04:05:32PM +0100, Russell King (Oracle) wrote:
> On Wed, Apr 01, 2026 at 03:11:24PM +0200, Andrew Lunn wrote:
> > > Thanks Russell and Andrew. You're both heading in the same direction,
> > > so to make sure I understand correctly:
> > >
> > > 1. Add a new phylib interface (separate from phy_ethtool_set_eee) to
> > > control PHY-autonomous EEE, e.g. phy_set_autonomous_eee(phydev,
> > > enable) and phy_get_autonomous_eee(phydev) to query the current
> > > state.
> >
> > In the end, we want the MAC driver using phylib to just call the
> > phylib methods for configuring EEE, and the MAC driver should not care
> > if EEE is actually implemented in the PHY or the MAC. The adjust_link
> > callback would simply not enable LPI if the PHY is doing EEE.
>
> This won't work.
>
> If we mask out eee.tx_lpi_enabled when calling into phylib to tell
> phylib drivers to disable SmartEEE (that's what I'm calling it here
> because it's easier to type)),

We need phylib to handle some state information. Are we doing MAC EEE
or SmartEEE? We can then set phydev->enable_tx_lpi == True to indicate
if the MAC should be sending LPI indications, if and only if the
phylib knows we are doing MAC EEE and it should be enabled because the
user said so.

then phylib records that tx_lpi_enabled
> was false. This then makes the following in phy_check_link_status():
>
> phydev->enable_tx_lpi = phydev->eee_cfg.tx_lpi_enabled &&
> phydev->eee_active;

Which will need to change to take into account the state information.

However, i think this is down the road. If the MAC driver calls
phy_support_eee(), we should call the SmartEEE disable method of the
PHY driver. When we add support for SmartEEE then we need this
additional state information.

Andrew