mirror of
https://github.com/torvalds/linux.git
synced 2026-10-16 21:00:02 +02:00
Add tdc cases locking the codel/fq_codel small-interval uAPI after
the dropping-loop bound (previous patch): sub-tick and two-tick
intervals are ACCEPTED (the loop bound makes them safe), the
1024us boundary is accepted, and a sub-tick target sojourn delay is
accepted (it does not participate in the control law):
codel: 6e44/a8c3/a695/9793 - interval 1us/3us/1024us and
target 1us accepted (rendered 0us/2us/1.02ms/0us by tc)
fq_codel: 1b4d/3540/49c5/3e0f - interval 1us/3us/1024us and
target 1us accepted
The positive cases match the full rendered qdisc line (tc renders
interval 1us as 0us, 3us as 2us, 1024us as 1.02ms), mirroring the
existing tests in these files.
These cases do not test the dropping-loop bound itself: tdc cannot
observe per-dequeue drop counts. c797 (fq_codel target 1 interval 1)
passes unmodified on the patched kernel, which is the uAPI evidence
for the previous patch.
Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Link: https://patch.msgid.link/QDISC-1L5H.v1.20260912080102@mojatatu.com.2
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
393 lines
13 KiB
JSON
393 lines
13 KiB
JSON
[
|
|
{
|
|
"id": "4957",
|
|
"name": "Create FQ_CODEL with default setting",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
],
|
|
"cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq_codel",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc show dev $DUMMY",
|
|
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 10240p flows 1024 quantum.*target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64",
|
|
"matchCount": "1",
|
|
"teardown": [
|
|
"$TC qdisc del dev $DUMMY handle 1: root"
|
|
]
|
|
},
|
|
{
|
|
"id": "7621",
|
|
"name": "Create FQ_CODEL with limit setting",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
],
|
|
"cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq_codel limit 1000",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc show dev $DUMMY",
|
|
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 1000p flows 1024 quantum.*target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64",
|
|
"matchCount": "1",
|
|
"teardown": [
|
|
"$TC qdisc del dev $DUMMY handle 1: root"
|
|
]
|
|
},
|
|
{
|
|
"id": "6871",
|
|
"name": "Create FQ_CODEL with memory_limit setting",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
],
|
|
"cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq_codel memory_limit 100000",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc show dev $DUMMY",
|
|
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 10240p flows 1024 quantum.*target 5ms interval 100ms memory_limit 100000b ecn drop_batch 64",
|
|
"matchCount": "1",
|
|
"teardown": [
|
|
"$TC qdisc del dev $DUMMY handle 1: root"
|
|
]
|
|
},
|
|
{
|
|
"id": "5636",
|
|
"name": "Create FQ_CODEL with target setting",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
],
|
|
"cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq_codel target 2000",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc show dev $DUMMY",
|
|
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 10240p flows 1024 quantum.*target 2ms interval 100ms memory_limit 32Mb ecn drop_batch 64",
|
|
"matchCount": "1",
|
|
"teardown": [
|
|
"$TC qdisc del dev $DUMMY handle 1: root"
|
|
]
|
|
},
|
|
{
|
|
"id": "630a",
|
|
"name": "Create FQ_CODEL with interval setting",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
],
|
|
"cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq_codel interval 5000",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc show dev $DUMMY",
|
|
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 10240p flows 1024 quantum.*target 5ms interval 5ms memory_limit 32Mb ecn drop_batch 64",
|
|
"matchCount": "1",
|
|
"teardown": [
|
|
"$TC qdisc del dev $DUMMY handle 1: root"
|
|
]
|
|
},
|
|
{
|
|
"id": "4324",
|
|
"name": "Create FQ_CODEL with quantum setting",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
],
|
|
"cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq_codel quantum 9000",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc show dev $DUMMY",
|
|
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 10240p flows 1024 quantum 9000 target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 64",
|
|
"matchCount": "1",
|
|
"teardown": [
|
|
"$TC qdisc del dev $DUMMY handle 1: root"
|
|
]
|
|
},
|
|
{
|
|
"id": "b190",
|
|
"name": "Create FQ_CODEL with noecn flag",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
],
|
|
"cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq_codel noecn",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc show dev $DUMMY",
|
|
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 10240p flows 1024 quantum.*target 5ms interval 100ms memory_limit 32Mb drop_batch 64",
|
|
"matchCount": "1",
|
|
"teardown": [
|
|
"$TC qdisc del dev $DUMMY handle 1: root"
|
|
]
|
|
},
|
|
{
|
|
"id": "5381",
|
|
"name": "Create FQ_CODEL with ce_threshold setting",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
],
|
|
"cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq_codel ce_threshold 1024000",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc show dev $DUMMY",
|
|
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 10240p flows 1024 quantum.*target 5ms ce_threshold 1.02s interval 100ms memory_limit 32Mb ecn drop_batch 64",
|
|
"matchCount": "1",
|
|
"teardown": [
|
|
"$TC qdisc del dev $DUMMY handle 1: root"
|
|
]
|
|
},
|
|
{
|
|
"id": "c9d2",
|
|
"name": "Create FQ_CODEL with drop_batch setting",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
],
|
|
"cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq_codel drop_batch 100",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc show dev $DUMMY",
|
|
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 10240p flows 1024 quantum.*target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 100",
|
|
"matchCount": "1",
|
|
"teardown": [
|
|
"$TC qdisc del dev $DUMMY handle 1: root"
|
|
]
|
|
},
|
|
{
|
|
"id": "523b",
|
|
"name": "Create FQ_CODEL with multiple setting",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
],
|
|
"cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq_codel limit 1000 flows 256 drop_batch 100",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc show dev $DUMMY",
|
|
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 1000p flows 256 quantum.*target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 100",
|
|
"matchCount": "1",
|
|
"teardown": [
|
|
"$TC qdisc del dev $DUMMY handle 1: root"
|
|
]
|
|
},
|
|
{
|
|
"id": "9283",
|
|
"name": "Replace FQ_CODEL with noecn setting",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
"$TC qdisc add dev $DUMMY handle 1: root fq_codel limit 1000 flows 256 drop_batch 100"
|
|
],
|
|
"cmdUnderTest": "$TC qdisc replace dev $DUMMY handle 1: root fq_codel noecn",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc show dev $DUMMY",
|
|
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 1000p flows 256 quantum.*target 5ms interval 100ms memory_limit 32Mb drop_batch 100",
|
|
"matchCount": "1",
|
|
"teardown": [
|
|
"$TC qdisc del dev $DUMMY handle 1: root"
|
|
]
|
|
},
|
|
{
|
|
"id": "3459",
|
|
"name": "Change FQ_CODEL with limit setting",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
"$TC qdisc add dev $DUMMY handle 1: root fq_codel limit 1000 flows 256 drop_batch 100"
|
|
],
|
|
"cmdUnderTest": "$TC qdisc change dev $DUMMY handle 1: root fq_codel limit 2000",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc show dev $DUMMY",
|
|
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 2000p flows 256 quantum.*target 5ms interval 100ms memory_limit 32Mb ecn drop_batch 100",
|
|
"matchCount": "1",
|
|
"teardown": [
|
|
"$TC qdisc del dev $DUMMY handle 1: root"
|
|
]
|
|
},
|
|
{
|
|
"id": "0128",
|
|
"name": "Delete FQ_CODEL with handle",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
"$TC qdisc add dev $DUMMY handle 1: root fq_codel limit 1000 flows 256 drop_batch 100"
|
|
],
|
|
"cmdUnderTest": "$TC qdisc del dev $DUMMY handle 1: root",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc show dev $DUMMY",
|
|
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 1000p flows 256 quantum.*target 5ms interval 100ms memory_limit 32Mb noecn drop_batch 100",
|
|
"matchCount": "0",
|
|
"teardown": [
|
|
]
|
|
},
|
|
{
|
|
"id": "0435",
|
|
"name": "Show FQ_CODEL class",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [
|
|
],
|
|
"cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq_codel",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC class show dev $DUMMY",
|
|
"matchPattern": "class fq_codel 1:",
|
|
"matchCount": "0",
|
|
"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"]
|
|
},
|
|
{
|
|
"id": "1b4d",
|
|
"name": "Create FQ_CODEL with 1us interval, accepted (sub-tick, uAPI locked)",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [],
|
|
"cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq_codel interval 1us",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc show dev $DUMMY",
|
|
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 10240p flows 1024 quantum [0-9]+ target 5ms interval 0us memory_limit 32Mb ecn drop_batch 64",
|
|
"matchCount": "1",
|
|
"teardown": ["$TC qdisc del dev $DUMMY handle 1: root"]
|
|
},
|
|
{
|
|
"id": "3540",
|
|
"name": "Create FQ_CODEL with 3us interval, accepted (two ticks)",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [],
|
|
"cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq_codel interval 3us",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc show dev $DUMMY",
|
|
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 10240p flows 1024 quantum [0-9]+ target 5ms interval 2us memory_limit 32Mb ecn drop_batch 64",
|
|
"matchCount": "1",
|
|
"teardown": ["$TC qdisc del dev $DUMMY handle 1: root"]
|
|
},
|
|
{
|
|
"id": "49c5",
|
|
"name": "Create FQ_CODEL with 1024us interval boundary accepted",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [],
|
|
"cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq_codel interval 1024us",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc show dev $DUMMY",
|
|
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 10240p flows 1024 quantum [0-9]+ target 5ms interval 1.02ms memory_limit 32Mb ecn drop_batch 64",
|
|
"matchCount": "1",
|
|
"teardown": ["$TC qdisc del dev $DUMMY handle 1: root"]
|
|
},
|
|
{
|
|
"id": "3e0f",
|
|
"name": "Create FQ_CODEL with 1us target, accepted (target not in control law)",
|
|
"category": [
|
|
"qdisc",
|
|
"fq_codel"
|
|
],
|
|
"plugins": {
|
|
"requires": "nsPlugin"
|
|
},
|
|
"setup": [],
|
|
"cmdUnderTest": "$TC qdisc add dev $DUMMY handle 1: root fq_codel target 1us",
|
|
"expExitCode": "0",
|
|
"verifyCmd": "$TC qdisc show dev $DUMMY",
|
|
"matchPattern": "qdisc fq_codel 1: root refcnt [0-9]+ limit 10240p flows 1024 quantum [0-9]+ target 0us interval 100ms memory_limit 32Mb ecn drop_batch 64",
|
|
"matchCount": "1",
|
|
"teardown": ["$TC qdisc del dev $DUMMY handle 1: root"]
|
|
}
|
|
]
|