[PATCH] ice/ptp: fix crosstimestamp reporting

Markus Blöchl posted 1 patch 2 months, 1 week ago
There is a newer version of this series
drivers/net/ethernet/intel/ice/ice_ptp.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] ice/ptp: fix crosstimestamp reporting
Posted by Markus Blöchl 2 months, 1 week ago
From: Anton Nadezhdin <anton.nadezhdin@intel.com>

commit a5a441ae283d upstream.

Set use_nsecs=true as timestamp is reported in ns. Lack of this result
in smaller timestamp error window which cause error during phc2sys
execution on E825 NICs:
phc2sys[1768.256]: ioctl PTP_SYS_OFFSET_PRECISE: Invalid argument

This problem was introduced in the cited commit which omitted setting
use_nsecs to true when converting the ice driver to use
convert_base_to_cs().

Testing hints (ethX is PF netdev):
phc2sys -s ethX -c CLOCK_REALTIME  -O 37 -m
phc2sys[1769.256]: CLOCK_REALTIME phc offset -5 s0 freq      -0 delay    0

Fixes: d4bea547ebb57 ("ice/ptp: Remove convert_art_to_tsc()")
Signed-off-by: Anton Nadezhdin <anton.nadezhdin@intel.com>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Reviewed-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Tested-by: Rinitha S <sx.rinitha@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Signed-off-by: Markus Blöchl <markus@blochl.de>
---
Hi Greg,

please consider this backport for linux-6.12.y

It fixes a regression from the series around
d4bea547ebb57 ("ice/ptp: Remove convert_art_to_tsc()")
which affected multiple drivers and occasionally
caused phc2sys to fail on ioctl(fd, PTP_SYS_OFFSET_PRECISE, ...).

This was the initial fix for ice but apparently tagging it
for stable was forgotten during submission.

The hunk was moved around slightly in the upstream commit 
92456e795ac6 ("ice: Add unified ice_capture_crosststamp")
from ice_ptp_get_syncdevicetime() into another helper function
ice_capture_crosststamp() so its indentation and context have changed.
I adapted it to apply cleanly.
---
 drivers/net/ethernet/intel/ice/ice_ptp.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/intel/ice/ice_ptp.c b/drivers/net/ethernet/intel/ice/ice_ptp.c
index 7c6f81beaee4602050b4cf366441a2584507d949..369c968a0117d0f7012241fd3e2c0a45a059bfa4 100644
--- a/drivers/net/ethernet/intel/ice/ice_ptp.c
+++ b/drivers/net/ethernet/intel/ice/ice_ptp.c
@@ -2226,6 +2226,7 @@ ice_ptp_get_syncdevicetime(ktime_t *device,
 			hh_ts = ((u64)hh_ts_hi << 32) | hh_ts_lo;
 			system->cycles = hh_ts;
 			system->cs_id = CSID_X86_ART;
+			system->use_nsecs = true;
 			/* Read Device source clock time */
 			hh_ts_lo = rd32(hw, GLTSYN_HHTIME_L(tmr_idx));
 			hh_ts_hi = rd32(hw, GLTSYN_HHTIME_H(tmr_idx));

---
base-commit: d90ecb2b1308b3e362ec4c21ff7cf0a051b445df
change-id: 20250716-ice_crosstimestamp_reporting-b6236a246c48

Best regards,
-- 
Markus Blöchl <markus@blochl.de>


-- 
Re: [PATCH] ice/ptp: fix crosstimestamp reporting
Posted by Greg KH 1 month, 1 week ago
On Fri, Jul 25, 2025 at 10:33:31PM +0200, Markus Blöchl wrote:
> From: Anton Nadezhdin <anton.nadezhdin@intel.com>
> 
> commit a5a441ae283d upstream.
> 
> Set use_nsecs=true as timestamp is reported in ns. Lack of this result
> in smaller timestamp error window which cause error during phc2sys
> execution on E825 NICs:
> phc2sys[1768.256]: ioctl PTP_SYS_OFFSET_PRECISE: Invalid argument
> 
> This problem was introduced in the cited commit which omitted setting
> use_nsecs to true when converting the ice driver to use
> convert_base_to_cs().
> 
> Testing hints (ethX is PF netdev):
> phc2sys -s ethX -c CLOCK_REALTIME  -O 37 -m
> phc2sys[1769.256]: CLOCK_REALTIME phc offset -5 s0 freq      -0 delay    0
> 
> Fixes: d4bea547ebb57 ("ice/ptp: Remove convert_art_to_tsc()")
> Signed-off-by: Anton Nadezhdin <anton.nadezhdin@intel.com>
> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
> Reviewed-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
> Tested-by: Rinitha S <sx.rinitha@intel.com>
> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
> Signed-off-by: Markus Blöchl <markus@blochl.de>
> ---
> Hi Greg,
> 
> please consider this backport for linux-6.12.y
> 
> It fixes a regression from the series around
> d4bea547ebb57 ("ice/ptp: Remove convert_art_to_tsc()")
> which affected multiple drivers and occasionally
> caused phc2sys to fail on ioctl(fd, PTP_SYS_OFFSET_PRECISE, ...).
> 
> This was the initial fix for ice but apparently tagging it
> for stable was forgotten during submission.
> 
> The hunk was moved around slightly in the upstream commit 
> 92456e795ac6 ("ice: Add unified ice_capture_crosststamp")
> from ice_ptp_get_syncdevicetime() into another helper function
> ice_capture_crosststamp() so its indentation and context have changed.
> I adapted it to apply cleanly.
> ---
>  drivers/net/ethernet/intel/ice/ice_ptp.c | 1 +
>  1 file changed, 1 insertion(+)

This is already in the 6.12.42 release, so we don't need to apply it
again, right?

thanks,
greg k-h