On 13/06/2023 18:54, Vladimir Oltean wrote:
> 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>
Other than the comment below,
Reviewed-by: Pedro Tammela <pctammela@mojatatu.com>
> ---
> v1->v2: patch is new
>
> .../tc-testing/tc-tests/qdiscs/taprio.json | 50 +++++++++++++++++++
> 1 file changed, 50 insertions(+)
>
> diff --git a/tools/testing/selftests/tc-testing/tc-tests/qdiscs/taprio.json b/tools/testing/selftests/tc-testing/tc-tests/qdiscs/taprio.json
> index 58d4d97f4499..47692335bcf1 100644
> --- a/tools/testing/selftests/tc-testing/tc-tests/qdiscs/taprio.json
> +++ b/tools/testing/selftests/tc-testing/tc-tests/qdiscs/taprio.json
> @@ -179,5 +179,55 @@
> "$TC qdisc del dev $ETH root",
> "echo \"1\" > /sys/bus/netdevsim/del_device"
> ]
> + },
> + {
> + "id": "a7bf",
> + "name": "Graft cbs as child of software taprio",
> + "category": [
> + "qdisc",
> + "taprio",
> + "cbs"
> + ],
> + "plugins": {
> + "requires": "nsPlugin"
> + },
> + "setup": [
> + "echo \"1 1 8\" > /sys/bus/netdevsim/new_device",
> + "$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"
> + ],
> + "cmdUnderTest": "$TC qdisc replace dev $ETH handle 8002: parent 8001:8 cbs idleslope 20000 sendslope -980000 hicredit 30 locredit -1470",
> + "expExitCode": "0",
> + "verifyCmd": "$TC -d qdisc show dev $ETH",
> + "matchPattern": "qdisc cbs 8002: parent 8001:8 hicredit 30 locredit -1470 sendslope -980000 idleslope 20000 offload 0",
> + "matchCount": "1",
> + "teardown": [
> + "$TC qdisc del dev $ETH root",
> + "echo \"1\" > /sys/bus/netdevsim/del_device"
> + ]
> + },
> + {
> + "id": "6a83",
> + "name": "Graft cbs as child of offloaded taprio",
> + "category": [
> + "qdisc",
> + "taprio",
> + "cbs"
> + ],
> + "plugins": {
> + "requires": "nsPlugin"
> + },
> + "setup": [
> + "echo \"1 1 8\" > /sys/bus/netdevsim/new_device",
> + "$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"
> + ],
> + "cmdUnderTest": "$TC qdisc replace dev $ETH handle 8002: parent 8001:8 cbs idleslope 20000 sendslope -980000 hicredit 30 locredit -1470",
> + "expExitCode": "0",
> + "verifyCmd": "$TC -d qdisc show dev $ETH",
> + "matchPattern": "qdisc cbs 8002: parent 8001:8 hicredit 30 locredit -1470 sendslope -980000 idleslope 20000 offload 0",
Seems like this test is missing the 'refcnt 2' in the match pattern
> + "matchCount": "1",
> + "teardown": [
> + "$TC qdisc del dev $ETH root",
> + "echo \"1\" > /sys/bus/netdevsim/del_device"
> + ]
> }
> ]