summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel
diff options
context:
space:
mode:
authorJacob Keller <jacob.e.keller@intel.com>2022-12-05 11:52:53 -0800
committerTony Nguyen <anthony.l.nguyen@intel.com>2022-12-08 13:15:03 -0800
commit95af1f1c4c9f9f08bbdb40812248b7bc5868a1da (patch)
treec67a2b45026775df646972ad57670a65b1c7d32e /drivers/net/ethernet/intel
parentf029a34394e7239f4111507b402ab234f990ec94 (diff)
downloadlinux-95af1f1c4c9f9f08bbdb40812248b7bc5868a1da.tar.bz2
ice: reschedule ice_ptp_wait_for_offset_valid during reset
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>
Diffstat (limited to 'drivers/net/ethernet/intel')
-rw-r--r--drivers/net/ethernet/intel/ice/ice_ptp.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/ethernet/intel/ice/ice_ptp.c b/drivers/net/ethernet/intel/ice/ice_ptp.c
index 7b5120906d3f..d63161d73eb1 100644
--- a/drivers/net/ethernet/intel/ice/ice_ptp.c
+++ b/drivers/net/ethernet/intel/ice/ice_ptp.c
@@ -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)