Skip to content

Commit c3572ac

Browse files
congwangPaolo Abeni
authored andcommitted
selftests/tc-testing: Add an HFSC qlen accounting test
This test reproduces a scenario where HFSC queue length and backlog accounting can become inconsistent when a peek operation triggers a dequeue and possible drop before the parent qdisc updates its counters. The test sets up a DRR root qdisc with an HFSC class, netem, and blackhole children, and uses Scapy to inject a packet. It helps to verify that HFSC correctly tracks qlen and backlog even when packets are dropped during peek-induced dequeue. Cc: Mingi Cho <[email protected]> Signed-off-by: Cong Wang <[email protected]> Reviewed-by: Simon Horman <[email protected]> Link: https://patch.msgid.link/[email protected] Reviewed-by: Jamal Hadi Salim <[email protected]> Signed-off-by: Paolo Abeni <[email protected]>
1 parent 3f98113 commit c3572ac

File tree

1 file changed

+27
-0
lines changed
  • tools/testing/selftests/tc-testing/tc-tests/infra

1 file changed

+27
-0
lines changed

tools/testing/selftests/tc-testing/tc-tests/infra/qdiscs.json

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,5 +573,32 @@
573573
"teardown": [
574574
"$TC qdisc del dev $DEV1 handle 1: root"
575575
]
576+
},
577+
{
578+
"id": "831d",
579+
"name": "Test HFSC qlen accounting with DRR/NETEM/BLACKHOLE chain",
580+
"category": ["qdisc", "hfsc", "drr", "netem", "blackhole"],
581+
"plugins": { "requires": ["nsPlugin", "scapyPlugin"] },
582+
"setup": [
583+
"$IP link set dev $DEV1 up || true",
584+
"$TC qdisc add dev $DEV1 root handle 1: drr",
585+
"$TC filter add dev $DEV1 parent 1: basic classid 1:1",
586+
"$TC class add dev $DEV1 parent 1: classid 1:1 drr",
587+
"$TC qdisc add dev $DEV1 parent 1:1 handle 2: hfsc def 1",
588+
"$TC class add dev $DEV1 parent 2: classid 2:1 hfsc rt m1 8 d 1 m2 0",
589+
"$TC qdisc add dev $DEV1 parent 2:1 handle 3: netem",
590+
"$TC qdisc add dev $DEV1 parent 3:1 handle 4: blackhole"
591+
],
592+
"scapy": {
593+
"iface": "$DEV0",
594+
"count": 5,
595+
"packet": "Ether()/IP(dst='10.10.10.1', src='10.10.10.10')/ICMP()"
596+
},
597+
"cmdUnderTest": "$TC -s qdisc show dev $DEV1",
598+
"expExitCode": "0",
599+
"verifyCmd": "$TC -s qdisc show dev $DEV1",
600+
"matchPattern": "qdisc hfsc",
601+
"matchCount": "1",
602+
"teardown": ["$TC qdisc del dev $DEV1 root handle 1: drr"]
576603
}
577604
]

0 commit comments

Comments
 (0)