On Thu, Jun 26, 2025 at 09:25:05AM +0100, Simon Horman wrote:
On Wed, Jun 25, 2025 at 04:39:49AM -0700, Breno Leitao wrote:
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:
- Configuring a single RX/TX queue to create contention
- Generating background traffic to saturate the interface
- Sending netconsole messages to trigger netpoll polling
- Using dynamic netconsole targets via configfs
- Delete and create new netconsole targets after some messages
- Start a bpftrace in parallel to make sure netpoll_poll_dev() is called
- 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
Hi Breno,
As it looks like there will be another version, could you run pylint over this. The NIPA invocation says:
************* Module netpoll_basic .../netpoll_basic.py:323:0: C0301: Line too long (111/100) (line-too-long) .../netpoll_basic.py:27:0: E0611: No name 'bpftrace' in module 'lib.py' (no-name-in-module) .../netpoll_basic.py:79:11: E0606: Possibly using variable 'rx_queue' before assignment (possibly-used-before-assignment) .../netpoll_basic.py:79:21: E0606: Possibly using variable 'tx_queue' before assignment (possibly-used-before-assignment) .../netpoll_basic.py:253:22: W0613: Unused argument 'netdevnl' (unused-argument)
Thanks for the report. I was able to reproduce them here. The next version should be warning free. I hope. :-)
Thanks for the review, --breno