selftests: net: Add busy_poll_test
authorJoe Damato <jdamato@fastly.com>
Sat, 9 Nov 2024 05:02:35 +0000 (05:02 +0000)
committerJakub Kicinski <kuba@kernel.org>
Tue, 12 Nov 2024 02:45:06 +0000 (18:45 -0800)
commit347fcdc414f98998df1c5969e4612e4da67d6852
tree3e940685ca620e9270621f6a0c8b8de6a50eb4e7
parent8a6de2627fd37b76c6e8e77fa6c0fe82888e3fc3
selftests: net: Add busy_poll_test

Add an epoll busy poll test using netdevsim.

This test is comprised of:
  - busy_poller (via busy_poller.c)
  - busy_poll_test.sh which loads netdevsim, sets up network namespaces,
    and runs busy_poller to receive data and socat to send data.

The selftest tests two different scenarios:
  - busy poll (the pre-existing version in the kernel)
  - busy poll with suspend enabled (what this series adds)

The data transmit is a 1MiB temporary file generated from /dev/urandom
and the test is considered passing if the md5sum of the input file to
socat matches the md5sum of the output file from busy_poller.

netdevsim was chosen instead of veth due to netdevsim's support for
netdev-genl.

For now, this test uses the functionality that netdevsim provides. In the
future, perhaps netdevsim can be extended to emulate device IRQs to more
thoroughly test all pre-existing kernel options (like defer_hard_irqs)
and suspend.

Signed-off-by: Joe Damato <jdamato@fastly.com>
Co-developed-by: Martin Karsten <mkarsten@uwaterloo.ca>
Signed-off-by: Martin Karsten <mkarsten@uwaterloo.ca>
Acked-by: Stanislav Fomichev <sdf@fomichev.me>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://patch.msgid.link/20241109050245.191288-6-jdamato@fastly.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/.gitignore
tools/testing/selftests/net/Makefile
tools/testing/selftests/net/busy_poll_test.sh [new file with mode: 0755]
tools/testing/selftests/net/busy_poller.c [new file with mode: 0644]