> -----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]>
