RE: [PATCH iwl-net 08/10] ice: detect a PF reset that does not complete
flat view
From: Loktionov, Aleksandr <hidden>
Date: 2026-10-05 10:27:32
Also in:
bpf, intel-wired-lan, lkml
quoted hunk ↗ jump to hunk
-----Original Message----- From: Petr Oros <redacted> Sent: Friday, October 2, 2026 3:08 PM To: netdev@vger.kernel.org Cc: Oros, Petr <redacted>; Nguyen, Anthony L [off-list ref]; Kitszel, Przemyslaw [off-list ref]; Andrew Lunn [off-list ref]; David S. Miller [off-list ref]; Eric Dumazet [off-list ref]; Jakub Kicinski [off-list ref]; Paolo Abeni [off-list ref]; Lobakin, Aleksander [off-list ref]; Alexei Starovoitov [off-list ref]; Daniel Borkmann [off-list ref]; Jesper Dangaard Brouer [off-list ref]; John Fastabend [off-list ref]; Stanislav Fomichev [off-list ref]; Henry Tieman [off-list ref]; Anirudh Venkataramanan [off-list ref]; Michal Swiatkowski [off-list ref]; Jesse Brandeburg [off-list ref]; Preethi Banala [off-list ref]; Kiran Patil [off-list ref]; Dan Nowlin [off-list ref]; Stephen Hemminger [off-list ref]; intel-wired-lan@lists.osuosl.org; linux- kernel@vger.kernel.org; bpf@vger.kernel.org Subject: [PATCH iwl-net 08/10] ice: detect a PF reset that does not complete ice_pf_reset() polls PFGEN_CTRL.PFSWR for up to ICE_GLOBAL_CFG_LOCK_TIMEOUT + ICE_PF_RESET_WAIT_COUNT iterations, but the timeout check after the loop still compares the counter with ICE_PF_RESET_WAIT_COUNT alone. When the reset never completes the loop ends with cnt == 5300, the check does not match and the function returns success with PFSWR still set. A reset that completes just when the counter reaches ICE_PF_RESET_WAIT_COUNT is reported as a failure instead. Check the PFSWR bit read last instead of the loop counter, the same way i40e_pf_reset() does after its poll loop. Fixes: c9a12d6d2091 ("ice: Increase timeout after PFR") Assisted-by: LLM Signed-off-by: Petr Oros <redacted> --- drivers/net/ethernet/intel/ice/ice_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/drivers/net/ethernet/intel/ice/ice_common.cb/drivers/net/ethernet/intel/ice/ice_common.c index 04633103e3e610..0ffd6b5b81239e 100644--- a/drivers/net/ethernet/intel/ice/ice_common.c +++ b/drivers/net/ethernet/intel/ice/ice_common.c@@ -1291,7 +1291,7 @@ static int ice_pf_reset(struct ice_hw *hw) mdelay(1); } - if (cnt == ICE_PF_RESET_WAIT_COUNT) { + if (reg & PFGEN_CTRL_PFSWR_M) { ice_debug(hw, ICE_DBG_INIT, "PF reset polling failed tocomplete.\n"); return -EIO; } -- 2.55.0
Reviewed-by: Aleksandr Loktionov <redacted>