Message ID | 20220917050204.127191-1-shaozhengchao@huawei.com (mailing list archive) |
---|---|
Headers | show |
Series | refactor duplicate codes in the qdisc class walk function | expand |
On 17/09/2022 02:02, Zhengchao Shao wrote: > The walk implementation of most qdisc class modules is basically the > same. That is, the values of count and skip are checked first. If count > is greater than or equal to skip, the registered fn function is > executed. Otherwise, increase the value of count. So the code can be > refactored. > > The walk function is invoked during dump. Therefore, test cases related > to the tdc filter need to be added. > > Last, thanks to Victor for his review. > > Add test cases locally and perform the test. The test results are listed > below: > > ./tdc.py -c cake > ok 1 1212 - Create CAKE with default setting > ok 2 3281 - Create CAKE with bandwidth limit > ok 3 c940 - Create CAKE with autorate-ingress flag > ok 4 2310 - Create CAKE with rtt time > ok 5 2385 - Create CAKE with besteffort flag > ok 6 a032 - Create CAKE with diffserv8 flag > ok 7 2349 - Create CAKE with diffserv4 flag > ok 8 8472 - Create CAKE with flowblind flag > ok 9 2341 - Create CAKE with dsthost and nat flag > ok 10 5134 - Create CAKE with wash flag > ok 11 2302 - Create CAKE with flowblind and no-split-gso flag > ok 12 0768 - Create CAKE with dual-srchost and ack-filter flag > ok 13 0238 - Create CAKE with dual-dsthost and ack-filter-aggressive flag > ok 14 6572 - Create CAKE with memlimit and ptm flag > ok 15 2436 - Create CAKE with fwmark and atm flag > ok 16 3984 - Create CAKE with overhead and mpu > ok 17 5421 - Create CAKE with conservative and ingress flag > ok 18 6854 - Delete CAKE with conservative and ingress flag > ok 19 2342 - Replace CAKE with mpu > ok 20 2313 - Change CAKE with mpu > ok 21 4365 - Show CAKE class > > ./tdc.py -c cbq > ok 1 3460 - Create CBQ with default setting > ok 2 0592 - Create CBQ with mpu > ok 3 4684 - Create CBQ with valid cell num > ok 4 4345 - Create CBQ with invalid cell num > ok 5 4525 - Create CBQ with valid ewma > ok 6 6784 - Create CBQ with invalid ewma > ok 7 5468 - Delete CBQ with handle > ok 8 492a - Show CBQ class > > ./tdc.py -c cbs > ok 1 1820 - Create CBS with default setting > ok 2 1532 - Create CBS with hicredit setting > ok 3 2078 - Create CBS with locredit setting > ok 4 9271 - Create CBS with sendslope setting > ok 5 0482 - Create CBS with idleslope setting > ok 6 e8f3 - Create CBS with multiple setting > ok 7 23c9 - Replace CBS with sendslope setting > ok 8 a07a - Change CBS with idleslope setting > ok 9 43b3 - Delete CBS with handle > ok 10 9472 - Show CBS class > > ./tdc.py -c drr > ok 1 0385 - Create DRR with default setting > ok 2 2375 - Delete DRR with handle > ok 3 3092 - Show DRR class > > ./tdc.py -c dsmark > ok 1 6345 - Create DSMARK with default setting > ok 2 3462 - Create DSMARK with default_index setting > ok 3 ca95 - Create DSMARK with set_tc_index flag > ok 4 a950 - Create DSMARK with multiple setting > ok 5 4092 - Delete DSMARK with handle > ok 6 5930 - Show DSMARK class > > ./tdc.py -c fq_codel > ok 1 4957 - Create FQ_CODEL with default setting > ok 2 7621 - Create FQ_CODEL with limit setting > ok 3 6871 - Create FQ_CODEL with memory_limit setting > ok 4 5636 - Create FQ_CODEL with target setting > ok 5 630a - Create FQ_CODEL with interval setting > ok 6 4324 - Create FQ_CODEL with quantum setting > ok 7 b190 - Create FQ_CODEL with noecn flag > ok 8 5381 - Create FQ_CODEL with ce_threshold setting > ok 9 c9d2 - Create FQ_CODEL with drop_batch setting > ok 10 523b - Create FQ_CODEL with multiple setting > ok 11 9283 - Replace FQ_CODEL with noecn setting > ok 12 3459 - Change FQ_CODEL with limit setting > ok 13 0128 - Delete FQ_CODEL with handle > ok 14 0435 - Show FQ_CODEL class > > ./tdc.py -c hfsc > ok 1 3254 - Create HFSC with default setting > ok 2 0289 - Create HFSC with class sc and ul rate setting > ok 3 846a - Create HFSC with class sc umax and dmax setting > ok 4 5413 - Create HFSC with class rt and ls rate setting > ok 5 9312 - Create HFSC with class rt umax and dmax setting > ok 6 6931 - Delete HFSC with handle > ok 7 8436 - Show HFSC class > > ./tdc.py -c htb > ok 1 0904 - Create HTB with default setting > ok 2 3906 - Create HTB with default-N setting > ok 3 8492 - Create HTB with r2q setting > ok 4 9502 - Create HTB with direct_qlen setting > ok 5 b924 - Create HTB with class rate and burst setting > ok 6 4359 - Create HTB with class mpu setting > ok 7 9048 - Create HTB with class prio setting > ok 8 4994 - Create HTB with class ceil setting > ok 9 9523 - Create HTB with class cburst setting > ok 10 5353 - Create HTB with class mtu setting > ok 11 346a - Create HTB with class quantum setting > ok 12 303a - Delete HTB with handle > > ./tdc.py -c mqprio > ok 1 9903 - Add mqprio Qdisc to multi-queue device (8 queues) > ok 2 453a - Delete nonexistent mqprio Qdisc > ok 3 5292 - Delete mqprio Qdisc twice > ok 4 45a9 - Add mqprio Qdisc to single-queue device > ok 5 2ba9 - Show mqprio class > > ./tdc.py -c multiq > ok 1 20ba - Add multiq Qdisc to multi-queue device (8 queues) > ok 2 4301 - List multiq Class > ok 3 7832 - Delete nonexistent multiq Qdisc > ok 4 2891 - Delete multiq Qdisc twice > ok 5 1329 - Add multiq Qdisc to single-queue device > > ./tdc.py -c netem > ok 1 cb28 - Create NETEM with default setting > ok 2 a089 - Create NETEM with limit flag > ok 3 3449 - Create NETEM with delay time > ok 4 3782 - Create NETEM with distribution and corrupt flag > ok 5 2b82 - Create NETEM with distribution and duplicate flag > ok 6 a932 - Create NETEM with distribution and loss flag > ok 7 e01a - Create NETEM with distribution and loss state flag > ok 8 ba29 - Create NETEM with loss gemodel flag > ok 9 0492 - Create NETEM with reorder flag > ok 10 7862 - Create NETEM with rate limit > ok 11 7235 - Create NETEM with multiple slot rate > ok 12 5439 - Create NETEM with multiple slot setting > ok 13 5029 - Change NETEM with loss state > ok 14 3785 - Replace NETEM with delay time > ok 15 4502 - Delete NETEM with handle > ok 16 0785 - Show NETEM class > > ./tdc.py -c qfq > ok 1 0582 - Create QFQ with default setting > ok 2 c9a3 - Create QFQ with class weight setting > ok 3 8452 - Create QFQ with class maxpkt setting > ok 4 d920 - Create QFQ with multiple class setting > ok 5 0548 - Delete QFQ with handle > ok 6 5901 - Show QFQ class > > ./tdc.py -e 0521 > ok 1 0521 - Show ingress class > > ./tdc.py -e 1023 > ok 1 1023 - Show mq class > > ./tdc.py -e 2410 > ok 1 2410 - Show prio class > > ./tdc.py -e 290a > ok 1 290a - Show RED class > > Zhengchao Shao (18): > net/sched: sch_api: add helper for tc qdisc walker stats dump > net/sched: use tc_qdisc_stats_dump() in qdisc > selftests/tc-testings: add selftests for cake qdisc > selftests/tc-testings: add selftests for cbq qdisc > selftests/tc-testings: add selftests for cbs qdisc > selftests/tc-testings: add selftests for drr qdisc > selftests/tc-testings: add selftests for dsmark qdisc > selftests/tc-testings: add selftests for fq_codel qdisc > selftests/tc-testings: add selftests for hfsc qdisc > selftests/tc-testings: add selftests for htb qdisc > selftests/tc-testings: add selftests for mqprio qdisc > selftests/tc-testings: add selftests for multiq qdisc > selftests/tc-testings: add selftests for netem qdisc > selftests/tc-testings: add selftests for qfq qdisc > selftests/tc-testings: add show class case for ingress qdisc > selftests/tc-testings: add show class case for mq qdisc > selftests/tc-testings: add show class case for prio qdisc > selftests/tc-testings: add show class case for red qdisc > > include/net/pkt_sched.h | 13 + > net/sched/sch_atm.c | 6 +- > net/sched/sch_cake.c | 9 +- > net/sched/sch_cbq.c | 9 +- > net/sched/sch_cbs.c | 8 +- > net/sched/sch_drr.c | 9 +- > net/sched/sch_dsmark.c | 14 +- > net/sched/sch_ets.c | 9 +- > net/sched/sch_fq_codel.c | 8 +- > net/sched/sch_hfsc.c | 9 +- > net/sched/sch_htb.c | 9 +- > net/sched/sch_mq.c | 5 +- > net/sched/sch_mqprio.c | 5 +- > net/sched/sch_multiq.c | 9 +- > net/sched/sch_netem.c | 8 +- > net/sched/sch_prio.c | 9 +- > net/sched/sch_qfq.c | 9 +- > net/sched/sch_red.c | 7 +- > net/sched/sch_sfb.c | 7 +- > net/sched/sch_sfq.c | 8 +- > net/sched/sch_skbprio.c | 9 +- > net/sched/sch_taprio.c | 5 +- > net/sched/sch_tbf.c | 7 +- > .../tc-testing/tc-tests/qdiscs/cake.json | 487 ++++++++++++++++++ > .../tc-testing/tc-tests/qdiscs/cbq.json | 184 +++++++ > .../tc-testing/tc-tests/qdiscs/cbs.json | 234 +++++++++ > .../tc-testing/tc-tests/qdiscs/drr.json | 71 +++ > .../tc-testing/tc-tests/qdiscs/dsmark.json | 140 +++++ > .../tc-testing/tc-tests/qdiscs/fq_codel.json | 326 ++++++++++++ > .../tc-testing/tc-tests/qdiscs/hfsc.json | 167 ++++++ > .../tc-testing/tc-tests/qdiscs/htb.json | 285 ++++++++++ > .../tc-testing/tc-tests/qdiscs/ingress.json | 20 + > .../tc-testing/tc-tests/qdiscs/mq.json | 24 +- > .../tc-testing/tc-tests/qdiscs/mqprio.json | 114 ++++ > .../tc-testing/tc-tests/qdiscs/multiq.json | 114 ++++ > .../tc-testing/tc-tests/qdiscs/netem.json | 372 +++++++++++++ > .../tc-testing/tc-tests/qdiscs/prio.json | 20 + > .../tc-testing/tc-tests/qdiscs/qfq.json | 145 ++++++ > .../tc-testing/tc-tests/qdiscs/red.json | 23 + > 39 files changed, 2769 insertions(+), 148 deletions(-) > create mode 100644 tools/testing/selftests/tc-testing/tc-tests/qdiscs/cake.json > create mode 100644 tools/testing/selftests/tc-testing/tc-tests/qdiscs/cbq.json > create mode 100644 tools/testing/selftests/tc-testing/tc-tests/qdiscs/cbs.json > create mode 100644 tools/testing/selftests/tc-testing/tc-tests/qdiscs/drr.json > create mode 100644 tools/testing/selftests/tc-testing/tc-tests/qdiscs/dsmark.json > create mode 100644 tools/testing/selftests/tc-testing/tc-tests/qdiscs/fq_codel.json > create mode 100644 tools/testing/selftests/tc-testing/tc-tests/qdiscs/hfsc.json > create mode 100644 tools/testing/selftests/tc-testing/tc-tests/qdiscs/htb.json > create mode 100644 tools/testing/selftests/tc-testing/tc-tests/qdiscs/mqprio.json > create mode 100644 tools/testing/selftests/tc-testing/tc-tests/qdiscs/multiq.json > create mode 100644 tools/testing/selftests/tc-testing/tc-tests/qdiscs/netem.json > create mode 100644 tools/testing/selftests/tc-testing/tc-tests/qdiscs/qfq.json Reviewed-by: Victor Nogueira <victor@mojatatu.com> Tested-by: Victor Nogueira <victor@mojatatu.com>