[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <fd1948e0-6cd9-677e-ac82-e2254cb80f60@mojatatu.com>
Date: Mon, 19 Sep 2022 15:31:46 -0300
From: Victor Nogueira <victor@...atatu.com>
To: Zhengchao Shao <shaozhengchao@...wei.com>, netdev@...r.kernel.org,
linux-kselftest@...r.kernel.org, jhs@...atatu.com,
xiyou.wangcong@...il.com, jiri@...nulli.us, davem@...emloft.net,
edumazet@...gle.com, kuba@...nel.org, pabeni@...hat.com,
toke@...e.dk, vinicius.gomes@...el.com, stephen@...workplumber.org,
shuah@...nel.org
Cc: zhijianx.li@...el.com, weiyongjun1@...wei.com,
yuehaibing@...wei.com
Subject: Re: [PATCH net-next,v2 00/18] refactor duplicate codes in the qdisc
class walk function
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@...atatu.com>
Tested-by: Victor Nogueira <victor@...atatu.com>
Powered by blists - more mailing lists