> -----Original Message-----
> From: Intel-wired-lan <[email protected]> On Behalf Of 
> Michal Kubiak
> Sent: Thursday, September 25, 2025 2:23 AM
> To: [email protected]
> Cc: Fijalkowski, Maciej <[email protected]>; Lobakin, Aleksander 
> <[email protected]>; Keller, Jacob E <[email protected]>; 
> Zaremba, Larysa <[email protected]>; 
> [email protected]; Kitszel, Przemyslaw <[email protected]>; 
> [email protected]; Nguyen, Anthony L <[email protected]>; 
> Kubiak, Michal <[email protected]>
> Subject: [Intel-wired-lan] [PATCH iwl-next v3 3/3] ice: switch to Page Pool
> 
> This patch completes the transition of the ice driver to use the Page Pool 
> and libeth APIs, following the same direction as commit 5fa4caff59f2
> ("iavf: switch to Page Pool"). With the legacy page splitting and recycling 
> logic already removed, the driver is now in a clean state to adopt the modern 
> memory model.
> 
> The Page Pool integration simplifies buffer management by offloading DMA 
> mapping and recycling to the core infrastructure. This eliminates the need 
> for driver-specific handling of headroom, buffer sizing, and > page order. 
> The libeth helper is used for CPU-side processing, while DMA-for-device is 
> handled by the Page Pool core.
> 
> Additionally, this patch extends the conversion to cover XDP support.
> The driver now uses libeth_xdp helpers for Rx buffer processing, and 
> optimizes XDP_TX by skipping per-frame DMA mapping. Instead, all buffers are 
> mapped as bi-directional up front, leveraging Page Pool's lifecycle 
> management. This significantly reduces overhead in virtualized environments.
> 
> Performance observations:
> - In typical scenarios (netperf, XDP_PASS, XDP_DROP), performance remains
>   on par with the previous implementation.
> - In XDP_TX mode:
>   * With IOMMU enabled, performance improves dramatically - over 5x
>     increase - due to reduced DMA mapping overhead and better memory reuse.
>   * With IOMMU disabled, performance remains comparable to the previous
>     implementation, with no significant changes observed.
> - In XDP_DROP mode:
>   * For small MTUs, (where multiple buffers can be allocated on a single
>     memory page), a performance drop of approximately 20% is observed.
>     According to 'perf top' analysis, the bottleneck is caused by atomic
>     reference counter increments in the Page Pool.
>   * For normal MTUs, (where only one buffer can be allocated within a
>     single memory page), performance remains comparable to baseline
>     levels.
> 
> This change is also a step toward a more modular and unified XDP 
> implementation across Intel Ethernet drivers, aligning with ongoing efforts 
> to consolidate and streamline feature support.
> 
> Suggested-by: Maciej Fijalkowski <[email protected]>
> Suggested-by: Alexander Lobakin <[email protected]>
> Reviewed-by: Alexander Lobakin <[email protected]>
> Reviewed-by: Jacob Keller <[email protected]>
> Signed-off-by: Michal Kubiak <[email protected]>
> ---
>  drivers/net/ethernet/intel/Kconfig            |   1 +
>  drivers/net/ethernet/intel/ice/ice_base.c     |  91 ++--
>  drivers/net/ethernet/intel/ice/ice_ethtool.c  |  17 +-
>  drivers/net/ethernet/intel/ice/ice_lib.c      |   1 -
>  drivers/net/ethernet/intel/ice/ice_main.c     |  10 +-
>  drivers/net/ethernet/intel/ice/ice_txrx.c     | 442 ++++--------------
>  drivers/net/ethernet/intel/ice/ice_txrx.h     |  37 +-
>  drivers/net/ethernet/intel/ice/ice_txrx_lib.c |  65 ++-
>  drivers/net/ethernet/intel/ice/ice_txrx_lib.h |   9 -
>  drivers/net/ethernet/intel/ice/ice_xsk.c      |  76 +--
>  drivers/net/ethernet/intel/ice/ice_xsk.h      |   6 +-
>  11 files changed, 203 insertions(+), 552 deletions(-)

Tested-by: Alexander Nowlin <[email protected]>

Reply via email to