Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests/tc-testing: verify that a qdisc can be grafted onto a taprio class

The reason behind commit af7b29b1deaa ("Revert "net/sched: taprio: make
qdisc_leaf() see the per-netdev-queue pfifo child qdiscs"") was that the
patch it reverted caused a crash when attaching a CBS shaper to one of
the taprio classes. Prevent that from happening again by adding a test
case for it, which now passes correctly in both offload and software
modes.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Pedro Tammela <pctammela@mojatatu.com>
Link: https://lore.kernel.org/r/20230807193324.4128292-12-vladimir.oltean@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Vladimir Oltean and committed by
Jakub Kicinski
29c298d2 1890cf08

+50
+50
tools/testing/selftests/tc-testing/tc-tests/qdiscs/taprio.json
··· 206 206 "$TC qdisc del dev $ETH root", 207 207 "echo \"1\" > /sys/bus/netdevsim/del_device" 208 208 ] 209 + }, 210 + { 211 + "id": "a7bf", 212 + "name": "Graft cbs as child of software taprio", 213 + "category": [ 214 + "qdisc", 215 + "taprio", 216 + "cbs" 217 + ], 218 + "plugins": { 219 + "requires": "nsPlugin" 220 + }, 221 + "setup": [ 222 + "echo \"1 1 8\" > /sys/bus/netdevsim/new_device", 223 + "$TC qdisc replace dev $ETH handle 8001: parent root stab overhead 24 taprio num_tc 8 map 0 1 2 3 4 5 6 7 queues 1@0 1@1 1@2 1@3 1@4 1@5 1@6 1@7 base-time 0 sched-entry S ff 20000000 clockid CLOCK_TAI" 224 + ], 225 + "cmdUnderTest": "$TC qdisc replace dev $ETH handle 8002: parent 8001:8 cbs idleslope 20000 sendslope -980000 hicredit 30 locredit -1470", 226 + "expExitCode": "0", 227 + "verifyCmd": "$TC -d qdisc show dev $ETH", 228 + "matchPattern": "qdisc cbs 8002: parent 8001:8 hicredit 30 locredit -1470 sendslope -980000 idleslope 20000 offload 0", 229 + "matchCount": "1", 230 + "teardown": [ 231 + "$TC qdisc del dev $ETH root", 232 + "echo \"1\" > /sys/bus/netdevsim/del_device" 233 + ] 234 + }, 235 + { 236 + "id": "6a83", 237 + "name": "Graft cbs as child of offloaded taprio", 238 + "category": [ 239 + "qdisc", 240 + "taprio", 241 + "cbs" 242 + ], 243 + "plugins": { 244 + "requires": "nsPlugin" 245 + }, 246 + "setup": [ 247 + "echo \"1 1 8\" > /sys/bus/netdevsim/new_device", 248 + "$TC qdisc replace dev $ETH handle 8001: parent root stab overhead 24 taprio num_tc 8 map 0 1 2 3 4 5 6 7 queues 1@0 1@1 1@2 1@3 1@4 1@5 1@6 1@7 base-time 0 sched-entry S ff 20000000 flags 0x2" 249 + ], 250 + "cmdUnderTest": "$TC qdisc replace dev $ETH handle 8002: parent 8001:8 cbs idleslope 20000 sendslope -980000 hicredit 30 locredit -1470", 251 + "expExitCode": "0", 252 + "verifyCmd": "$TC -d qdisc show dev $ETH", 253 + "matchPattern": "qdisc cbs 8002: parent 8001:8 refcnt 2 hicredit 30 locredit -1470 sendslope -980000 idleslope 20000 offload 0", 254 + "matchCount": "1", 255 + "teardown": [ 256 + "$TC qdisc del dev $ETH root", 257 + "echo \"1\" > /sys/bus/netdevsim/del_device" 258 + ] 209 259 } 210 260 ]