linux/net/sched
Vlad Buslov 01683a1469 net: sched: refactor flower walk to iterate over idr
Extend struct tcf_walker with additional 'cookie' field. It is intended to
be used by classifier walk implementations to continue iteration directly
from particular filter, instead of iterating 'skip' number of times.

Change flower walk implementation to save filter handle in 'cookie'. Each
time flower walk is called, it looks up filter with saved handle directly
with idr, instead of iterating over filter linked list 'skip' number of
times. This change improves complexity of dumping flower classifier from
quadratic to linearithmic. (assuming idr lookup has logarithmic complexity)

Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
Reported-by: Simon Horman <simon.horman@netronome.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2018-07-13 18:24:27 -07:00
..
act_api.c net: sched: fix unprotected access to rcu cookie pointer 2018-07-11 23:01:02 -07:00
act_bpf.c net: sched: atomically check-allocate action 2018-07-08 12:42:29 +09:00
act_connmark.c net: sched: atomically check-allocate action 2018-07-08 12:42:29 +09:00
act_csum.c net: sched: atomically check-allocate action 2018-07-08 12:42:29 +09:00
act_gact.c net: sched: atomically check-allocate action 2018-07-08 12:42:29 +09:00
act_ife.c net: sched: act_ife: fix memory leak in ife init 2018-07-11 22:53:00 -07:00
act_ipt.c net: sched: atomically check-allocate action 2018-07-08 12:42:29 +09:00
act_meta_mark.c
act_meta_skbprio.c
act_meta_skbtcindex.c
act_mirred.c net: sched: atomically check-allocate action 2018-07-08 12:42:29 +09:00
act_nat.c net: sched: atomically check-allocate action 2018-07-08 12:42:29 +09:00
act_pedit.c net: sched: atomically check-allocate action 2018-07-08 12:42:29 +09:00
act_police.c net: sched: atomically check-allocate action 2018-07-08 12:42:29 +09:00
act_sample.c net: sched: atomically check-allocate action 2018-07-08 12:42:29 +09:00
act_simple.c net: sched: atomically check-allocate action 2018-07-08 12:42:29 +09:00
act_skbedit.c net/sched: act_skbedit: don't use spinlock in the data path 2018-07-12 14:54:12 -07:00
act_skbmod.c net: sched: atomically check-allocate action 2018-07-08 12:42:29 +09:00
act_tunnel_key.c net: sched: atomically check-allocate action 2018-07-08 12:42:29 +09:00
act_vlan.c net: sched: atomically check-allocate action 2018-07-08 12:42:29 +09:00
cls_api.c net: sched: refactor flower walk to iterate over idr 2018-07-13 18:24:27 -07:00
cls_basic.c net_sched: switch to rcu_work 2018-05-24 22:56:15 -04:00
cls_bpf.c net: sched: cls_bpf: implement offload tcf_proto_op 2018-06-26 23:21:33 +09:00
cls_cgroup.c net_sched: switch to rcu_work 2018-05-24 22:56:15 -04:00
cls_flow.c net_sched: switch to rcu_work 2018-05-24 22:56:15 -04:00
cls_flower.c net: sched: refactor flower walk to iterate over idr 2018-07-13 18:24:27 -07:00
cls_fw.c net_sched: switch to rcu_work 2018-05-24 22:56:15 -04:00
cls_matchall.c net: sched: cls_matchall: implement offload tcf_proto_op 2018-06-26 23:21:33 +09:00
cls_route.c net_sched: switch to rcu_work 2018-05-24 22:56:15 -04:00
cls_rsvp6.c
cls_rsvp.c
cls_rsvp.h net_sched: switch to rcu_work 2018-05-24 22:56:15 -04:00
cls_tcindex.c net_sched: switch to rcu_work 2018-05-24 22:56:15 -04:00
cls_u32.c net: sched: cls_u32: implement offload tcf_proto_op 2018-06-26 23:21:33 +09:00
em_canid.c
em_cmp.c
em_ipset.c
em_ipt.c
em_meta.c
em_nbyte.c
em_text.c
em_u32.c
ematch.c
Kconfig sched: Add Common Applications Kept Enhanced (cake) qdisc 2018-07-10 20:06:34 -07:00
Makefile sched: Add Common Applications Kept Enhanced (cake) qdisc 2018-07-10 20:06:34 -07:00
sch_api.c net/sched: Allow creating a Qdisc watchdog with other clocks 2018-07-04 22:30:27 +09:00
sch_atm.c
sch_blackhole.c net_sched: blackhole: tell upper qdisc about dropped packets 2018-06-17 08:42:33 +09:00
sch_cake.c sch_cake: Conditionally split GSO segments 2018-07-10 20:06:34 -07:00
sch_cbq.c
sch_cbs.c
sch_choke.c
sch_codel.c
sch_drr.c
sch_dsmark.c
sch_etf.c net/sched: Make etf report drops on error_queue 2018-07-04 22:30:28 +09:00
sch_fifo.c
sch_fq_codel.c treewide: kvzalloc() -> kvcalloc() 2018-06-12 16:19:22 -07:00
sch_fq.c net_sched: fq: take care of throttled flows before reuse 2018-05-02 16:37:38 -04:00
sch_generic.c net: remove bypassed check in sch_direct_xmit() 2018-05-31 13:26:19 -04:00
sch_gred.c
sch_hfsc.c net_sched: remove a bogus warning in hfsc 2018-06-23 10:58:46 +09:00
sch_hhf.c treewide: kvzalloc() -> kvcalloc() 2018-06-12 16:19:22 -07:00
sch_htb.c net_sched: remove unused htb drop_list 2018-06-24 16:42:46 +09:00
sch_ingress.c
sch_mq.c net: sched: mq: request stats from offloads 2018-05-29 09:49:16 -04:00
sch_mqprio.c
sch_multiq.c
sch_netem.c netem: slotting with non-uniform distribution 2018-06-28 22:06:24 +09:00
sch_pie.c
sch_plug.c
sch_prio.c
sch_qfq.c
sch_red.c net: sched: red: avoid hashing NULL child 2018-05-18 13:52:32 -04:00
sch_sfb.c
sch_sfq.c
sch_tbf.c net: sched: red: avoid hashing NULL child 2018-05-18 13:52:32 -04:00
sch_teql.c