Thread (31 messages) 31 messages, 3 authors, 14d ago

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.c
b/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 to
complete.\n");
 		return -EIO;
 	}
--
2.55.0
Reviewed-by: Aleksandr Loktionov <redacted>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help