[PATCH net 1/2] igb: Preserve RXPBS.CFG_TS_EN in igb_setup_tx_mode

From: Pascal Kneuper

Date: Thu Sep 10 2026 - 07:51:10 EST


Commit 05f9d3e1ae6e ("igb: Add support for CBS offload") restores the i210
Rx packet buffer size with an unmasked write to RXPBS. Bit 31 of RXPBS is
CFG_TS_EN, which enables per-packet Rx timestamping. Writing the register
unconditionally clears this bit on every igb_up() (link down/up, MTU
change, or driver reset).

Like other drivers (igc, i40e, ice), igb intends timestamping settings to
persist across link changes: igb_reset() calls igb_ptp_reset() to re-apply
tstamp_config and set CFG_TS_EN with queues stopped. igb_up() then clears
it immediately afterwards, undoing its own restore.

igb_ptp_hwtstamp_get() returns cached settings and never reads the
register, masking the fallback to software timestamps. On an i210, a link
flap increases PTP path delay from <1us to tens of microseconds.

Fix by masking the buffer size field, as the FQTSS branch already does.

Fixes: 05f9d3e1ae6e ("igb: Add support for CBS offload")
Signed-off-by: Pascal Kneuper <PKneuper@xxxxxxxxx>
---
drivers/net/ethernet/intel/igb/igb_main.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index d4a897a8c82c6..0f3c728a07fb1 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -1947,7 +1947,12 @@ static void igb_setup_tx_mode(struct igb_adapter *adapter)
igb_config_tx_modes(adapter, i);
}
} else {
- wr32(E1000_RXPBS, I210_RXPBSIZE_DEFAULT);
+ /* Preserve RXPBS.CFG_TS_EN so Rx timestamping settings
+ * persist across link changes.
+ */
+ val = rd32(E1000_RXPBS) & E1000_RXPBS_CFG_TS_EN;
+ wr32(E1000_RXPBS, val | I210_RXPBSIZE_DEFAULT);
+
wr32(E1000_TXPBS, I210_TXPBSIZE_DEFAULT);
wr32(E1000_I210_DTXMXPKTSZ, I210_DTXMXPKTSZ_DEFAULT);

--
2.47.3