RE: [Intel-wired-lan] [PATCH iwl-next v3 2/3] ice: drop page splitting and recycling
From: Nowlin, Alexander <hidden>
Date: 2025-10-22 23:56:58
Also in:
intel-wired-lan
-----Original Message-----
From: Intel-wired-lan <redacted> On Behalf Of Michal Kubiak
Sent: Thursday, September 25, 2025 2:23 AM
To: intel-wired-lan@lists.osuosl.org
Cc: Fijalkowski, Maciej <maciej.fijalkowski@intel.com>; Lobakin, Aleksander <aleksander.lobakin@intel.com>; Keller, Jacob E <jacob.e.keller@intel.com>; Zaremba, Larysa <redacted>;
netdev@vger.kernel.org; Kitszel, Przemyslaw [off-list ref]; pmenzel@molgen.mpg.de; Nguyen, Anthony L [off-list ref]; Kubiak, Michal [off-list ref]
Subject: [Intel-wired-lan] [PATCH iwl-next v3 2/3] ice: drop page splitting and recycling
As part of the transition toward Page Pool integration, remove the legacy page splitting and recycling logic from the ice driver. This mirrors the approach taken in commit 920d86f3c552 ("iavf: drop page splitting > and recycling").
The previous model attempted to reuse partially consumed pages by splitting them and tracking their usage across descriptors. While this was once a memory optimization, it introduced significant complexity and overhead in the Rx path, including:
- Manual refcount management and page reuse heuristics;
- Per-descriptor buffer shuffling, which could involve moving dozens
of `ice_rx_buf` structures per NAPI cycle;
- Increased branching and cache pressure in the hotpath.
This change simplifies the Rx logic by always allocating fresh pages and letting the networking stack handle their lifecycle. Although this may temporarily reduce performance (up to ~98% in some XDP cases), it greatly improves maintainability and paves the way for Page Pool, which will restore and exceed previous performance levels.
The `ice_rx_buf` array is retained for now to minimize diffstat and ease future replacement with a shared buffer abstraction.
Co-developed-by: Alexander Lobakin <aleksander.lobakin@intel.com>
Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com>
Reviewed-by: Alexander Lobakin <aleksander.lobakin@intel.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Michal Kubiak <redacted>
---
drivers/net/ethernet/intel/ice/ice.h | 2 +
drivers/net/ethernet/intel/ice/ice_base.c | 29 ++--
drivers/net/ethernet/intel/ice/ice_txrx.c | 139 ++-----------------
drivers/net/ethernet/intel/ice/ice_txrx.h | 72 ----------
drivers/net/ethernet/intel/ice/virt/queues.c | 5 +-
5 files changed, 24 insertions(+), 223 deletions(-)Tested-by: Alexander Nowlin <redacted>