selftests/tc-testing: Create tests to exercise ets classes active list misplacements

Add a test case for a bug fixed by Jamal [1] and for scenario where an
ets drr class is inserted into the active list twice.

- Try to delete ets drr class' qdisc while still keeping it in the
  active list
- Try to add ets class to the active list twice

[1] https://lore.kernel.org/netdev/20251128151919.576920-1-jhs@mojatatu.com/

Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Victor Nogueira <victor@mojatatu.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Link: https://patch.msgid.link/20251208190125.1868423-2-victor@mojatatu.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
pull/1354/merge
Victor Nogueira 2025-12-08 16:01:25 -03:00 committed by Jakub Kicinski
parent b1e125ae42
commit 5914428e0e
1 changed files with 78 additions and 0 deletions

View File

@ -1033,5 +1033,83 @@
"teardown": [ "teardown": [
"$TC qdisc del dev $DUMMY handle 1: root" "$TC qdisc del dev $DUMMY handle 1: root"
] ]
},
{
"id": "6e4f",
"name": "Try to delete ets drr class' qdisc while still keeping it in the active list",
"category": [
"qdisc",
"ets",
"tbf"
],
"plugins": {
"requires": [
"nsPlugin",
"scapyPlugin"
]
},
"setup": [
"$IP link set dev $DUMMY up || true",
"$IP addr add 10.10.11.10/24 dev $DUMMY || true",
"$TC qdisc add dev $DUMMY root handle 1: ets bands 2 strict 1",
"$TC qdisc add dev $DUMMY parent 1:2 handle 20: tbf rate 8bit burst 100b latency 1s",
"$TC filter add dev $DUMMY parent 1: basic classid 1:2",
"ping -c2 -W0.01 -s 56 -I $DUMMY 10.10.11.11 || true",
"$TC qdisc change dev $DUMMY root handle 1: ets bands 2 strict 2",
"$TC qdisc change dev $DUMMY root handle 1: ets bands 1 strict 1"
],
"cmdUnderTest": "ping -c1 -W0.01 -s 56 -I $DUMMY 10.10.11.11",
"expExitCode": "1",
"verifyCmd": "$TC -s -j qdisc ls dev $DUMMY root",
"matchJSON": [
{
"kind": "ets",
"handle": "1:",
"bytes": 196,
"packets": 2
}
],
"teardown": [
"$TC qdisc del dev $DUMMY root handle 1:"
]
},
{
"id": "0b8f",
"name": "Try to add ets class to the active list twice",
"category": [
"qdisc",
"ets",
"tbf"
],
"plugins": {
"requires": [
"nsPlugin",
"scapyPlugin"
]
},
"setup": [
"$IP link set dev $DUMMY up || true",
"$IP addr add 10.10.11.10/24 dev $DUMMY || true",
"$TC qdisc add dev $DUMMY root handle 1: ets bands 2 strict 1",
"$TC qdisc add dev $DUMMY parent 1:2 handle 20: tbf rate 8bit burst 100b latency 1s",
"$TC filter add dev $DUMMY parent 1: basic classid 1:2",
"ping -c2 -W0.01 -s 56 -I $DUMMY 10.10.11.11 || true",
"$TC qdisc change dev $DUMMY root handle 1: ets bands 2 strict 2",
"$TC qdisc change dev $DUMMY root handle 1: ets bands 2 strict 1"
],
"cmdUnderTest": "ping -c1 -W0.01 -s 56 -I $DUMMY 10.10.11.11",
"expExitCode": "1",
"verifyCmd": "$TC -s -j qdisc ls dev $DUMMY root",
"matchJSON": [
{
"kind": "ets",
"handle": "1:",
"bytes": 98,
"packets": 1
}
],
"teardown": [
"$TC qdisc del dev $DUMMY root handle 1:"
]
} }
] ]