linux/tools/testing/selftests
Willem de Bruijn a0bc96c0cd selftests: net: verify fq per-band packet limit
Commit 29f834aa32 ("net_sched: sch_fq: add 3 bands and WRR
scheduling") introduces multiple traffic bands, and per-band maximum
packet count.

Per-band limits ensures that packets in one class cannot fill the
entire qdisc and so cause DoS to the traffic in the other classes.

Verify this behavior:
  1. set the limit to 10 per band
  2. send 20 pkts on band A: verify that 10 are queued, 10 dropped
  3. send 20 pkts on band A: verify that  0 are queued, 20 dropped
  4. send 20 pkts on band B: verify that 10 are queued, 10 dropped

Packets must remain queued for a period to trigger this behavior.
Use SO_TXTIME to store packets for 100 msec.

The test reuses existing upstream test infra. The script is a fork of
cmsg_time.sh. The scripts call cmsg_sender.

The test extends cmsg_sender with two arguments:

* '-P' SO_PRIORITY
  There is a subtle difference between IPv4 and IPv6 stack behavior:
  PF_INET/IP_TOS        sets IP header bits and sk_priority
  PF_INET6/IPV6_TCLASS  sets IP header bits BUT NOT sk_priority

* '-n' num pkts
  Send multiple packets in quick succession.
  I first attempted a for loop in the script, but this is too slow in
  virtualized environments, causing flakiness as the 100ms timeout is
  reached and packets are dequeued.

Also do not wait for timestamps to be queued unless timestamps are
requested.

Signed-off-by: Willem de Bruijn <willemb@google.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/r/20231116203449.2627525-1-willemdebruijn.kernel@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2023-11-20 17:48:36 -08:00
..
alsa kselftest/alsa: pcm-test: Report cards declared in config but missing 2023-09-20 18:10:50 +02:00
amd-pstate selftests/amd-pstate: Added option to provide perf binary path 2023-10-16 13:06:58 -06:00
arm64 Merge branch 'for-next/feat_lse128' into for-next/core 2023-10-26 17:10:07 +01:00
bpf Including fixes from BPF and netfilter. 2023-11-16 07:51:26 -05:00
breakpoints
cachestat selftests/cachestat: Fix print_cachestat format 2023-10-13 14:08:10 -06:00
capabilities selftests: capabilities: remove duplicate unneeded defines 2023-10-06 17:33:37 -06:00
cgroup Many singleton patches against the MM code. The patch series which are 2023-11-02 19:38:47 -10:00
clone3 Many singleton patches against the MM code. The patch series which are 2023-11-02 19:38:47 -10:00
connector selftests: connector: Fix input argument error paths to skip 2023-07-31 20:11:42 -07:00
core selftests: core: remove duplicate defines 2023-10-06 17:33:47 -06:00
cpu-hotplug
cpufreq selftests/cpufreq: Don't enable generic lock debugging options 2023-06-12 16:39:11 -06:00
damon Many singleton patches against the MM code. The patch series which are 2023-11-02 19:38:47 -10:00
dma
dmabuf-heaps selftests/dmabuf-heaps: add gitignore file 2023-10-05 14:22:59 -06:00
drivers selftests: mlxsw: Add PCI reset test 2023-11-18 17:38:51 +00:00
dt kselftest: Add new test for detecting unprobed Devicetree devices 2023-09-20 14:25:10 -05:00
efivarfs selftests/efivarfs: create-read: fix a resource leak 2023-10-18 14:33:44 -06:00
exec selftests/exec: Convert execveat test to generate KTAP output 2023-10-05 14:50:03 -06:00
fchmodat2 selftests: link libasan statically for tests with -fsanitize=address 2023-09-19 13:21:32 -07:00
filelock selftests: add OFD lock tests 2023-08-24 10:41:47 -04:00
filesystems selftests/filesystems: Add six consecutive 'x' characters to mktemp 2023-08-16 10:10:39 -06:00
firmware selftests: firmware: remove duplicate unneeded defines 2023-10-06 17:33:52 -06:00
fpu
ftrace Tracing updates for v6.7: 2023-11-03 07:41:18 -10:00
futex selftests/futex: Order calls to futex_lock_pi 2023-08-16 10:48:10 -06:00
gpio gpio updates for v6.5 2023-06-29 10:11:10 -07:00
hid selftests/hid: force using our compiled libbpf headers 2023-10-11 14:02:54 +02:00
ia64
intel_pstate
iommu iommufd/selftest: Add coverage for IOMMU_HWPT_ALLOC with nested HWPTs 2023-10-26 11:15:57 -03:00
ipc
ir
kcmp
kexec
kmod
kselftest linux-kselftest-next-6.6-rc2 2023-09-12 09:10:36 -07:00
kvm ARM: 2023-11-02 15:45:15 -10:00
landlock selftests/landlock: Add tests for FS topology changes with network rules 2023-10-27 17:53:31 +02:00
lib
livepatch
lkdtm selftests/lkdtm: Disable CONFIG_UBSAN_TRAP in test config 2023-09-28 16:39:08 -07:00
locking
media_tests selftests: media_tests: Add new subtest to video_device_test 2023-06-12 16:39:10 -06:00
membarrier
memfd selftests: improve vm.memfd_noexec sysctl tests 2023-08-21 13:38:00 -07:00
memory-hotplug
mincore selftests/mincore: fix skip condition for check_huge_pages test 2023-07-13 12:51:13 -06:00
mm As usual, lots of singleton and doubleton patches all over the tree and 2023-11-02 20:53:31 -10:00
mount
mount_setattr
move_mount_set_group
mqueue
nci
net selftests: net: verify fq per-band packet limit 2023-11-20 17:48:36 -08:00
netfilter Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-10-19 13:29:01 -07:00
nolibc selftests/nolibc: add tests for multi-object linkage 2023-10-12 21:14:20 +02:00
nsfs
ntb
openat2 linux_kselftest-next-6.7-rc1 2023-11-01 17:08:10 -10:00
perf_events
pid_namespace
pidfd selftests/pidfd: Fix ksft print formats 2023-10-13 14:08:21 -06:00
powerpc selftests/powerpc: Fix emit_tests to work with run_kselftest.sh 2023-09-22 20:29:48 +10:00
prctl selftests:prctl: add set-process-name to .gitignore 2023-07-25 10:33:25 -06:00
proc proc: test ProtectionKey in proc-empty-vm test 2023-11-01 12:46:59 -07:00
pstore
ptp ptp: add testptp mask test 2023-10-15 20:07:52 +01:00
ptrace
rcutorture torture: Convert parse-console.sh to mktemp 2023-09-24 17:24:02 +02:00
resctrl selftests/resctrl: Fix MBM test failure when MBA unavailable 2023-10-18 14:33:44 -06:00
riscv RISC-V Patches for the 6.7 Merge Window, Part 1 2023-11-08 09:21:18 -08:00
rlimits
rseq selftests/rseq: fix kselftest Clang build warnings 2023-09-26 19:24:57 -06:00
rtc
safesetid
sched
seccomp selftests/seccomp: Handle arm32 corner cases better 2023-08-10 13:26:19 -07:00
sgx
sigaltstack selftests/sigaltstack: Fix wrong format specifier 2023-10-13 14:08:26 -06:00
size
sparc64
splice
static_keys selftests: static_keys: fix test name in messages 2023-10-05 14:28:59 -06:00
sync
syscall_user_dispatch
sysctl test_sysclt: Test for registering a mount point 2023-06-18 02:32:54 -07:00
tc-testing selftests/tc-testing: add hashtable tests for u32 2023-11-18 19:38:23 -08:00
tdx selftests/tdx: add gitignore file 2023-10-05 14:22:53 -06:00
thermal/intel selftests/thermel/intel: Add test to read power floor status 2023-10-12 21:09:48 +02:00
timens
timers selftests: timers: Convert nsleep-lat test to generate KTAP output 2023-10-05 15:00:14 -06:00
tmpfs
tpm2
tty selftests: tty: add selftest for tty timestamp updates 2023-06-15 13:45:42 +02:00
uevent selftests: uevent filtering: fix return on error in uevent_listener 2023-10-05 14:28:53 -06:00
user
user_events Tracing updates for v6.7: 2023-11-03 07:41:18 -10:00
vDSO kselftest: vDSO: Fix accumulation of uninitialized ret when CLOCK_REALTIME is undefined 2023-06-12 16:39:10 -06:00
watchdog
wireguard treewide: drop CONFIG_EMBEDDED 2023-08-21 13:46:25 -07:00
x86 selftests/x86/lam: Zero out buffer for readlink() 2023-10-16 11:39:57 +02:00
zram
.gitignore
Makefile Devicetree updates for 6.7: 2023-10-31 18:50:13 -10:00
gen_kselftest_tar.sh
kselftest.h selftests:modify the incorrect print format 2023-10-18 14:33:44 -06:00
kselftest_deps.sh selftests: fix dependency checker script 2023-09-08 10:06:49 -06:00
kselftest_harness.h selftests/harness: Actually report SKIP for signal tests 2023-08-10 23:10:09 -07:00
kselftest_install.sh
kselftest_module.h
lib.mk selftests: Keep symlinks, when possible 2023-09-08 10:06:56 -06:00
run_kselftest.sh kselftests: Sort the collections list to avoid duplicate tests 2023-06-12 16:39:11 -06:00