> -----Original Message-----
> From: Intel-wired-lan <[email protected]> On Behalf Of
> Chwee-Lin Choong
> Sent: Thursday, November 27, 2025 2:49 PM
> To: Nguyen, Anthony L <[email protected]>; Kitszel, Przemyslaw
> <[email protected]>; Andrew Lunn <[email protected]>; David
> S . Miller <[email protected]>; Eric Dumazet <[email protected]>;
> Jakub Kicinski <[email protected]>; Paolo Abeni <[email protected]>; Richard
> Cochran <[email protected]>; Gomes, Vinicius
> <[email protected]>
> Cc: [email protected]; [email protected]; linux-
> [email protected]; Shalev, Avi <[email protected]>; Song, Yoong
> Siang <[email protected]>; Choong, Chwee Lin
> <[email protected]>
> 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 <[email protected]>
> Signed-off-by: Song Yoong Siang <[email protected]>
> Signed-off-by: Chwee-Lin Choong <[email protected]>
> ---
...
> 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 <[email protected]>
> --
> 2.43.0