Thread (6 messages) 6 messages, 4 authors, 2025-10-30

RE: [Intel-wired-lan] [PATCH iwl-next] ice: implement configurable header split for regular Rx

From: Loktionov, Aleksandr <hidden>
Date: 2025-10-30 08:46:11
Also in: intel-wired-lan, lkml

quoted hunk ↗ jump to hunk
-----Original Message-----
From: Intel-wired-lan <redacted> On Behalf
Of Alexander Lobakin
Sent: Monday, October 6, 2025 6:21 PM
To: intel-wired-lan@lists.osuosl.org
Cc: Lobakin, Aleksander <aleksander.lobakin@intel.com>; 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]; Simon Horman [off-list ref]; NXNE CNSE OSDT
ITP Upstreaming [off-list ref];
netdev@vger.kernel.org; linux-kernel@vger.kernel.org
Subject: [Intel-wired-lan] [PATCH iwl-next] ice: implement
configurable header split for regular Rx

Add second page_pool for header buffers to each Rx queue and ability
to toggle the header split on/off using Ethtool (default to off to
match the current behaviour).
Unlike idpf, all HW backed up by ice doesn't require any W/As and
correctly splits all types of packets as configured: after L4 headers
for TCP/UDP/SCTP, after L3 headers for other IPv4/IPv6 frames, after
the Ethernet header otherwise (in case of tunneling, same as above,
but after innermost headers).
This doesn't affect the XSk path as there are no benefits of having it
there.

Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com>
---
Applies on top of Tony's next-queue, depends on Michał's Page Pool
conversion series.

Sending for review and validation purposes.

Testing hints: traffic testing with and without header split enabled.
The header split can be turned on/off using Ethtool:

sudo ethtool -G <iface> tcp-data-split on (or off)
---
 drivers/net/ethernet/intel/ice/ice.h          |  1 +
 .../net/ethernet/intel/ice/ice_lan_tx_rx.h    |  3 +
 drivers/net/ethernet/intel/ice/ice_txrx.h     |  7 ++
 drivers/net/ethernet/intel/ice/ice_base.c     | 89 +++++++++++++++---
-
 drivers/net/ethernet/intel/ice/ice_ethtool.c  | 15 +++-
 drivers/net/ethernet/intel/ice/ice_txrx.c     | 89 +++++++++++++++---
-
 6 files changed, 168 insertions(+), 36 deletions(-)
diff --git a/drivers/net/ethernet/intel/ice/ice.h
b/drivers/net/ethernet/intel/ice/ice.h
index d46ff9c97c86..bef3d6d8d491 100644
--- a/drivers/net/ethernet/intel/ice/ice.h
+++ b/drivers/net/ethernet/intel/ice/ice.h
@@ -351,6 +351,7 @@ struct ice_vsi {
 	u16 num_q_vectors;
 	/* tell if only dynamic irq allocation is allowed */
 	bool irq_dyn_alloc;
+	bool hsplit:1;
...
--
2.51.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