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-next>] [day] [month] [year] [list]
Message-ID: <20140913025925.6249.12537.stgit@nitbit.x32>
Date:	Fri, 12 Sep 2014 20:04:20 -0700
From:	John Fastabend <john.fastabend@...il.com>
To:	xiyou.wangcong@...il.com, davem@...emloft.net,
	eric.dumazet@...il.com, jhs@...atatu.com
Cc:	netdev@...r.kernel.org, paulmck@...ux.vnet.ibm.com,
	brouer@...hat.com
Subject: [net-next PATCH 00/12] net/sched rcu classifiers and tcf

This series converts the tcf_proto usage to RCU. 

This requires updating each classifier individually to handle the
new copy/update requirement and also to update the core list
traversals. This makes the assumption that updates to the tables
are infrequent in comparison to the packet per second being
classified. On a 10Gbps running near line rate we can easily
produce 12+ million packets per second so IMO this is a reasonable
assumption. The updates are serialized by RTNL.

I have done some basic testing on this series and do not see any
immediate splats or issues. The patch series has been running
on my dev systems for a month or so now and I've not seen any
issues. Although my configurations are not overly complicated.

My test cases at this point cover all the filters with a
tight loop to add/remove filters. Some basic estimator tests
where I add an estimator to the qdisc and verify the statistics
accurate using pktgen. And finally I have a small script to
exercise the 'tc actions' interface. Feel free to send me more
tests off list and I can run them.

This is prep work to drop the qdisc lock with the first
target being the ingress qdisc. To be done is making the
tc actions RCU safe and statistics per cpu. These patches
are in the works.

Comments:
  - Checkpatch is still giving errors on some >80 char lines I know
    about this. IMO the way to fix this is to restructure the sched
    code to avoid being so heavily indented. But doing this here
    bloats the patchset and anyways there are already lots of >80
    chars in these files. I would prefer to keep the patches as is
    but let me know if others think I should fix these and I will.
    A follow up patch set could restructure the code and fix this
    throughout the code blocks.

---

John Fastabend (12):
      net: qdisc: use rcu prefix and silence sparse warnings
      net: rcu-ify tcf_proto
      net: sched: cls_basic use RCU
      net: sched: cls_cgroup use RCU
      net: sched: cls_flow use RCU
      net: sched: fw use RCU
      net: sched: RCU cls_route
      net: sched: RCU cls_tcindex
      net: sched: make cls_u32 per cpu
      net: sched: make cls_u32 lockless
      net: sched: rcu'ify cls_rsvp
      net: sched: rcu'ify cls_bpf


 include/linux/netdevice.h |   29 +----
 include/linux/rtnetlink.h |   10 ++
 include/net/sch_generic.h |   30 +++--
 net/core/dev.c            |   51 +++++++++
 net/sched/cls_api.c       |   30 +++--
 net/sched/cls_basic.c     |   80 ++++++++------
 net/sched/cls_bpf.c       |   94 ++++++++--------
 net/sched/cls_cgroup.c    |   63 +++++++----
 net/sched/cls_flow.c      |  145 +++++++++++++++----------
 net/sched/cls_fw.c        |  111 +++++++++++++------
 net/sched/cls_route.c     |  226 +++++++++++++++++++++++----------------
 net/sched/cls_rsvp.h      |  160 ++++++++++++++++------------
 net/sched/cls_tcindex.c   |  248 +++++++++++++++++++++++++++----------------
 net/sched/cls_u32.c       |  258 +++++++++++++++++++++++++++++----------------
 net/sched/sch_api.c       |   10 +-
 net/sched/sch_atm.c       |   20 ++-
 net/sched/sch_cbq.c       |   11 +-
 net/sched/sch_choke.c     |   15 ++-
 net/sched/sch_drr.c       |    9 +-
 net/sched/sch_dsmark.c    |    9 +-
 net/sched/sch_fq_codel.c  |   11 +-
 net/sched/sch_generic.c   |    4 -
 net/sched/sch_hfsc.c      |    8 +
 net/sched/sch_htb.c       |   15 +--
 net/sched/sch_ingress.c   |    8 +
 net/sched/sch_mqprio.c    |    6 +
 net/sched/sch_multiq.c    |    8 +
 net/sched/sch_prio.c      |   11 +-
 net/sched/sch_qfq.c       |    9 +-
 net/sched/sch_sfb.c       |   15 ++-
 net/sched/sch_sfq.c       |   11 +-
 net/sched/sch_teql.c      |   13 +-
 32 files changed, 1050 insertions(+), 678 deletions(-)

-- 
Signature
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ