[Intel-wired-lan] [PATCH iwl-net v2] igc: fix race condition in TX timestamp read for register 0

Loktionov, Aleksandr aleksandr.loktionov at intel.com
Thu Nov 27 06:52:08 UTC 2025



> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces at osuosl.org> On Behalf Of
> Chwee-Lin Choong
> Sent: Thursday, November 27, 2025 2:49 PM
> To: Nguyen, Anthony L <anthony.l.nguyen at intel.com>; Kitszel, Przemyslaw
> <przemyslaw.kitszel at intel.com>; Andrew Lunn <andrew+netdev at lunn.ch>; David
> S . Miller <davem at davemloft.net>; Eric Dumazet <edumazet at google.com>;
> Jakub Kicinski <kuba at kernel.org>; Paolo Abeni <pabeni at redhat.com>; Richard
> Cochran <richardcochran at gmail.com>; Gomes, Vinicius
> <vinicius.gomes at intel.com>
> Cc: intel-wired-lan at lists.osuosl.org; netdev at vger.kernel.org; linux-
> kernel at vger.kernel.org; Shalev, Avi <avi.shalev at intel.com>; Song, Yoong
> Siang <yoong.siang.song at intel.com>; Choong, Chwee Lin
> <chwee.lin.choong at intel.com>
> Subject: [Intel-wired-lan] [PATCH iwl-net v2] igc: fix race condition in
> TX timestamp read for register 0
> 
> The current HW bug workaround checks the TXTT_0 ready bit first, then
> reads TXSTMPL_0 twice (before and after reading TXSTMPH_0) to detect
> whether a new timestamp was captured by timestamp register 0 during the
> workaround.
> 
> This sequence has a race: if a new timestamp is captured after checking
> the TXTT_0 bit but before the first TXSTMPL_0 read, the detection fails
> because both the “old” and “new” values come from the same timestamp.
> 
> Fix by reading TXSTMPL_0 first to establish a baseline, then checking the
> TXTT_0 bit. This ensures any timestamp captured during the race window
> will be detected.
> 
> Old sequence:
>   1. Check TXTT_0 ready bit
>   2. Read TXSTMPL_0 (baseline)
>   3. Read TXSTMPH_0 (interrupt workaround)
>   4. Read TXSTMPL_0 (detect changes vs baseline)
> 
> New sequence:
>   1. Read TXSTMPL_0 (baseline)
>   2. Check TXTT_0 ready bit
>   3. Read TXSTMPH_0 (interrupt workaround)
>   4. Read TXSTMPL_0 (detect changes vs baseline)
> 
> Fixes: c789ad7cbebc ("igc: Work around HW bug causing missing timestamps")
> Suggested-by: Avi Shalev <avi.shalev at intel.com>
> Signed-off-by: Song Yoong Siang <yoong.siang.song at intel.com>
> Signed-off-by: Chwee-Lin Choong <chwee.lin.choong at intel.com>
> ---

...

>  export                                   |  0
>  2 files changed, 25 insertions(+), 18 deletions(-)  create mode 100644
> export
> 

...

>  	for (i = 1; i < IGC_MAX_TX_TSTAMP_REGS; i++) { diff --git a/export
> b/export new file mode 100644 index 000000000000..e69de29bb2d1
Please drop this unrelated file from the patch.
Everything else looks good for me.

Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov at intel.com>

> --
> 2.43.0



More information about the Intel-wired-lan mailing list