> -----Original Message-----
> From: Korba, Przemyslaw <[email protected]>
> Sent: Monday, May 11, 2026 10:38 AM
> To: [email protected]
> Cc: [email protected]; Nguyen, Anthony L
> <[email protected]>; Kitszel, Przemyslaw
> <[email protected]>; Loktionov, Aleksandr
> <[email protected]>; Kubalewski, Arkadiusz
> <[email protected]>; Korba, Przemyslaw
> <[email protected]>
> Subject: [PATCH iwl-net] ice: suppress DPLL errors during reset
> recovery
>
> During reset recovery, the admin queue returns EBUSY which is expected
> behavior. However, the DPLL subsystem was logging these as errors and
> incrementing the error counter, potentially leading to unnecessary
> warnings and even disabling the DPLL periodic worker if the threshold
> was reached.
>
> Suppress error logging and error counter increments when the admin
> queue returns EBUSY, as this is expected during reset recovery and not
> a real failure condition.
>
> test case:
> - ethtool --reset eth3 irq-shared dma-shared filter-shared offload-
> shared mac-shared phy-shared ram-shared
> - observe if dmesg EBUSY errors are gone
>
> Fixes: d7999f5ea64b ("ice: implement dpll interface to control cgu")
> Signed-off-by: Przemyslaw Korba <[email protected]>
> ---
> drivers/net/ethernet/intel/ice/ice_dpll.c | 16 ++++++++++------
> 1 file changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/ice/ice_dpll.c
> b/drivers/net/ethernet/intel/ice/ice_dpll.c
> index 0704e92ab043..78b8836b534b 100644
> --- a/drivers/net/ethernet/intel/ice/ice_dpll.c
> +++ b/drivers/net/ethernet/intel/ice/ice_dpll.c
> @@ -784,7 +784,7 @@ ice_dpll_pin_state_update(struct ice_pf *pf,
> struct ice_dpll_pin *pin,
> ret,
> libie_aq_str(pf-
> >hw.adminq.sq_last_status),
> pin_type_name[pin_type], pin->idx);
> - else
> + else if (pf->hw.adminq.sq_last_status != LIBIE_AQ_RC_EBUSY)
> dev_err_ratelimited(ice_pf_to_dev(pf),
> "err:%d %s failed to update %s
> pin:%u\n",
> ret,
> @@ -2883,10 +2883,12 @@ ice_dpll_update_state(struct ice_pf *pf,
> struct ice_dpll *d, bool init)
> d->dpll_idx, d->prev_input_idx, d->input_idx,
> d->dpll_state, d->prev_dpll_state, d->mode);
> if (ret) {
> - dev_err(ice_pf_to_dev(pf),
> - "update dpll=%d state failed, ret=%d %s\n",
> - d->dpll_idx, ret,
> - libie_aq_str(pf->hw.adminq.sq_last_status));
> + /* EBUSY is expected during reset recovery, don't log
> error */
> + if (pf->hw.adminq.sq_last_status != LIBIE_AQ_RC_EBUSY)
> + dev_err(ice_pf_to_dev(pf),
> + "update dpll=%d state failed, ret=%d %s\n",
> + d->dpll_idx, ret,
> + libie_aq_str(pf-
> >hw.adminq.sq_last_status));
> return ret;
> }
> if (init) {
> @@ -2955,7 +2957,9 @@ static void ice_dpll_periodic_work(struct
> kthread_work *work)
> d->periodic_counter % dp->phase_offset_monitor_period == 0)
> ret = ice_dpll_pps_update_phase_offsets(pf,
> &phase_offset_ntf);
> if (ret) {
> - d->cgu_state_acq_err_num++;
> + /* EBUSY is expected during reset recovery */
> + if (pf->hw.adminq.sq_last_status != LIBIE_AQ_RC_EBUSY)
> + d->cgu_state_acq_err_num++;
> /* stop rescheduling this worker */
> if (d->cgu_state_acq_err_num >
> ICE_CGU_STATE_ACQ_ERR_THRESHOLD) {
>
> base-commit: 80b47e88f7ead00b0795e9f2833f1d0cafe11d90
> prerequisite-patch-id: 45f595ded339d5f7feea2ea7ff196db3c08e3503
> --
> 2.43.0
Reviewed-by: Aleksandr Loktionov <[email protected]>