> -----Original Message----- > From: Intel-wired-lan <[email protected]> On Behalf > Of Alexander Lobakin > Sent: Monday, October 6, 2025 6:21 PM > To: [email protected] > Cc: Lobakin, Aleksander <[email protected]>; Nguyen, > Anthony L <[email protected]>; Kitszel, Przemyslaw > <[email protected]>; Andrew Lunn <[email protected]>; > David S. Miller <[email protected]>; Eric Dumazet > <[email protected]>; Jakub Kicinski <[email protected]>; Paolo Abeni > <[email protected]>; Simon Horman <[email protected]>; NXNE CNSE OSDT > ITP Upstreaming <[email protected]>; > [email protected]; [email protected] > 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 <[email protected]> > --- > 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 <[email protected]>
