From: Linkui Xiao <xiaolinkui@126.com>
To: anthony.l.nguyen@intel.com, przemyslaw.kitszel@intel.com,
andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@kernel.org,
kuba@kernel.org, pabeni@redhat.com
Cc: intel-wired-lan@lists.osuosl.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, Linkui Xiao <xiaolinkui@kylinos.cn>,
stable@vger.kernel.org
Subject: [PATCH net 2/5] e1000e: do not cache the hwtstamp config before it is applied
Date: Wed, 28 Oct 2026 17:04:55 +0800 [thread overview]
Message-ID: <20261028090455.2291659-1-xiaolinkui@126.com> (raw)
From: Linkui Xiao <xiaolinkui@kylinos.cn>
e1000e_config_hwtstamp() stores the requested configuration in
adapter->hwtstamp_config right after the rx filter has been
translated, but the two register writes that follow are verified by
reading the registers back and each of them can fail with -EAGAIN.
When one of them does, the driver is left holding a configuration the
hardware never accepted:
- e1000e_hwtstamp_get() hands it back to user space, so an
application that reads the configuration back is told that
hardware time stamping is in effect while it is not;
- e1000e_systim_reset() re-applies it after every reset, including
the ones the watchdog triggers, and keeps failing;
- e1000_watchdog() starts polling TSYNCRXCTL_VALID for the cached rx
filter, and e1000_xmit_frame() still parks skbs that ask for a Tx
time stamp because it only looks at FLAG_HAS_HW_TIMESTAMP, so they
are eventually dropped by e1000e_tx_hwtstamp_work() with a
"clearing Tx timestamp hang" warning.
Cache the configuration only once both registers have been verified,
so that adapter->hwtstamp_config always describes what the hardware
is programmed with.
Fixes: 62d7e3a2d006 ("e1000e: Validate hwtstamp_config completely before applying it")
Cc: stable@vger.kernel.org
Signed-off-by: Linkui Xiao <xiaolinkui@kylinos.cn>
---
drivers/net/ethernet/intel/e1000e/netdev.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index 35f5590228eb..7ae33273734f 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -3715,8 +3715,6 @@ static int e1000e_config_hwtstamp(struct e1000_adapter *adapter,
return -ERANGE;
}
- adapter->hwtstamp_config = *config;
-
/* enable/disable Tx h/w time stamping */
regval = er32(TSYNCTXCTL);
regval &= ~E1000_TSYNCTXCTL_ENABLED;
@@ -3763,6 +3761,8 @@ static int e1000e_config_hwtstamp(struct e1000_adapter *adapter,
er32(RXSTMPH);
er32(TXSTMPH);
+ adapter->hwtstamp_config = *config;
+
return 0;
}
--
2.25.1
next reply other threads:[~2026-10-28 9:05 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-28 9:04 Linkui Xiao [this message]
2026-10-28 18:32 ` [PATCH net 2/5] e1000e: do not cache the hwtstamp config before it is applied Loktionov, Aleksandr
2026-10-28 22:12 ` Vadim Fedorenko
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=20261028090455.2291659-1-xiaolinkui@126.com \
--to=xiaolinkui@126.com \
--cc=andrew+netdev@lunn.ch \
--cc=anthony.l.nguyen@intel.com \
--cc=davem@davemloft.net \
--cc=edumazet@kernel.org \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=przemyslaw.kitszel@intel.com \
--cc=stable@vger.kernel.org \
--cc=xiaolinkui@kylinos.cn \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.