Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests: net-drv: queues: sanity check netlink dumps

This test already catches a netlink bug fixed by this series,
but only when running on HW with many queues. Make sure the
netdevsim instance created has a lot of queues, and constrain
the size of the recv_buffer used by netlink.

While at it test both rx and tx queues.

Reviewed-by: Joe Damato <jdamato@fastly.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Link: https://patch.msgid.link/20241213152244.3080955-5-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+13 -10
+13 -10
tools/testing/selftests/drivers/net/queues.py
··· 8 8 import glob 9 9 10 10 11 - def sys_get_queues(ifname) -> int: 12 - folders = glob.glob(f'/sys/class/net/{ifname}/queues/rx-*') 11 + def sys_get_queues(ifname, qtype='rx') -> int: 12 + folders = glob.glob(f'/sys/class/net/{ifname}/queues/{qtype}-*') 13 13 return len(folders) 14 14 15 15 16 - def nl_get_queues(cfg, nl): 16 + def nl_get_queues(cfg, nl, qtype='rx'): 17 17 queues = nl.queue_get({'ifindex': cfg.ifindex}, dump=True) 18 18 if queues: 19 - return len([q for q in queues if q['type'] == 'rx']) 19 + return len([q for q in queues if q['type'] == qtype]) 20 20 return None 21 21 22 22 23 23 def get_queues(cfg, nl) -> None: 24 - queues = nl_get_queues(cfg, nl) 25 - if not queues: 26 - raise KsftSkipEx('queue-get not supported by device') 24 + snl = NetdevFamily(recv_size=4096) 27 25 28 - expected = sys_get_queues(cfg.dev['ifname']) 29 - ksft_eq(queues, expected) 26 + for qtype in ['rx', 'tx']: 27 + queues = nl_get_queues(cfg, snl, qtype) 28 + if not queues: 29 + raise KsftSkipEx('queue-get not supported by device') 30 + 31 + expected = sys_get_queues(cfg.dev['ifname'], qtype) 32 + ksft_eq(queues, expected) 30 33 31 34 32 35 def addremove_queues(cfg, nl) -> None: ··· 60 57 61 58 62 59 def main() -> None: 63 - with NetDrvEnv(__file__, queue_count=3) as cfg: 60 + with NetDrvEnv(__file__, queue_count=100) as cfg: 64 61 ksft_run([get_queues, addremove_queues], args=(cfg, NetdevFamily())) 65 62 ksft_exit() 66 63