提交 95af1f1c 编写于 作者: J Jacob Keller 提交者: Tony Nguyen

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: NSiddaraju DH <siddaraju.dh@intel.com>
Signed-off-by: NJacob Keller <jacob.e.keller@intel.com>
Tested-by: Gurucharan G <gurucharanx.g@intel.com> (A Contingent worker at Intel)
Signed-off-by: NTony Nguyen <anthony.l.nguyen@intel.com>
上级 f029a343
...@@ -1240,8 +1240,13 @@ static void ice_ptp_wait_for_offsets(struct kthread_work *work) ...@@ -1240,8 +1240,13 @@ static void ice_ptp_wait_for_offsets(struct kthread_work *work)
pf = ptp_port_to_pf(port); pf = ptp_port_to_pf(port);
hw = &pf->hw; 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; return;
}
tx_err = ice_ptp_check_tx_fifo(port); tx_err = ice_ptp_check_tx_fifo(port);
if (!tx_err) if (!tx_err)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册