On 10/16/2026 8:18 AM, Luigi Rizzo wrote:
libeth_rx_alloc() always allocates with GFP_ATOMIC, including when idpf fills its Rx rings at open or on queue reconfiguration. That fill runs in process context, right after page_pool_create() and before the queues' NAPI is enabled, so it may sleep, and GFP_ATOMIC is needlessly restrictive there: it can neither reclaim nor compact, while the initial fill can allocate tens of thousands of buffers across all queues. Add libeth_rx_alloc_gfp(), which takes the allocation flags, and make libeth_rx_alloc() its GFP_ATOMIC wrapper. Use GFP_KERNEL for the initial fill in idpf. Signed-off-by: Luigi Rizzo <[email protected]> --- .../ethernet/intel/idpf/idpf_singleq_txrx.c | 7 +++--- drivers/net/ethernet/intel/idpf/idpf_txrx.c | 9 +++++--- drivers/net/ethernet/intel/idpf/idpf_txrx.h | 2 +- include/net/libeth/rx.h | 23 +++++++++++++++----
Since libeth is outside the driver, it may be better as a separate patch?
4 files changed, 30 insertions(+), 11 deletions(-)
Reviewed-by: Emil Tantilov <[email protected]> Thanks, Emil
