public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
From: Nicolai Buchwitz <nb@tipi-net.de>
To: Sai Krishna Gajula <saikrishnag@marvell.com>
Cc: netdev@vger.kernel.org, andrew+netdev@lunn.ch,
	claudiu.beznea@tuxon.dev, davem@davemloft.net,
	edumazet@google.com, kuba@kernel.org,
	nicolas.ferre@microchip.com, pabeni@redhat.com,
	linux@armlinux.org.uk, phil@raspberrypi.com
Subject: Re: [PATCH 3/5] net: cadence: macb: implement EEE TX LPI support
Date: Thu, 26 Feb 2026 09:01:03 +0100	[thread overview]
Message-ID: <84890c811e5a8f133595ea8b7ed01e01@tipi-net.de> (raw)
In-Reply-To: <BYAPR18MB373524BEA045174E7E453250A075A@BYAPR18MB3735.namprd18.prod.outlook.com>

On 25.2.2026 18:32, Sai Krishna Gajula wrote:
>> -----Original Message-----
>> From: Nicolai Buchwitz <nb@tipi-net.de>
>> Sent: Wednesday, February 25, 2026 2:46 PM
>> To: netdev@vger.kernel.org
>> Cc: andrew+netdev@lunn.ch; claudiu.beznea@tuxon.dev;
>> davem@davemloft.net; edumazet@google.com; kuba@kernel.org;
>> nicolas.ferre@microchip.com; pabeni@redhat.com; linux@armlinux.org.uk;
>> phil@raspberrypi.com; Nicolai Buchwitz <nb@tipi-net.de>
>> Subject: [PATCH 3/5] net: cadence: macb: implement EEE TX LPI
>> support
>> 

[...]

>> +
>> +static void macb_tx_lpi_schedule(struct macb *bp) {
>> +	if (bp->eee_active)
>> +		mod_delayed_work(system_wq, &bp->tx_lpi_work,
>> +				 usecs_to_jiffies(bp->tx_lpi_timer));
>> +}
>> +
>> +/* Wake from LPI before transmitting. The MAC must deassert TXLPIEN
>> + * and wait for the PHY to exit LPI before any frame can be sent.
>> + * IEEE 802.3az Tw_sys is ~17us for 1000BASE-T, ~30us for 100BASE-TX;
>> + * we use a conservative 50us.
>> + */
>> +static void macb_tx_lpi_wake(struct macb *bp) {
>> +	if (!macb_tx_lpi_set(bp, false))
>> +		return;
>> +
>> +	cancel_delayed_work(&bp->tx_lpi_work);
>> +	udelay(50);
> Any reason the 50µs busy-wait in xmit path? Can it be avoided?
> 

The 50us delay is required by IEEE 802.3az. After clearing TXLPIEN the
PHY needs time to exit LPI and re-establish normal operation before the
MAC can transmit. This is defined as Tw_sys_tx - approximately 16.5us
for 1000BASE-T and 30us for 100BASE-TX. We use a conservative 50us to
cover both speeds without needing to track the current link rate.

Testing without the delay confirmed packet loss on the first frame after
waking from LPI, as the PHY had not yet fully transitioned back to
normal mode.

This delay is specific to the GEM MAC because TXLPIEN directly and
immediately controls LPI with no hardware enforcement of Tw_sys_tx - the
software must enforce it. Other phylink-managed EEE drivers (mvneta,
stmmac, lan743x, mtk) don't need an explicit delay because their
hardware handles the wake timing automatically.

The cost is also bounded: the delay only fires when TXLPIEN was
actually asserted, i.e. on the first transmit after an idle period.

[...]

Nicolai

  reply	other threads:[~2026-02-26  8:01 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-25  9:15 [PATCH net-next v3 0/5] net: cadence: macb: add IEEE 802.3az EEE support Nicolai Buchwitz
2026-02-25  9:15 ` [PATCH 1/5] net: cadence: macb: add EEE register definitions and capability flag Nicolai Buchwitz
2026-02-25 17:26   ` Théo Lebrun
2026-02-26  1:49     ` Jakub Kicinski
2026-02-25  9:15 ` [PATCH 2/5] net: cadence: macb: add EEE LPI statistics counters Nicolai Buchwitz
2026-02-25  9:15 ` [PATCH 3/5] net: cadence: macb: implement EEE TX LPI support Nicolai Buchwitz
2026-02-25 17:32   ` Sai Krishna Gajula
2026-02-26  8:01     ` Nicolai Buchwitz [this message]
2026-02-25 17:42   ` Théo Lebrun
2026-02-25 17:50     ` Russell King (Oracle)
2026-02-26  9:52       ` Théo Lebrun
2026-02-26 10:49         ` Nicolai Buchwitz
2026-02-26 13:50           ` Théo Lebrun
2026-02-27  9:00             ` Nicolai Buchwitz
2026-02-27 14:39               ` Théo Lebrun
2026-02-25  9:15 ` [PATCH 4/5] net: cadence: macb: add ethtool EEE support Nicolai Buchwitz
2026-02-25  9:15 ` [PATCH 5/5] net: cadence: macb: enable EEE for Raspberry Pi RP1 Nicolai Buchwitz
2026-02-25 10:56 ` [PATCH net-next v3 0/5] net: cadence: macb: add IEEE 802.3az EEE support Nicolai Buchwitz

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=84890c811e5a8f133595ea8b7ed01e01@tipi-net.de \
    --to=nb@tipi-net.de \
    --cc=andrew+netdev@lunn.ch \
    --cc=claudiu.beznea@tuxon.dev \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=kuba@kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=netdev@vger.kernel.org \
    --cc=nicolas.ferre@microchip.com \
    --cc=pabeni@redhat.com \
    --cc=phil@raspberrypi.com \
    --cc=saikrishnag@marvell.com \
    /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