Re: [PATCH net-next,v2 00/18] refactor duplicate codes in the qdisc class walk function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxx>
Tested-by: Victor Nogueira <victor@xxxxxxxxxxxx>




[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux