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.hb/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>