kernel_optimize_test/net/sched
Eric Dumazet 1b5c5493e3 net_sched: add the ability to defer skb freeing
qdisc are changed under RTNL protection and often
while blocking BH and root qdisc spinlock.

When lots of skbs need to be dropped, we free
them under these locks causing TX/RX freezes,
and more generally latency spikes.

This commit adds rtnl_kfree_skbs(), used to queue
skbs for deferred freeing.

Actual freeing happens right after RTNL is released,
with appropriate scheduling points.

rtnl_qdisc_drop() can also be used in place
of disc_drop() when RTNL is held.

qdisc_reset_queue() and __qdisc_reset_queue() get
the new behavior, so standard qdiscs like pfifo, pfifo_fast...
have their ->reset() method automatically handled.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-06-15 14:08:34 -07:00
..
act_api.c net_sched: make tcf_hash_check() boolean 2016-06-15 12:43:35 -07:00
act_bpf.c net sched: indentation and other OCD stylistic fixes 2016-06-07 15:53:54 -07:00
act_connmark.c net sched actions: aggregate dumping of actions timeinfo 2016-06-07 15:53:43 -07:00
act_csum.c net sched actions: aggregate dumping of actions timeinfo 2016-06-07 15:53:43 -07:00
act_gact.c net sched: indentation and other OCD stylistic fixes 2016-06-07 15:53:54 -07:00
act_ife.c net_sched: make tcf_hash_check() boolean 2016-06-15 12:43:35 -07:00
act_ipt.c net_sched: make tcf_hash_check() boolean 2016-06-15 12:43:35 -07:00
act_meta_mark.c Support to encoding decoding skb mark on IFE action 2016-03-01 17:15:23 -05:00
act_meta_skbprio.c Support to encoding decoding skb prio on IFE action 2016-03-01 17:15:23 -05:00
act_mirred.c net_sched: make tcf_hash_check() boolean 2016-06-15 12:43:35 -07:00
act_nat.c net sched actions: aggregate dumping of actions timeinfo 2016-06-07 15:53:43 -07:00
act_pedit.c net sched actions: aggregate dumping of actions timeinfo 2016-06-07 15:53:43 -07:00
act_police.c act_police: rename tcf_act_police_locate() to tcf_act_police_init() 2016-06-15 00:05:57 -07:00
act_simple.c net_sched: make tcf_hash_check() boolean 2016-06-15 12:43:35 -07:00
act_skbedit.c net_sched: make tcf_hash_check() boolean 2016-06-15 12:43:35 -07:00
act_vlan.c net_sched: make tcf_hash_check() boolean 2016-06-15 12:43:35 -07:00
cls_api.c net, cls: allow for deleting all filters for given parent 2016-06-10 18:11:01 -07:00
cls_basic.c net_sched: destroy proto tp when all filters are gone 2015-03-09 15:35:55 -04:00
cls_bpf.c bpf: wire in data and data_end for cls_act_bpf 2016-05-06 16:01:54 -04:00
cls_cgroup.c cls_cgroup: factor out classid retrieval 2015-07-20 12:41:30 -07:00
cls_flow.c sched: cls_flow: use skb_to_full_sk() helper 2015-11-08 20:56:39 -05:00
cls_flower.c net/sched: flower: Return error when hw can't offload and skip_sw is set 2016-06-14 22:37:26 -07:00
cls_fw.c net: revert "net_sched: move tp->root allocation into fw_init()" 2015-09-24 14:33:30 -07:00
cls_route.c net_sched: destroy proto tp when all filters are gone 2015-03-09 15:35:55 -04:00
cls_rsvp.c
cls_rsvp.h net_sched: convert rsvp to call tcf_exts_destroy from rcu callback 2015-08-26 11:01:45 -07:00
cls_rsvp6.c
cls_tcindex.c net_sched: convert tcindex to call tcf_exts_destroy from rcu callback 2015-08-26 11:01:44 -07:00
cls_u32.c net: cls_u32: be more strict about skip-sw flag for knodes 2016-06-08 21:43:14 -07:00
em_canid.c
em_cmp.c
em_ipset.c netfilter: x_tables: Pass struct net in xt_action_param 2015-09-18 21:58:14 +02:00
em_meta.c qdisc: constify meta_type_ops structures 2016-04-14 00:35:30 -04:00
em_nbyte.c
em_text.c net: Remove state argument from skb_find_text() 2015-02-22 15:59:54 -05:00
em_u32.c
ematch.c
Kconfig Support to encoding decoding skb prio on IFE action 2016-03-01 17:15:23 -05:00
Makefile Support to encoding decoding skb prio on IFE action 2016-03-01 17:15:23 -05:00
sch_api.c sched: remove NET_XMIT_POLICED 2016-06-12 22:02:11 -04:00
sch_atm.c net_sched: remove internal use of TC_POLICE_* 2016-06-15 00:05:57 -07:00
sch_blackhole.c net/sched: make sch_blackhole.c explicitly non-modular 2015-10-09 07:52:28 -07:00
sch_cbq.c net_sched: remove generic throttled management 2016-06-10 23:58:21 -07:00
sch_choke.c sched: remove qdisc->drop 2016-06-08 23:58:52 -07:00
sch_codel.c codel: split into multiple files 2016-04-25 16:44:27 -04:00
sch_drr.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-06-10 11:52:24 -07:00
sch_dsmark.c sched: remove qdisc->drop 2016-06-08 23:58:52 -07:00
sch_fifo.c sched: remove qdisc->drop 2016-06-08 23:58:52 -07:00
sch_fq_codel.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-06-10 11:52:24 -07:00
sch_fq.c net_sched: remove generic throttled management 2016-06-10 23:58:21 -07:00
sch_generic.c net_sched: add the ability to defer skb freeing 2016-06-15 14:08:34 -07:00
sch_gred.c sched: remove qdisc->drop 2016-06-08 23:58:52 -07:00
sch_hfsc.c net_sched: remove generic throttled management 2016-06-10 23:58:21 -07:00
sch_hhf.c sched: remove qdisc->drop 2016-06-08 23:58:52 -07:00
sch_htb.c net_sched: remove generic throttled management 2016-06-10 23:58:21 -07:00
sch_ingress.c net: sched: fix tc_should_offload for specific clsact classes 2016-06-07 16:59:53 -07:00
sch_mq.c net: sched: do not acquire qdisc spinlock in qdisc/class stats dump 2016-06-07 16:37:14 -07:00
sch_mqprio.c net: sched: do not acquire qdisc spinlock in qdisc/class stats dump 2016-06-07 16:37:14 -07:00
sch_multiq.c sched: remove qdisc->drop 2016-06-08 23:58:52 -07:00
sch_netem.c net_sched: remove generic throttled management 2016-06-10 23:58:21 -07:00
sch_pie.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_plug.c net_sched: sch_plug: use a private throttled status 2016-06-10 23:58:20 -07:00
sch_prio.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-06-10 11:52:24 -07:00
sch_qfq.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-06-10 11:52:24 -07:00
sch_red.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-06-10 11:52:24 -07:00
sch_sfb.c net_sched: update hierarchical backlog too 2016-02-29 17:02:33 -05:00
sch_sfq.c sched: remove qdisc->drop 2016-06-08 23:58:52 -07:00
sch_tbf.c net_sched: remove generic throttled management 2016-06-10 23:58:21 -07:00
sch_teql.c