linux/net/sched
Eric Dumazet 44b8288308 net_sched: pfifo_head_drop problem
commit 57dbb2d83d (sched: add head drop fifo queue)
introduced pfifo_head_drop, and broke the invariant that
sch->bstats.bytes and sch->bstats.packets are COUNTER (increasing
counters only)

This can break estimators because est_timer() handles unsigned deltas
only. A decreasing counter can then give a huge unsigned delta.

My mid term suggestion would be to change things so that
sch->bstats.bytes and sch->bstats.packets are incremented in dequeue()
only, not at enqueue() time. We also could add drop_bytes/drop_packets
and provide estimations of drop rates.

It would be more sensible anyway for very low speeds, and big bursts.
Right now, if we drop packets, they still are accounted in byte/packets
abolute counters and rate estimators.

Before this mid term change, this patch makes pfifo_head_drop behavior
similar to other qdiscs in case of drops :
Dont decrement sch->bstats.bytes and sch->bstats.packets

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Acked-by: Hagen Paul Pfeifer <hagen@jauu.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-01-05 13:39:17 -08:00
..
Kconfig pkt_sched: Make act_csum depend upon INET. 2010-08-23 20:42:11 -07:00
Makefile net/sched: add ACT_CSUM action to update packets checksums 2010-08-20 01:42:59 -07:00
act_api.c pkt_sched: gen_kill_estimator() rcu fixes 2010-06-11 18:37:08 -07:00
act_csum.c net_sched: act_csum: coding style cleanup 2010-08-23 20:43:15 -07:00
act_gact.c net sched: fix some kernel memory leaks 2010-08-17 15:12:15 -07:00
act_ipt.c netfilter: xtables: resolve indirect macros 3/3 2010-10-13 18:00:46 +02:00
act_mirred.c net sched: fix some kernel memory leaks 2010-08-17 15:12:15 -07:00
act_nat.c net sched: fix some kernel memory leaks 2010-08-17 15:12:15 -07:00
act_pedit.c net sched: make pedit check for clones instead 2010-06-07 01:10:43 -07:00
act_police.c net sched: fix kernel leak in act_police 2010-09-01 14:29:34 -07:00
act_simple.c net sched: fix some kernel memory leaks 2010-08-17 15:12:15 -07:00
act_skbedit.c net sched: fix some kernel memory leaks 2010-08-17 15:12:15 -07:00
cls_api.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-04-11 14:53:53 -07:00
cls_basic.c classifier: report statistics for basic classifier 2010-11-08 12:17:05 -08:00
cls_cgroup.c cls_cgroup: Fix crash on module unload 2010-11-03 18:50:50 -07:00
cls_flow.c net_sched: cls_flow: add key rxhash 2010-08-21 23:40:14 -07:00
cls_fw.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cls_route.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cls_rsvp.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_rsvp.h cls_rsvp: add sanity check for the packet length 2010-08-04 21:53:15 -07:00
cls_rsvp6.c [NET_SCHED]: Remove unnecessary includes 2007-07-10 22:16:41 -07:00
cls_tcindex.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cls_u32.c cls_u32: signedness bug 2010-10-05 00:40:39 -07:00
em_cmp.c net: em_cmp.c use unaligned access helpers 2008-09-22 19:20:51 -07:00
em_meta.c tc: add meta match on receive hash 2010-08-24 14:48:10 -07:00
em_nbyte.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
em_text.c text ematch: check for NULL pointer before destroying textsearch config 2010-10-31 09:37:38 -07:00
em_u32.c [PKT_SCHED]: annotate cls_u32 2008-03-17 22:46:46 -07:00
ematch.c net sched: printk message severity 2010-05-17 23:23:12 -07:00
sch_api.c net: dynamic ingress_queue allocation 2010-10-05 00:23:44 -07:00
sch_atm.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_blackhole.c pkt_sched: Add qdisc->ops->peek() implementation. 2008-10-31 00:45:55 -07:00
sch_cbq.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_drr.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_dsmark.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_fifo.c net_sched: pfifo_head_drop problem 2011-01-05 13:39:17 -08:00
sch_generic.c net: factorize sync-rcu call in unregister_netdevice_many 2010-12-16 14:04:44 -08:00
sch_gred.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
sch_hfsc.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_htb.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_ingress.c net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
sch_mq.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_multiq.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_netem.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_prio.c net_sched: remove the unused parameter of qdisc_create_dflt() 2010-10-21 03:09:47 -07:00
sch_red.c sch_red: report backlog information 2011-01-03 12:13:15 -08:00
sch_sfq.c sfq: fix slot_dequeue_head() 2010-12-31 12:48:55 -08:00
sch_tbf.c net: Use NET_XMIT_SUCCESS where possible. 2010-08-10 02:51:11 -07:00
sch_teql.c net: add netif_tx_queue_frozen_or_stopped 2010-11-28 10:47:18 -08:00