> -----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 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 <[email protected]> > Signed-off-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/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 <[email protected]>
