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

RE: [PATCH iwl-net 01/10] ice: replay UDP tunnel ports after a core or global reset

flat view

From: Loktionov, Aleksandr <hidden>
Date: 2026-10-05 10:24:05
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 01/10] ice: replay UDP tunnel ports after a
core or global reset

A CORER, GLOBR or EMPR reloads the DDP package in ice_rebuild() and
ice_init_pkg_hints() clears hw->tnl, so every offloaded VXLAN and
GENEVE port is gone from both the boost TCAM and the driver table. The
udp_tunnel_nic core is never told about it and still considers the
ports programmed, so the Rx tunnel offloads silently stop working
after the reset. With VXLAN port 4789 offloaded, 64 flows that differ
only in the inner headers are spread over all six Rx queues of the
test port by RSS, after a CORER they all land in a single queue, the
same as without the port. Removing the port later trips the WARN_ON()
in
ice_destroy_tunnel() because its table entry is no longer valid:

  WARNING: ice_flex_pipe.c:524 at ice_udp_tunnel_unset_port+0x56/0x280
[ice]
  ice 0000:04:00.3 enp4s0f3np3: Error removing UDP tunnel - -5
  ice 0000:04:00.3 enp4s0f3np3: UDP tunnel port sync failed port 4789
type vxlan: -5

Call udp_tunnel_nic_reset_ntf() once the main VSI is rebuilt so the
core programs the ports again. A PF reset keeps the package and the
table, so it is left alone. No rtnl_lock is needed since commit
1ead7501094c
("udp_tunnel: remove rtnl_lock dependency").

i40e fixed the same problem in commit 1f190d936948 ("i40e: Reprogram
port offloads after reset").

Fixes: a4e82a81f573 ("ice: Add support for tunnel offloads")
Assisted-by: LLM
Signed-off-by: Petr Oros <redacted>
---
 drivers/net/ethernet/intel/ice/ice_main.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c
b/drivers/net/ethernet/intel/ice/ice_main.c
index 8c4b0fbc790644..f2121e79fca993 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -7859,8 +7859,11 @@ static void ice_rebuild(struct ice_pf *pf, enum
ice_reset_req reset_type)
 		ice_rebuild_arfs(pf);
 	}

-	if (vsi && vsi->netdev)
+	if (vsi && vsi->netdev) {
 		netif_device_attach(vsi->netdev);
+		if (reset_type != ICE_RESET_PFR)
+			udp_tunnel_nic_reset_ntf(vsi->netdev);
+	}

 	ice_update_pf_netdev_link(pf);

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