lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
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