> -----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 1/3] ice: remove legacy Rx and > construct SKB > > The commit 53844673d555 ("iavf: kill 'legacy-rx' for good") removed the > legacy Rx path in the iavf driver. This change applies the same rationale to > the ice driver. > > The legacy Rx path relied on manual skb allocation and header copying, which > has become increasingly inefficient and difficult to maintain. > With the stabilization of build_skb() and the growing adoption of features > like XDP, page_pool, and multi-buffer support, the legacy approach is no > longer viable. > > Key drawbacks of the legacy path included: > - Higher memory pressure due to direct page allocations and splitting; > - Redundant memcpy() operations for packet headers; > - CPU overhead from eth_get_headlen() and Flow Dissector usage; > - Compatibility issues with XDP, which imposes strict headroom and > tailroom requirements. > > The ice driver, like iavf, does not benefit from the minimal headroom savings > that legacy Rx once offered, as it already splits pages into fixed halves. > Removing this path simplifies the Rx logic, eliminates unnecessary branches > in the hotpath, and prepares the driver for upcoming enhancements. > > In addition to removing the legacy Rx path, this change also eliminates the > custom construct_skb() functions from both the standard and zero-copy (ZC) Rx > paths. These are replaced with the build_skb() and standarized > xdp_build_skb_from_zc() helpers, aligning the driver with the modern XDP > infrastructure and reducing code duplication. > > This cleanup also reduces code complexity and improves maintainability as we > move toward a more unified and modern Rx model across drivers. > > 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 | 1 - > drivers/net/ethernet/intel/ice/ice_base.c | 23 +----- > drivers/net/ethernet/intel/ice/ice_ethtool.c | 5 -- > drivers/net/ethernet/intel/ice/ice_main.c | 11 +-- > drivers/net/ethernet/intel/ice/ice_txrx.c | 86 +------------------- > drivers/net/ethernet/intel/ice/ice_txrx.h | 16 ---- > drivers/net/ethernet/intel/ice/ice_xsk.c | 72 +--------------- > 7 files changed, 6 insertions(+), 208 deletions(-)
Tested-by: Alexander Nowlin <[email protected]>
