Skip to content

Commit

Permalink
ice: reschedule ice_ptp_wait_for_offset_valid during reset
Browse files Browse the repository at this point in the history
If the ice_ptp_wait_for_offest_valid function is scheduled to run while the
driver is resetting, it will exit without completing calibration. The work
function gets scheduled by ice_ptp_port_phy_restart which will be called as
part of the reset recovery process.

It is possible for the first execution to occur before the driver has
completely cleared its resetting flags. Ensure calibration completes by
rescheduling the task until reset is fully completed.

Reported-by: Siddaraju DH <siddaraju.dh@intel.com>
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Gurucharan G <gurucharanx.g@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
  • Loading branch information
Jacob Keller authored and Tony Nguyen committed Dec 8, 2022
1 parent f029a34 commit 95af1f1
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion drivers/net/ethernet/intel/ice/ice_ptp.c
Original file line number Diff line number Diff line change
Expand Up @@ -1240,8 +1240,13 @@ static void ice_ptp_wait_for_offsets(struct kthread_work *work)
pf = ptp_port_to_pf(port);
hw = &pf->hw;

if (ice_is_reset_in_progress(pf->state))
if (ice_is_reset_in_progress(pf->state)) {
/* wait for device driver to complete reset */
kthread_queue_delayed_work(pf->ptp.kworker,
&port->ov_work,
msecs_to_jiffies(100));
return;
}

tx_err = ice_ptp_check_tx_fifo(port);
if (!tx_err)
Expand Down

0 comments on commit 95af1f1

Please sign in to comment.