linux/net/sched
Jarek Poplawski 378a2f090f net_sched: Add qdisc __NET_XMIT_STOLEN flag
Patrick McHardy <kaber@trash.net> noticed:
"The other problem that affects all qdiscs supporting actions is
TC_ACT_QUEUED/TC_ACT_STOLEN getting mapped to NET_XMIT_SUCCESS
even though the packet is not queued, corrupting upper qdiscs'
qlen counters."

and later explained:
"The reason why it translates it at all seems to be to not increase
the drops counter. Within a single qdisc this could be avoided by
other means easily, upper qdiscs would still increase the counter
when we return anything besides NET_XMIT_SUCCESS though.

This means we need a new NET_XMIT return value to indicate this to
the upper qdiscs. So I'd suggest to introduce NET_XMIT_STOLEN,
return that to upper qdiscs and translate it to NET_XMIT_SUCCESS
in dev_queue_xmit, similar to NET_XMIT_BYPASS."

David Miller <davem@davemloft.net> noticed:
"Maybe these NET_XMIT_* values being passed around should be a set of
bits. They could be composed of base meanings, combined with specific
attributes.

So you could say "NET_XMIT_DROP | __NET_XMIT_NO_DROP_COUNT"

The attributes get masked out by the top-level ->enqueue() caller,
such that the base meanings are the only thing that make their
way up into the stack. If it's only about communication within the
qdisc tree, let's simply code it that way."

This patch is trying to realize these ideas.

Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-08-04 22:31:03 -07:00
..
Kconfig pkt_sched: Remove CONFIG_NET_SCH_RR 2008-06-27 19:54:05 -07:00
Makefile [NET_SCHED]: Add flow classifier 2008-01-31 19:28:36 -08:00
act_api.c net: convert BUG_TRAP to generic WARN_ON 2008-07-25 21:43:18 -07:00
act_gact.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
act_ipt.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
act_mirred.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
act_nat.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
act_pedit.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
act_police.c net: convert BUG_TRAP to generic WARN_ON 2008-07-25 21:43:18 -07:00
act_simple.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
cls_api.c pkt_sched: Remove qdisc_lock_tree usage in cls_api.c 2008-07-17 19:21:24 -07:00
cls_basic.c [NET_SCHED]: Constify struct tcf_ext_map 2008-01-31 19:28:34 -08:00
cls_flow.c net-sched: cls_flow: add perturbation support 2008-07-14 20:36:32 -07:00
cls_fw.c [NET_SCHED]: Constify struct tcf_ext_map 2008-01-31 19:28:34 -08:00
cls_route.c pkt_sched: Kill qdisc_lock_tree usage in cls_route.c 2008-07-17 19:21:25 -07:00
cls_rsvp.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_rsvp.h [NET_SCHED]: Use nla_policy for attribute validation in classifiers 2008-01-28 15:11:23 -08:00
cls_rsvp6.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_tcindex.c [NET_SCHED]: Constify struct tcf_ext_map 2008-01-31 19:28:34 -08:00
cls_u32.c net: convert BUG_TRAP to generic WARN_ON 2008-07-25 21:43:18 -07:00
em_cmp.c [NET_SCHED]: ematch: module autoloading 2007-07-11 19:46:26 -07:00
em_meta.c [IPV4]: Add 'rtable' field in struct sk_buff to alias 'dst' and avoid casts 2008-03-05 18:30:47 -08:00
em_nbyte.c [NET_SCHED]: ematch: module autoloading 2007-07-11 19:46:26 -07:00
em_text.c [NET_SCHED]: Convert classifiers from rtnetlink to new netlink API 2008-01-28 15:11:11 -08:00
em_u32.c [PKT_SCHED]: annotate cls_u32 2008-03-17 22:46:46 -07:00
ematch.c [PKT_SCHED] ematch: Fix build warning. 2008-02-10 03:48:15 -08:00
sch_api.c pkt_sched: Fix OOPS on ingress qdisc add. 2008-07-30 02:44:25 -07:00
sch_atm.c net_sched: Add qdisc __NET_XMIT_STOLEN flag 2008-08-04 22:31:03 -07:00
sch_blackhole.c [NET]: Move Qdisc_class_ops and Qdisc_ops in appropriate sections. 2008-01-28 14:53:58 -08:00
sch_cbq.c net_sched: Add qdisc __NET_XMIT_STOLEN flag 2008-08-04 22:31:03 -07:00
sch_dsmark.c net_sched: Add qdisc __NET_XMIT_STOLEN flag 2008-08-04 22:31:03 -07:00
sch_fifo.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
sch_generic.c pkt_sched: Use qdisc_lock() on already sampled root qdisc. 2008-08-02 20:02:43 -07:00
sch_gred.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
sch_hfsc.c net_sched: Add qdisc __NET_XMIT_STOLEN flag 2008-08-04 22:31:03 -07:00
sch_htb.c net_sched: Add qdisc __NET_XMIT_STOLEN flag 2008-08-04 22:31:03 -07:00
sch_ingress.c net_sched: Add accessor function for packet length for qdiscs 2008-07-20 00:08:27 -07:00
sch_netem.c net_sched: Add qdisc __NET_XMIT_STOLEN flag 2008-08-04 22:31:03 -07:00
sch_prio.c net_sched: Add qdisc __NET_XMIT_STOLEN flag 2008-08-04 22:31:03 -07:00
sch_red.c net_sched: Add qdisc __NET_XMIT_STOLEN flag 2008-08-04 22:31:03 -07:00
sch_sfq.c net_sched: Add qdisc __NET_XMIT_STOLEN flag 2008-08-04 22:31:03 -07:00
sch_tbf.c net_sched: Add qdisc __NET_XMIT_STOLEN flag 2008-08-04 22:31:03 -07:00
sch_teql.c netdev: Fix lockdep warnings in multiqueue configurations. 2008-07-31 16:58:50 -07:00