From: Jacob Keller <jacob.e.keller@intel.com>
To: Intel Wired LAN <intel-wired-lan@lists.osuosl.org>
Cc: netdev@vger.kernel.org,
Maciej Machnikowski <maciej.machnikowski@intel.com>,
Anthony Nguyen <anthony.l.nguyen@intel.com>,
Przemyslaw Korba <przemyslaw.korba@intel.com>,
Grzegorz Nitka <grzegorz.nitka@intel.com>,
Petr Oros <poros@redhat.com>,
alexander.nowlin@intel.com, kevin.bross@intel.com,
ranjit.cavatur@intel.com,
Jacob Keller <jacob.e.keller@intel.com>,
Maciej Machnikowski <maciej.machnikowski@intel.com>
Subject: [PATCH iwl-net v2 07/14] ice: E825: stop clearing PHY_REG_TX_OFFSET_READY
Date: Tue, 25 Aug 2026 15:53:31 -0700 [thread overview]
Message-ID: <20260825-jk-e825c-minimized-fixes-v2-7-8223f95d26e3@intel.com> (raw)
In-Reply-To: <20260825-jk-e825c-minimized-fixes-v2-0-8223f95d26e3@intel.com>
The ice_stop_phy_timer_eth56g() function is called by the driver for E825
devices to ensure that the PHY timer has been stopped. The equivalent
function for older E822 devices performed many steps. However, on E825 it
only clears the PHY_REG_TX_OFFSET_READY and PHY_REG_RX_OFFSET_READY bits to
indicate to HW that it should no longer treat the PHY offset as valid.
When PHY_REG_TX_OFFSET_READY is cleared, the hardware still captures Tx
timestamps, but it no longer sets the valid bit for these timestamps. This
sounds reasonable at first glance. However, this results in the internal
outstanding timestamp counter becoming out of sync.
When capturing a timestamp, hardware increments its internal counter and
sets the associated "ready" bit in the timestamp memory status. Then it
compares the timestamp count to the threshold to determine if it should
trigger an interrupt to the MAC.
Upon reading the timestamp hardware is supposed to decrement the counter,
clear the valid bit, and clear the associated bit from the memory status
register. However, it only performs these steps *if* the valid bit is set.
Since the valid bit is not set while PHY_REG_TX_OFFSET_READY is clear, the
timestamp counter is not decremented and the memory status is not cleared.
This leaves the counter out-of-sync until a PHY soft reset.
According to the hardware engineers, the PHY_REG_TX_OFFSET_READY bit has no
other effects. It only controls whether hardware captures timestamps with
the valid bit set or not. Since capturing timestamps with the valid bit
clear is problematic, they recommend simply not clearing
PHY_REG_TX_OFFSET_READY.
Note that the PHY_REG_RX_OFFSET_READY performs a similar task. However,
clearing it is fine as there is no associated timestamp counter on the Rx
side. Receive timestamps are simply inserted into the descriptor. Clearing
this register clears the valid bit for timestamps until we complete
calibration and re-enable the register.
Fixes: 7cab44f1c35f ("ice: Introduce ETH56G PHY model for E825C products")
Suggested-by: Maciej Machnikowski <maciej.machnikowski@intel.com>
Tested-by: Alexander Nowlin <alexander.nowlin@intel.com>
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
---
drivers/net/ethernet/intel/ice/ice_ptp_hw.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/drivers/net/ethernet/intel/ice/ice_ptp_hw.c b/drivers/net/ethernet/intel/ice/ice_ptp_hw.c
index 3a41c711e751..d48eb3c61823 100644
--- a/drivers/net/ethernet/intel/ice/ice_ptp_hw.c
+++ b/drivers/net/ethernet/intel/ice/ice_ptp_hw.c
@@ -2115,10 +2115,6 @@ int ice_stop_phy_timer_eth56g(struct ice_hw *hw, u8 port, bool soft_reset)
{
int err;
- err = ice_write_ptp_reg_eth56g(hw, port, PHY_REG_TX_OFFSET_READY, 0);
- if (err)
- return err;
-
err = ice_write_ptp_reg_eth56g(hw, port, PHY_REG_RX_OFFSET_READY, 0);
if (err)
return err;
--
2.55.0.814.gc42f45431d0f
next prev parent reply other threads:[~2026-08-25 22:55 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-25 22:53 [PATCH iwl-net v2 00/14] ice: E82x: timestamp processing logic fixes Jacob Keller
2026-08-25 22:53 ` [PATCH iwl-net v2 01/14] ice: use reference counting and RCU for PTP port access Jacob Keller
2026-08-25 22:53 ` [PATCH iwl-net v2 02/14] ice: fix removal of PTP timestamp tracker during reset Jacob Keller
2026-08-25 22:53 ` [PATCH iwl-net v2 03/14] ice: set in_use only after preparing Tx timestamp index Jacob Keller
2026-08-25 22:53 ` [PATCH iwl-net v2 04/14] ice: E822: keep Tx timestamps disabled during offset calibration Jacob Keller
2026-08-25 22:53 ` [PATCH iwl-net v2 05/14] ice: E822: cancel offset verification work during reset preparation Jacob Keller
2026-08-25 22:53 ` [PATCH iwl-net v2 06/14] ice: call PTP link change only from link events Jacob Keller
2026-08-25 22:53 ` Jacob Keller [this message]
2026-08-25 22:53 ` [PATCH iwl-net v2 08/14] ice: E825: clear PHY_REG_TX_MEMORY_STATUS prior to soft reset Jacob Keller
2026-08-25 22:53 ` [PATCH iwl-net v2 09/14] ice: E825: perform a soft reset when starting the PHY timer Jacob Keller
2026-08-25 22:53 ` [PATCH iwl-net v2 10/14] ice: wait for in-flight Tx timestamps before flushing the tracker Jacob Keller
2026-08-25 22:53 ` [PATCH iwl-net v2 11/14] ice: keep Tx timestamp slots tracked until completion or timeout Jacob Keller
2026-08-25 22:53 ` [PATCH iwl-net v2 12/14] ice: remove unnecessary discarding of timestamps after clock adjust Jacob Keller
2026-08-25 22:53 ` [PATCH iwl-net v2 13/14] ice: skip reading Tx ready bitmap on ports with no timestamps Jacob Keller
2026-08-25 22:53 ` [PATCH iwl-net v2 14/14] ice: don't clear in_use until HW clears ready bitmap Jacob Keller
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=20260825-jk-e825c-minimized-fixes-v2-7-8223f95d26e3@intel.com \
--to=jacob.e.keller@intel.com \
--cc=alexander.nowlin@intel.com \
--cc=anthony.l.nguyen@intel.com \
--cc=grzegorz.nitka@intel.com \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=kevin.bross@intel.com \
--cc=maciej.machnikowski@intel.com \
--cc=netdev@vger.kernel.org \
--cc=poros@redhat.com \
--cc=przemyslaw.korba@intel.com \
--cc=ranjit.cavatur@intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox