[PATCH RFC net-next 0/5] selftests: drv-net: Convert XDP program to bpf_dynptr

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,

This series updates the drv-net XDP program used by the new xdp.py selftest
to use the bpf_dynptr APIs for packet access.

The selftest itself is unchanged.

The original program accessed packet headers directly via
ctx->data/data_end, implicitly assuming headers are always in the linear
region. That assumption is incorrect for multi-buffer XDP and does not
hold across all drivers. For example, mlx5 with striding RQ can leave the
linear area empty, causing the multi-buffer cases to fail.

Switching to bpf_xdp_load/store_bytes would work but always incurs copies.
Instead, this series adopts bpf_dynptr, which provides safe,
verifier-checked access across both linear and fragmented areas while
avoiding copies.

Amery Hung has also proposed a series [1] that addresses the same issues in
the program, but through the use of bpf_xdp_pull_data. My series is not
intended as a replacement for that work, but rather as an exploration of
another viable solution, each of which may be preferable under different
circumstances.

In cases where the program does not return XDP_PASS, I believe dynptr has
an advantage since it avoids an extra copy. Conversely, when the program
returns XDP_PASS, bpf_xdp_pull_data may be preferable, as the copy will
be performed in any case during skb creation.

It may make sense to split the work into two separate programs, allowing us
to test both solutions independently. Alternatively, we can consider a
combined approach, where the more fitting solution is applied for each use
case. I welcome feedback on which direction would be most useful.

[1] https://lore.kernel.org/all/20250905173352.3759457-1-ameryhung@xxxxxxxxx/

Thanks!
Nimrod

Nimrod Oren (5):
  selftests: drv-net: Test XDP_TX with bpf_dynptr
  selftests: drv-net: Test XDP tail adjustment with bpf_dynptr
  selftests: drv-net: Test XDP head adjustment with bpf_dynptr
  selftests: drv-net: Adjust XDP header data with bpf_dynptr
  selftests: drv-net: Check XDP header data with bpf_dynptr

 .../selftests/net/lib/xdp_native.bpf.c        | 219 ++++++++----------
 1 file changed, 96 insertions(+), 123 deletions(-)

-- 
2.45.0





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux