Re: [PATCH iwl-next v2 0/5] ice: add support for devmem/io_uring Rx and Tx

From: Alexander Lobakin

Date: Thu Jan 29 2026 - 06:09:58 EST


From: Alexander Lobakin <aleksander.lobakin@xxxxxxxxx>
Date: Thu, 4 Dec 2025 16:51:28 +0100

> Now that ice uses libeth for managing Rx buffers and supports
> configurable header split, it's ready to get support for sending
> and receiving packets with unreadable (to the kernel) frags.
>
> Extend libeth just a little bit to allow creating PPs with custom
> memory providers and make sure ice works correctly with the netdev
> ops locking. Then add the full set of queue_mgmt_ops and don't
> unmap unreadable frags on Tx completion.
> No perf regressions for the regular flows and no code duplication
> implied.
>
> Credits to the fbnic developers, which's code helped me understand
> the memory providers and queue_mgmt_ops logics and served as
> a reference.
>
> Alexander Lobakin (5):
> libeth: pass Rx queue index to PP when creating a fill queue
> libeth: handle creating pools with unreadable buffers
> ice: migrate to netdev ops lock
> ice: implement Rx queue management ops
> ice: add support for transmitting unreadable frags
>
> drivers/net/ethernet/intel/ice/ice_lib.h | 11 +-
> drivers/net/ethernet/intel/ice/ice_txrx.h | 2 +
> drivers/net/ethernet/intel/idpf/idpf_txrx.h | 2 +
> include/net/libeth/rx.h | 2 +
> include/net/libeth/tx.h | 2 +-
> drivers/net/ethernet/intel/iavf/iavf_txrx.c | 1 +
> drivers/net/ethernet/intel/ice/ice_base.c | 194 ++++++++++++++------
> drivers/net/ethernet/intel/ice/ice_lib.c | 56 +++++-
> drivers/net/ethernet/intel/ice/ice_main.c | 50 ++---
> drivers/net/ethernet/intel/ice/ice_sf_eth.c | 2 +
> drivers/net/ethernet/intel/ice/ice_txrx.c | 43 +++--
> drivers/net/ethernet/intel/ice/ice_xsk.c | 4 +-
> drivers/net/ethernet/intel/idpf/idpf_txrx.c | 13 ++
> drivers/net/ethernet/intel/libeth/rx.c | 46 +++++
> 14 files changed, 325 insertions(+), 103 deletions(-)
>
> ---
> From v1[0]:
> * rebase on top of the latest next-queue;
> * fix a typo 'rxq_ixd' -> 'rxq_idx' (Tony).
>
> Testing hints:
> * regular Rx and Tx for regressions;
> * <kernel root>/tools/testing/selftests/drivers/net/hw/ contains
> scripts for testing netmem Rx and Tx, namely devmem.py and
> iou-zcrx.py (read the documentation first).
>
> [0] https://lore.kernel.org/intel-wired-lan/20251125173603.3834486-1-aleksander.lobakin@xxxxxxxxx

Current status from the validation:

* io_uring tests pass, except for tests which try to setup RSS Rx
contexts -- after recent changes in the kernel, seems like at least
some of our drivers return -EOPNOTSUPP when trying to configure RSS.

Tony, did you have any related reports or planned fixes?

* devmem -- only the Tx test fails, may be related to our complicated
.ndo_start_xmit() logic in ice, I'll investigate this as soon as
I get some details from the val.

Thanks,
Olek