> -----Original Message----- > From: Pascal Kneuper <[email protected]> > Sent: Thursday, September 10, 2026 4:39 AM > 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]> > Cc: Baldin, Daniel <[email protected]>; [email protected]; > [email protected]; [email protected]; Kneuper, Paskal > <[email protected]> > Subject: [PATCH net 2/2] igb: Quiesce the receive path before enabling i210 > Rx timestamping > > Commit e57b8bdb4833 ("igb: Add 1588 support to I210/I211.") enables > per-packet Rx timestamping by setting RXPBS.CFG_TS_EN with Rx queues running. > On i210/i211, CFG_TS_EN makes the DMA engine prepend a 16-byte timestamp > header to every Rx packet buffer and sets RXDADV_STAT_TSIP in the Rx > descriptor so igb_clean_rx_irq() strips it. > > Setting CFG_TS_EN changes the buffer layout of already-armed descriptors. > Without a pipeline handshake, descriptor status and packet buffer layout > disagree for in-flight packets: > > header inserted, no TSIP -> unstripped, frame shifted 16 bytes right > TSIP set, no header -> 16 bytes stripped, buffer tail appended > > In both cases the Ethernet header is corrupted, causing protocol demux to > drop the frame silently. Because igb_alloc_mapped_page() allocates pages > without __GFP_ZERO, the second case appends uninitialized > memory. > > This occurs reliably on i210/i211 under traffic when requesting hardware > timestamps at runtime, yielding corrupt frames on off-to-on transitions. > > Fix by bracketing the CFG_TS_EN transition with igb_down() and igb_up() when > the interface is running, ensuring the bit is only toggled with Rx queues > stopped. > > Fixes: e57b8bdb4833 ("igb: Add 1588 support to I210/I211.") > Signed-off-by: Pascal Kneuper <[email protected]> > --- > drivers/net/ethernet/intel/igb/igb_ptp.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+)
Tested-by: Alexander Nowlin <[email protected]>
