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

Reply via email to