public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
From: Andrew Lunn <andrew@lunn.ch>
To: Nicolai Buchwitz <nb@tipi-net.de>
Cc: netdev@vger.kernel.org, Russell King <linux@armlinux.org.uk>
Subject: Re: RFC: phylink: disable PHY autonomous EEE when MAC manages LPI
Date: Wed, 1 Apr 2026 00:56:08 +0200	[thread overview]
Message-ID: <04ff15af-26be-4278-bc2a-889e7802d271@lunn.ch> (raw)
In-Reply-To: <d86c53213a6328b701b8aabbde5d1c83@tipi-net.de>

On Tue, Mar 31, 2026 at 11:27:20PM +0200, Nicolai Buchwitz wrote:
> Hi
> 
> Some PHYs (e.g. Broadcom BCM54xx "AutogrEEEn") manage EEE LPI
> autonomously without forwarding LPI signaling to the MAC. This works
> fine when the MAC doesn't support EEE, but conflicts with MACs that
> implement their own LPI control via phylink's mac_enable_tx_lpi /
> mac_disable_tx_lpi.
> 
> When the MAC has lpi_capabilities set, the PHY should use Native EEE
> mode so the MAC can control LPI entry/exit and observe RX LPI
> transitions.
> 
> I'm thinking of a flag on phy_device (similar to mac_managed_pm) that
> phylink sets when the MAC has lpi_capabilities, and that PHY drivers
> check in config_init to disable their autonomous EEE mode:
> 
>   /* set by phylink when MAC manages LPI */
>   phydev->mac_managed_lpi = true;
> 
>   /* in bcm54xx_config_init: */
>   if (phydev->mac_managed_lpi)
>       bcm_phy_modify_exp(phydev, MII_BUF_CNTL0,
>                          AUTOGREEEN_EN, 0);
> 
> This came up while adding EEE support to the Cadence macb driver (used
> on Raspberry Pi 5 with a BCM54210PE PHY). The PHY's AutogrEEEn mode
> prevented the MAC from tracking LPI state. As a workaround, the
> Raspberry Pi tree currently carries a downstream patch that
> unconditionally disables AutogrEEEn for all BCM54xx PHYs, since both
> genet and macb now support EEE properly. That's obviously not suitable
> for upstream where other MACs paired with BCM54xx may not have LPI
> support.
> 
> Does this seem like a reasonable approach, or is there a better way to
> handle PHY autonomous EEE within phylink?

You should also think about it from the other direction. What happens
with the MAC does not indicate it supports EEE, but the PHY has
autonomous EEE. At some point in the future we are going to want the
PHY drivers to export API calls so that phylink/phylib can implement
ethtool set_eee and get_eee using this autonomous EEE.

Maybe it makes more sense for Broadcom BCM54xx etc, to implement a
.set_eee() call which only accepts eee_enable == False, and when
called so, disables autonomous EEE. .get_eee() can similarly return
that EEE is disabled. When phylink sees the MAC implements EEE it can
calll into the PHY driver to turn off autonomous EEE. And we have a
path to later add support for turning on and fully configuring
autonomous EEE.

     Andrew

  reply	other threads:[~2026-03-31 22:56 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-31 21:27 RFC: phylink: disable PHY autonomous EEE when MAC manages LPI Nicolai Buchwitz
2026-03-31 22:56 ` Andrew Lunn [this message]
2026-04-01  7:43   ` Russell King (Oracle)
2026-04-01 12:12     ` Nicolai Buchwitz
2026-04-01 12:48       ` Russell King (Oracle)
2026-04-01 13:11       ` Andrew Lunn
2026-04-01 15:05         ` Russell King (Oracle)
2026-04-01 15:38           ` Andrew Lunn
2026-04-01 16:02             ` Russell King (Oracle)
2026-04-02  7:53               ` Nicolai Buchwitz
2026-04-02 12:32                 ` Russell King (Oracle)
2026-04-02 13:32                   ` Andrew Lunn

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=04ff15af-26be-4278-bc2a-889e7802d271@lunn.ch \
    --to=andrew@lunn.ch \
    --cc=linux@armlinux.org.uk \
    --cc=nb@tipi-net.de \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox