[PATCH net-next 00/15] net/mlx5e: SHAMPO, Allow high order pages in zerocopy mode
From: Tariq Toukan
Date: Mon Feb 23 2026 - 15:43:18 EST
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