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

Reply via email to