Merge branch 'selftests/xsk: speed-ups, fixes, and new XDP programs'
Magnus Karlsson says:
====================
This is a patch set of various performance improvements, fixes, and
the introduction of more than one XDP program to the xsk selftests
framework so we can test more things in the future such as upcoming
multi-buffer and metadata support for AF_XDP. The new programs just
reuse the framework that all the other eBPF selftests use. The new
feature is used to implement one new test that does XDP_DROP on every
other packet. More tests using this will be added in future commits.
Contents:
* The run-time of the test suite is cut by 10x when executing the
tests on a real NIC, by only attaching the XDP program once per mode
tested, instead of once per test program.
* Over 700 lines of code have been removed. The xsk.c control file was
moved straight over from libbpf when the xsk support was deprecated
there. As it is now not used as library code that has to work with
all kinds of versions of Linux, a lot of code could be dropped or
simplified.
* Add a new command line option "-d" that can be used when a test
fails and you want to debug it with gdb or some other debugger. The
option creates the two veth netdevs and prints them to the screen
without deleting them afterwards. This way these veth netdevs can be
used when running xskxceiver in a debugger.
* Implemented the possibility to load external XDP programs so we can
have more than the default one. This feature is used to implement a
test where every other packet is dropped. Good exercise for the
recycling mechanism of the xsk buffer pool used in zero-copy mode.
* Various clean-ups and small fixes in patches 1 to 5. None of these
fixes has any impact on the correct execution of the tests when they
pass, though they can be irritating when a test fails. IMHO, they do
not need to go to bpf as they will not fix anything there. The first
version of patches 1, 2, and 4 where previously sent to bpf, but has
now been included here.
v2 -> v3:
* Fixed compilation error for llvm [David]
* Made the function xsk_is_in_drv_mode(ifobj) more generic by changing
it to xsk_is_in_mode(ifobj, xdp_mode) [Maciej]
* Added Maciej's acks to all the patches
v1 -> v2:
* Fixed spelling error in commit message of patch #6 [Björn]
* Added explanation on why it is safe to use C11 atomics in patch #7
[Daniel]
* Put all XDP programs in the same file so that adding more XDP
programs to xskxceiver.c becomes more scalable in patches #11 and
#12 [Maciej]
* Removed more dead code in patch #8 [Maciej]
* Removed stale %s specifier in error print, patch #9 [Maciej]
* Changed name of XDP_CONSUMES_SOME_PACKETS to XDP_DROP_HALF to
hopefully make it clearer [Maciej]
* ifobj_rx and ifobj_tx name changes in patch #13 [Maciej]
* Simplified XDP attachment code in patch #15 [Maciej]
Patches:
1-5: Small fixes and clean-ups
6: New convenient debug option when using a debugger such as gdb
7-8: Removal of unnecessary code
9: Add the ability to load external XDP programs
10-11: Removal of more unnecessary code
12: Implement a new test where every other packet is XDP_DROP:ed
13: Unify the thread dispatching code
14-15: Simplify the way tests are written when using custom packet_streams
or custom XDP programs
Thanks: Magnus
====================
Signed-off-by: Alexei Starovoitov <ast@kernel.org>