[PATCH net-next 00/15] net/mlx5e: SHAMPO, Allow high order pages in zerocopy mode
From: Tariq Toukan <tariqt@nvidia.com>
Date: 2026-02-23 20:43:01
Also in:
bpf, linux-rdma, lkml
Hi, This series adds support for high order pages when io_uring/devmem zero copy is used. See detailed description by Dragos below. Regards, Tariq The first patches are moving code around to allow using queue specific parameters that are not just for XSK. They are a bit large as they touch a lot of functions. The middle part of the series is updating various formulas to remove remaining hardcoded use of PAGE_SIZE/PAGE_SHIFT. The last part adds support for high order pages by implementing the queue configuration functions and allowing larger rx_page_size configurations when in zero-copy mode. Results show an increase in BW and a decrease in CPU usage. The benchmark was done with the zcrx samples from liburing [0]. rx_buf_len=4K, oncpu [1]: packets=3358832 (MB=820027), rps=55794 (MB/s=13621) Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle Average: 9 1.56 0.00 18.09 13.42 0.00 66.80 0.00 0.00 0.00 0.12 rx_buf_len=128K, oncpu [2]: packets=3781376 (MB=923187), rps=62813 (MB/s=15335) Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle Average: 9 0.33 0.00 7.61 18.86 0.00 73.08 0.00 0.00 0.00 0.12 rx_buf_len=4K, offcpu [3]: packets=3460368 (MB=844816), rps=57481 (MB/s=14033) Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle Average: 9 0.00 0.00 0.26 0.00 0.00 92.63 0.00 0.00 0.00 7.11 Average: 11 3.04 0.00 68.09 28.87 0.00 0.00 0.00 0.00 0.00 0.00 rx_buf_len=128K, offcpu [4]: packets=4119840 (MB=1005820), rps=68435 (MB/s=16707) Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle Average: 9 0.00 0.00 0.87 0.00 0.00 63.77 0.00 0.00 0.00 35.36 Average: 11 1.96 0.00 43.68 54.37 0.00 0.00 0.00 0.00 0.00 0.00 [0] https://github.com/isilence/liburing/tree/zcrx/rx-buf-len [1] commands: $> taskset -c 9 ./zcrx 6 -i eth2 -q 9 -A 1 -B 4096 -S 33554432 $> ./send-zerocopy tcp -6 -D 2001:db8::1 -t 60 -C 0 -l 1 -b 1 -n 1 -z 1 -d -s 256000 [2] commands: $> taskset -c 9 ./zcrx 6 -i eth2 -q 9 -A 1 -B 131072 -S 33554432 $> ./send-zerocopy tcp -6 -D 2001:db8::1 -t 60 -C 0 -l 1 -b 1 -n 1 -z 1 -d -s 256000 [3] commands: $> taskset -c 11 ./zcrx 6 -i eth2 -q 9 -A 1 -B 4096 -S 33554432 $> ./send-zerocopy tcp -6 -D 2001:db8::1 -t 60 -C 0 -l 1 -b 1 -n 1 -z 1 -d -s 256000 [4] commands: $> taskset -c 11 ./zcrx 6 -i eth2 -q 9 -A 1 -B 131072 -S 33554432 $> ./send-zerocopy tcp -6 -D 2001:db8::1 -t 60 -C 0 -l 1 -b 1 -n 1 -z 1 -d -s 256000 Dragos Tatulea (15): net/mlx5e: Make mlx5e_rq_param naming consistent net/mlx5e: Extract striding rq param calculation in function net/mlx5e: Extract max_xsk_wqebbs into its own function net/mlx5e: Expose and rename xsk channel parameter function net/mlx5e: Alloc xsk channel param out of mlx5e_open_xsk() net/mlx5e: Move xsk param into new option container struct net/mlx5e: Drop unused channel parameters net/mlx5e: SHAMPO, Always calculate page size net/mlx5e: Set page_pool order based on calculated page_shift net/mlx5e: Alloc rq drop page based on calculated page_shift net/mlx5e: RX, Make page frag bias more robust net/mlx5e: Add queue config ops for page size net/mlx5e: Pass netdev queue config to param calculations net/mlx5e: Add param helper to calculate max page size net/mlx5e: SHAMPO, Allow high order pages in zerocopy mode drivers/net/ethernet/mellanox/mlx5/core/en.h | 9 +- .../ethernet/mellanox/mlx5/core/en/params.c | 415 +++++++++++------- .../ethernet/mellanox/mlx5/core/en/params.h | 45 +- .../net/ethernet/mellanox/mlx5/core/en/ptp.c | 4 +- .../net/ethernet/mellanox/mlx5/core/en/xdp.c | 5 +- .../net/ethernet/mellanox/mlx5/core/en/xdp.h | 3 +- .../ethernet/mellanox/mlx5/core/en/xsk/pool.c | 23 +- .../mellanox/mlx5/core/en/xsk/setup.c | 59 +-- .../mellanox/mlx5/core/en/xsk/setup.h | 6 +- .../net/ethernet/mellanox/mlx5/core/en_main.c | 194 +++++--- .../net/ethernet/mellanox/mlx5/core/en_rx.c | 36 +- 11 files changed, 502 insertions(+), 297 deletions(-) base-commit: 8bf22c33e7a172fbc72464f4cc484d23a6b412ba -- 2.44.0