selftests: net: add netpoll basic functionality test
authorBreno Leitao <leitao@debian.org>
Mon, 14 Jul 2025 09:56:50 +0000 (02:56 -0700)
committerJakub Kicinski <kuba@kernel.org>
Thu, 17 Jul 2025 00:25:49 +0000 (17:25 -0700)
commitb3019343e4bde385d1d59918b2e3ffa4eb340739
tree8f9221afd7ed372d1e71516ea9b88c2cf7903e12
parentfd2aadcefbacb4425f54c252ec9cfb8218548eb9
selftests: net: add netpoll basic functionality test

Add a basic selftest for the netpoll polling mechanism, specifically
targeting the netpoll poll() side.

The test creates a scenario where network transmission is running at
maximum speed, and netpoll needs to poll the NIC. This is achieved by:

  1. Configuring a single RX/TX queue to create contention
  2. Generating background traffic to saturate the interface
  3. Sending netconsole messages to trigger netpoll polling
  4. Using dynamic netconsole targets via configfs
  5. Delete and create new netconsole targets after some messages
  6. Start a bpftrace in parallel to make sure netpoll_poll_dev() is
     called
  7. If bpftrace exists and netpoll_poll_dev() was called, stop.

The test validates a critical netpoll code path by monitoring traffic
flow and ensuring netpoll_poll_dev() is called when the normal TX path
is blocked.

This addresses a gap in netpoll test coverage for a path that is
tricky for the network stack.

Signed-off-by: Breno Leitao <leitao@debian.org>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://patch.msgid.link/20250714-netpoll_test-v7-3-c0220cfaa63e@debian.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/drivers/net/Makefile
tools/testing/selftests/drivers/net/netpoll_basic.py [new file with mode: 0755]