On Wed, Jan 29, 2025 at 06:07:51PM -0800, Jakub Kicinski wrote:
On Wed, 29 Jan 2025 17:24:25 +0000 Joe Damato wrote:
Test that queues which are used for AF_XDP have the xsk attribute set.
diff --git a/tools/testing/selftests/drivers/.gitignore b/tools/testing/selftests/drivers/.gitignore index 09e23b5afa96..3c109144f7ff 100644 --- a/tools/testing/selftests/drivers/.gitignore +++ b/tools/testing/selftests/drivers/.gitignore @@ -1,3 +1,4 @@ # SPDX-License-Identifier: GPL-2.0-only /dma-buf/udmabuf /s390x/uvdevice/test_uvdevice +/net/xdp_helper
Let's create our own gitignore, under drivers/net we'll get conflicts with random trees if we add to the shared one
OK, SGTM.
def sys_get_queues(ifname, qtype='rx') -> int: folders = glob.glob(f'/sys/class/net/{ifname}/queues/{qtype}-*') @@ -21,6 +24,31 @@ def nl_get_queues(cfg, nl, qtype='rx'): return len([q for q in queues if q['type'] == qtype]) return None +def check_xdp(cfg, nl, xdp_queue_id=0) -> None:
- test_dir = os.path.dirname(os.path.realpath(__file__))
- xdp = subprocess.Popen([f"{test_dir}/xdp_helper", f"{cfg.ifindex}", f"{xdp_queue_id}"],
stdin=subprocess.PIPE, stdout=subprocess.PIPE, bufsize=1,
text=True)
add: defer(xdp.kill)
here, to make sure test cleanup will always try to kill the process, then you can remove the xdp.kill() at the end
OK, will do.
- stdout, stderr = xdp.communicate(timeout=10)
- rx = tx = False
- queues = nl.queue_get({'ifindex': cfg.ifindex}, dump=True)
- if queues:
if not queues: raise KsftSkipEx("Netlink reports no queues")
That said only reason I can think of for no queues to be reported would be that the device is down, which is very weird and we could as well crash. So maybe the check for queues is not necessary ?
I kind of feel like raising is slightly more verbose, which I tend to slightly prefer over just a crash that might leave a future person confused.
I'll go with the raise as you suggested instead.