> -----Original Message-----

> From: Intel-wired-lan 
> <[email protected]<mailto:[email protected]>>
>  On Behalf Of Michal Kubiak

> Sent: Thursday, September 25, 2025 2:53 PM

> To: [email protected]<mailto:[email protected]>

> Cc: Fijalkowski, Maciej 
> <[email protected]<mailto:[email protected]>>; Lobakin, 
> Aleksander 
> <[email protected]<mailto:[email protected]>>; Keller, 
> Jacob E <[email protected]<mailto:[email protected]>>;

> Zaremba, Larysa <[email protected]<mailto:[email protected]>>; 
> [email protected]<mailto:[email protected]>; Kitszel, Przemyslaw 
> <[email protected]<mailto:[email protected]>>; 
> [email protected]<mailto:[email protected]>;

> Nguyen, Anthony L 
> <[email protected]<mailto:[email protected]>>; Kubiak, 
> Michal <[email protected]<mailto:[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 standardized 
> 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]<mailto:[email protected]>>

> Signed-off-by: Alexander Lobakin 
> <[email protected]<mailto:[email protected]>>

> Reviewed-by: Alexander Lobakin 
> <[email protected]<mailto:[email protected]>>

> Reviewed-by: Jacob Keller 
> <[email protected]<mailto:[email protected]>>

> Signed-off-by: Michal Kubiak 
> <[email protected]<mailto:[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: Saritha Sanigani 
<[email protected]<mailto:[email protected]>> (A Contingent 
Worker at Intel)





Reply via email to