mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2025-04-19 20:58:31 +09:00

Add a test case to validate the interaction between TBF and SKBPRIO queueing disciplines, specifically targeting queue length accounting corner cases. This test complements the fix for the queue length accounting issue in the SKBPRIO qdisc. This is still best-effort, as timing and manipulating enqueue and dequeue from user-space is very hard. Cc: Pedro Tammela <pctammela@mojatatu.com> Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com> Acked-by: Paolo Abeni <pabeni@redhat.com> Link: https://patch.msgid.link/20250329222536.696204-3-xiyou.wangcong@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
163 lines
6.3 KiB
JSON
163 lines
6.3 KiB
JSON
[
|
|
{
|
|
"id": "ca5e",
|
|
"name": "Check class delete notification for ffff:",
|
|
"category": [
|
|
"qdisc"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
"$IP link set dev $DUMMY up || true",
|
|
"$IP addr add 10.10.10.10/24 dev $DUMMY || true",
|
|
"$TC qdisc add dev $DUMMY root handle 1: drr",
|
|
"$TC filter add dev $DUMMY parent 1: basic classid 1:1",
|
|
"$TC class add dev $DUMMY parent 1: classid 1:1 drr",
|
|
"$TC qdisc add dev $DUMMY parent 1:1 handle ffff: drr",
|
|
"$TC filter add dev $DUMMY parent ffff: basic classid ffff:1",
|
|
"$TC class add dev $DUMMY parent ffff: classid ffff:1 drr",
|
|
"$TC qdisc add dev $DUMMY parent ffff:1 netem delay 1s",
|
|
"ping -c1 -W0.01 -I $DUMMY 10.10.10.1 || true",
|
|
"$TC class del dev $DUMMY classid ffff:1",
|
|
"$TC class add dev $DUMMY parent ffff: classid ffff:1 drr"
|
|
],
|
|
"cmdUnderTest": "ping -c1 -W0.01 -I $DUMMY 10.10.10.1",
|
|
"expExitCode": "1",
|
|
"verifyCmd": "$TC -s qdisc ls dev $DUMMY",
|
|
"matchPattern": "drr 1: root",
|
|
"matchCount": "1",
|
|
"teardown": [
|
|
"$TC qdisc del dev $DUMMY root handle 1: drr",
|
|
"$IP addr del 10.10.10.10/24 dev $DUMMY"
|
|
]
|
|
},
|
|
{
|
|
"id": "e4b7",
|
|
"name": "Check class delete notification for root ffff:",
|
|
"category": [
|
|
"qdisc"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
"$IP link set dev $DUMMY up || true",
|
|
"$IP addr add 10.10.10.10/24 dev $DUMMY || true",
|
|
"$TC qdisc add dev $DUMMY root handle ffff: drr",
|
|
"$TC filter add dev $DUMMY parent ffff: basic classid ffff:1",
|
|
"$TC class add dev $DUMMY parent ffff: classid ffff:1 drr",
|
|
"$TC qdisc add dev $DUMMY parent ffff:1 netem delay 1s",
|
|
"ping -c1 -W0.01 -I $DUMMY 10.10.10.1 || true",
|
|
"$TC class del dev $DUMMY classid ffff:1",
|
|
"$TC class add dev $DUMMY parent ffff: classid ffff:1 drr"
|
|
],
|
|
"cmdUnderTest": "ping -c1 -W0.01 -I $DUMMY 10.10.10.1",
|
|
"expExitCode": "1",
|
|
"verifyCmd": "$TC qdisc ls dev $DUMMY",
|
|
"matchPattern": "drr ffff: root",
|
|
"matchCount": "1",
|
|
"teardown": [
|
|
"$TC qdisc del dev $DUMMY root handle ffff: drr",
|
|
"$IP addr del 10.10.10.10/24 dev $DUMMY"
|
|
]
|
|
},
|
|
{
|
|
"id": "33a9",
|
|
"name": "Check ingress is not searchable on backlog update",
|
|
"category": [
|
|
"qdisc"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
"$IP link set dev $DUMMY up || true",
|
|
"$IP addr add 10.10.10.10/24 dev $DUMMY || true",
|
|
"$TC qdisc add dev $DUMMY ingress",
|
|
"$TC qdisc add dev $DUMMY root handle 1: drr",
|
|
"$TC filter add dev $DUMMY parent 1: basic classid 1:1",
|
|
"$TC class add dev $DUMMY parent 1: classid 1:1 drr",
|
|
"$TC qdisc add dev $DUMMY parent 1:1 handle 2: drr",
|
|
"$TC filter add dev $DUMMY parent 2: basic classid 2:1",
|
|
"$TC class add dev $DUMMY parent 2: classid 2:1 drr",
|
|
"$TC qdisc add dev $DUMMY parent 2:1 netem delay 1s",
|
|
"ping -c1 -W0.01 -I $DUMMY 10.10.10.1 || true"
|
|
],
|
|
"cmdUnderTest": "$TC class del dev $DUMMY classid 2:1",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc ls dev $DUMMY",
|
|
"matchPattern": "drr 1: root",
|
|
"matchCount": "1",
|
|
"teardown": [
|
|
"$TC qdisc del dev $DUMMY root handle 1: drr",
|
|
"$TC qdisc del dev $DUMMY ingress",
|
|
"$IP addr del 10.10.10.10/24 dev $DUMMY"
|
|
]
|
|
},
|
|
{
|
|
"id": "a4b9",
|
|
"name": "Test class qlen notification",
|
|
"category": [
|
|
"qdisc"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
"$IP link set dev $DUMMY up || true",
|
|
"$IP addr add 10.10.10.10/24 dev $DUMMY || true",
|
|
"$TC qdisc add dev $DUMMY root handle 1: drr",
|
|
"$TC filter add dev $DUMMY parent 1: basic classid 1:1",
|
|
"$TC class add dev $DUMMY parent 1: classid 1:1 drr",
|
|
"$TC qdisc add dev $DUMMY parent 1:1 handle 2: netem",
|
|
"$TC qdisc add dev $DUMMY parent 2: handle 3: drr",
|
|
"$TC filter add dev $DUMMY parent 3: basic action drop",
|
|
"$TC class add dev $DUMMY parent 3: classid 3:1 drr",
|
|
"$TC class del dev $DUMMY classid 1:1",
|
|
"$TC class add dev $DUMMY parent 1: classid 1:1 drr"
|
|
],
|
|
"cmdUnderTest": "ping -c1 -W0.01 -I $DUMMY 10.10.10.1",
|
|
"expExitCode": "1",
|
|
"verifyCmd": "$TC qdisc ls dev $DUMMY",
|
|
"matchPattern": "drr 1: root",
|
|
"matchCount": "1",
|
|
"teardown": [
|
|
"$TC qdisc del dev $DUMMY root handle 1: drr",
|
|
"$IP addr del 10.10.10.10/24 dev $DUMMY"
|
|
]
|
|
},
|
|
{
|
|
"id": "c024",
|
|
"name": "Test TBF with SKBPRIO - catch qlen corner cases",
|
|
"category": [
|
|
"qdisc",
|
|
"tbf",
|
|
"skbprio"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
"$IP link set dev $DUMMY up || true",
|
|
"$IP addr add 10.10.10.10/24 dev $DUMMY || true",
|
|
"$TC qdisc add dev $DUMMY handle 1: root tbf rate 100bit burst 2000 limit 1000",
|
|
"$TC qdisc add dev $DUMMY parent 1: handle 10: skbprio limit 1",
|
|
"ping -c 1 -W 0.1 -Q 0x00 -s 1400 -I $DUMMY 10.10.10.1 > /dev/null || true",
|
|
"ping -c 1 -W 0.1 -Q 0x1c -s 1400 -I $DUMMY 10.10.10.1 > /dev/null || true",
|
|
"ping -c 1 -W 0.1 -Q 0x00 -s 1400 -I $DUMMY 10.10.10.1 > /dev/null || true",
|
|
"ping -c 1 -W 0.1 -Q 0x1c -s 1400 -I $DUMMY 10.10.10.1 > /dev/null || true",
|
|
"sleep 0.5"
|
|
],
|
|
"cmdUnderTest": "$TC -s qdisc show dev $DUMMY",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC -s qdisc show dev $DUMMY | grep -A 5 'qdisc skbprio'",
|
|
"matchPattern": "dropped [1-9][0-9]*",
|
|
"matchCount": "1",
|
|
"teardown": [
|
|
"$TC qdisc del dev $DUMMY handle 1: root",
|
|
"$IP addr del 10.10.10.10/24 dev $DUMMY || true"
|
|
]
|
|
}
|
|
]
|