> -----Original Message-----
> From: Jacob Keller <[email protected]> 
> Sent: Friday, September 25, 2026 4:57 PM
> To: Intel Wired LAN <[email protected]>; Machnikowski, Maciej 
> <[email protected]>; Keller, Jacob E <[email protected]>; 
> Korba, Przemyslaw <[email protected]>; Nguyen, Anthony L 
> <[email protected]>; Nitka, Grzegorz <[email protected]>; 
> Kubalewski, Arkadiusz <[email protected]>
> Cc: Keller, Jacob E <[email protected]>; Loktionov, Aleksandr 
> <[email protected]>; Kubalewski, Arkadiusz 
> <[email protected]>; Korba, Przemyslaw 
> <[email protected]>
> Subject: [PATCH iwl-net v3 06/15] ice: E822: keep Tx timestamps disabled 
> during offset calibration
> 
> From: Karol Kolacinski <[email protected]>
> 
> Do not clear the tx.calibrating flag immediately after starting the PHY timer 
> in ice_ptp_port_phy_restart(). Instead, keep Tx timestamps disabled until the 
> offset verification work (ice_ptp_wait_for_offsets) has confirmed that the Tx 
> PHY offset is properly configured.
> 
> Previously, tx.calibrating was set to true, then immediately back to false 
> right after ice_start_phy_timer_e82x() returned. This allowed Tx timestamp 
> requests to be served during the window where offset verification was still 
> pending. Timestamps produced during this window should have their valid bit 
> cleared, but it is better to prevent requests until the driver has confirmed 
> calibration is complete.
> 
> Move the tx.calibrating = false to ice_ptp_wait_for_offsets(), after Tx 
> offset configuration has completed successfully. This ensures that new Tx 
> timestamp requests are only accepted after the PHY has properly calibrated 
> the Tx offset.
> 
> If ice_start_phy_timer_e82x() fails, do not restore calibrating to false.
> The device is in a state where timestamps cannot succeed properly anyways.
> A dev_err message is already logged on failure to start the timer at the end 
> of the function.
> 
> Log a debug message while offset calibration is still pending, including the 
> specific Tx/Rx error codes to aid debugging stalled calibration.
> This path is expected on every routine link-up: ov_work is first queued with 
> no delay and the vernier offset cannot be computed until at least one packet 
> has been transmitted, so the first several invocations normally land here. 
> Use dev_dbg() rather than a rate-limited warning to avoid emitting 
> KERN_WARNING on every link-up during normal operation.
> Log a debug message when calibration completes successfully.
> 
> Note that sashiko review has previously complained that leaving the 
> calibrating flag enabled "permanently" disables Tx timestamps if vernier 
> calibration never completes. This is true, but its important to realize that 
> timestamps would still fail regardless of whether the flag is set.
> Until vernier calibration completes the device will not report valid 
> timestamps regardless. Thus, keeping the calibrating flag set simply prevents 
> new timestamp requests from software while it is known that the hardware will 
> not complete them.
> 
> Fixes: 3a7496234d17 ("ice: implement basic E822 PTP support")
> Signed-off-by: Karol Kolacinski <[email protected]>
> Reviewed-by: Aleksandr Loktionov <[email protected]>
> Signed-off-by: Arkadiusz Kubalewski <[email protected]>
> Signed-off-by: Przemyslaw Korba <[email protected]>
> Signed-off-by: Jacob Keller <[email protected]>
> ---
>  drivers/net/ethernet/intel/ice/ice_ptp.h |  2 +-  
> drivers/net/ethernet/intel/ice/ice_ptp.c | 29 +++++++++++++++++++++++------
>  2 files changed, 24 insertions(+), 7 deletions(-)

Tested-by: Alexander Nowlin <[email protected]>

Reply via email to