Skip to content

Commit

Permalink
selftests/tc-testing: Add qdisc limit trimming tests
Browse files Browse the repository at this point in the history
Added new test cases for FQ, FQ_CODEL, FQ_PIE, and HHF qdiscs to verify queue
trimming behavior when the qdisc limit is dynamically reduced.

Each test injects packets, reduces the qdisc limit, and checks that the new
limit is enforced. This is still best effort since timing qdisc backlog
is not easy.

Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Cong Wang authored and David S. Miller committed May 9, 2025
1 parent 2d3cbfd commit 16ce349
Show file tree
Hide file tree
Showing 6 changed files with 136 additions and 0 deletions.
24 changes: 24 additions & 0 deletions tools/testing/selftests/tc-testing/tc-tests/qdiscs/codel.json
Original file line number Diff line number Diff line change
Expand Up @@ -189,5 +189,29 @@
"teardown": [
"$TC qdisc del dev $DUMMY handle 1: root"
]
},
{
"id": "deb1",
"name": "CODEL test qdisc limit trimming",
"category": ["qdisc", "codel"],
"plugins": {
"requires": ["nsPlugin", "scapyPlugin"]
},
"setup": [
"$TC qdisc add dev $DEV1 handle 1: root codel limit 10"
],
"scapy": [
{
"iface": "$DEV0",
"count": 10,
"packet": "Ether(type=0x800)/IP(src='10.0.0.10',dst='10.0.0.20')/TCP(sport=5000,dport=10)"
}
],
"cmdUnderTest": "$TC qdisc change dev $DEV1 handle 1: root codel limit 1",
"expExitCode": "0",
"verifyCmd": "$TC qdisc show dev $DEV1",
"matchPattern": "qdisc codel 1: root refcnt [0-9]+ limit 1p target 5ms interval 100ms",
"matchCount": "1",
"teardown": ["$TC qdisc del dev $DEV1 handle 1: root"]
}
]
22 changes: 22 additions & 0 deletions tools/testing/selftests/tc-testing/tc-tests/qdiscs/fq.json
Original file line number Diff line number Diff line change
Expand Up @@ -377,5 +377,27 @@
"teardown": [
"$TC qdisc del dev $DUMMY handle 1: root"
]
},
{
"id": "9479",
"name": "FQ test qdisc limit trimming",
"category": ["qdisc", "fq"],
"plugins": {"requires": ["nsPlugin", "scapyPlugin"]},
"setup": [
"$TC qdisc add dev $DEV1 handle 1: root fq limit 10"
],
"scapy": [
{
"iface": "$DEV0",
"count": 10,
"packet": "Ether(type=0x800)/IP(src='10.0.0.10',dst='10.0.0.20')/TCP(sport=5000,dport=10)"
}
],
"cmdUnderTest": "$TC qdisc change dev $DEV1 handle 1: root fq limit 1",
"expExitCode": "0",
"verifyCmd": "$TC qdisc show dev $DEV1",
"matchPattern": "qdisc fq 1: root refcnt [0-9]+ limit 1p",
"matchCount": "1",
"teardown": ["$TC qdisc del dev $DEV1 handle 1: root"]
}
]
22 changes: 22 additions & 0 deletions tools/testing/selftests/tc-testing/tc-tests/qdiscs/fq_codel.json
Original file line number Diff line number Diff line change
Expand Up @@ -294,5 +294,27 @@
"teardown": [
"$TC qdisc del dev $DUMMY handle 1: root"
]
},
{
"id": "0436",
"name": "FQ_CODEL test qdisc limit trimming",
"category": ["qdisc", "fq_codel"],
"plugins": {"requires": ["nsPlugin", "scapyPlugin"]},
"setup": [
"$TC qdisc add dev $DEV1 handle 1: root fq_codel limit 10"
],
"scapy": [
{
"iface": "$DEV0",
"count": 10,
"packet": "Ether(type=0x800)/IP(src='10.0.0.10',dst='10.0.0.20')/TCP(sport=5000,dport=10)"
}
],
"cmdUnderTest": "$TC qdisc change dev $DEV1 handle 1: root fq_codel limit 1",
"expExitCode": "0",
"verifyCmd": "$TC qdisc show dev $DEV1",
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 1p flows 1024 quantum.*target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64",
"matchCount": "1",
"teardown": ["$TC qdisc del dev $DEV1 handle 1: root"]
}
]
22 changes: 22 additions & 0 deletions tools/testing/selftests/tc-testing/tc-tests/qdiscs/fq_pie.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,27 @@
"matchCount": "1",
"teardown": [
]
},
{
"id": "83bf",
"name": "FQ_PIE test qdisc limit trimming",
"category": ["qdisc", "fq_pie"],
"plugins": {"requires": ["nsPlugin", "scapyPlugin"]},
"setup": [
"$TC qdisc add dev $DEV1 handle 1: root fq_pie limit 10"
],
"scapy": [
{
"iface": "$DEV0",
"count": 10,
"packet": "Ether(type=0x800)/IP(src='10.0.0.10',dst='10.0.0.20')/TCP(sport=5000,dport=10)"
}
],
"cmdUnderTest": "$TC qdisc change dev $DEV1 handle 1: root fq_pie limit 1",
"expExitCode": "0",
"verifyCmd": "$TC qdisc show dev $DEV1",
"matchPattern": "qdisc fq_pie 1: root refcnt [0-9]+ limit 1p",
"matchCount": "1",
"teardown": ["$TC qdisc del dev $DEV1 handle 1: root"]
}
]
22 changes: 22 additions & 0 deletions tools/testing/selftests/tc-testing/tc-tests/qdiscs/hhf.json
Original file line number Diff line number Diff line change
Expand Up @@ -188,5 +188,27 @@
"teardown": [
"$TC qdisc del dev $DUMMY handle 1: root"
]
},
{
"id": "385f",
"name": "HHF test qdisc limit trimming",
"category": ["qdisc", "hhf"],
"plugins": {"requires": ["nsPlugin", "scapyPlugin"]},
"setup": [
"$TC qdisc add dev $DEV1 handle 1: root hhf limit 10"
],
"scapy": [
{
"iface": "$DEV0",
"count": 10,
"packet": "Ether(type=0x800)/IP(src='10.0.0.10',dst='10.0.0.20')/TCP(sport=5000,dport=10)"
}
],
"cmdUnderTest": "$TC qdisc change dev $DEV1 handle 1: root hhf limit 1",
"expExitCode": "0",
"verifyCmd": "$TC qdisc show dev $DEV1",
"matchPattern": "qdisc hhf 1: root refcnt [0-9]+ limit 1p.*hh_limit 2048 reset_timeout 40ms admit_bytes 128Kb evict_timeout 1s non_hh_weight 2",
"matchCount": "1",
"teardown": ["$TC qdisc del dev $DEV1 handle 1: root"]
}
]
24 changes: 24 additions & 0 deletions tools/testing/selftests/tc-testing/tc-tests/qdiscs/pie.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
[
{
"id": "6158",
"name": "PIE test qdisc limit trimming",
"category": ["qdisc", "pie"],
"plugins": {"requires": ["nsPlugin", "scapyPlugin"]},
"setup": [
"$TC qdisc add dev $DEV1 handle 1: root pie limit 10"
],
"scapy": [
{
"iface": "$DEV0",
"count": 10,
"packet": "Ether(type=0x800)/IP(src='10.0.0.10',dst='10.0.0.20')/TCP(sport=5000,dport=10)"
}
],
"cmdUnderTest": "$TC qdisc change dev $DEV1 handle 1: root pie limit 1",
"expExitCode": "0",
"verifyCmd": "$TC qdisc show dev $DEV1",
"matchPattern": "qdisc pie 1: root refcnt [0-9]+ limit 1p",
"matchCount": "1",
"teardown": ["$TC qdisc del dev $DEV1 handle 1: root"]
}
]

0 comments on commit 16ce349

Please sign in to comment.