linux/net
Patrick McHardy 43effa1e57 [NET_SCHED]: Fix endless loops caused by inaccurate qlen counters (part 1)
There are multiple problems related to qlen adjustment that can lead
to an upper qdisc getting out of sync with the real number of packets
queued, leading to endless dequeueing attempts by the upper layer code.

All qdiscs must maintain an accurate q.qlen counter. There are basically
two groups of operations affecting the qlen: operations that propagate
down the tree (enqueue, dequeue, requeue, drop, reset) beginning at the
root qdisc and operations only affecting a subtree or single qdisc
(change, graft, delete class). Since qlen changes during operations from
the second group don't propagate to ancestor qdiscs, their qlen values
become desynchronized.

This patch adds a function to propagate qlen changes up the qdisc tree,
optionally calling a callback function to perform qdisc-internal
maintenance when the child qdisc becomes empty. The follow-up patches
will convert all qdiscs to use this function where necessary.

Noticed by Timo Steinbach <tsteinbach@astaro.com>.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
2006-12-02 21:31:42 -08:00
..
802 [NET]: Kill direct includes of asm/checksum.h 2006-12-02 21:22:59 -08:00
8021q [PATCH] Finish annotations of struct vlan_ethhdr 2006-10-10 16:15:34 -07:00
appletalk [APPLETALK]: Fix potential OOPS in atalk_sendmsg(). 2006-10-30 15:24:34 -08:00
atm [ATM]: Use kmemdup & kzalloc where applicable 2006-12-02 21:30:13 -08:00
ax25 [AX25]: Use kmemdup 2006-12-02 21:24:01 -08:00
bluetooth [BLUETOOTH] lockdep: annotate sk_lock nesting in AF_BLUETOOTH 2006-12-02 21:21:35 -08:00
bridge [NETFILTER]: ebtables: add --snap-arp option 2006-12-02 21:31:32 -08:00
core [RTNETLINK]: Add rtnl_put_cacheinfo() to unify some code 2006-12-02 21:30:44 -08:00
dccp [DCCP]: Use `unsigned' for packet lengths 2006-12-02 21:31:02 -08:00
decnet [RTNETLINK]: Add rtnl_put_cacheinfo() to unify some code 2006-12-02 21:30:44 -08:00
econet [NET]: Conversions from kmalloc+memset to k(z|c)alloc. 2006-07-21 14:51:30 -07:00
ethernet [NET]: Kill direct includes of asm/checksum.h 2006-12-02 21:22:59 -08:00
ieee80211 [PATCH] softmac: reduce scan debug output 2006-12-02 00:12:06 -05:00
ipv4 NetLabel: add the ranged tag to the CIPSOv4 protocol 2006-12-02 21:31:38 -08:00
ipv6 [NETFILTER]: Fix PROC_FS=n warnings 2006-12-02 21:31:34 -08:00
ipx [IPX]: Annotate and fix IPX checksum 2006-11-05 14:11:25 -08:00
irda [IRDA]: Use kmemdup where applicable 2006-12-02 21:30:17 -08:00
key [XFRM]: annotate ->new_mapping() 2006-12-02 21:21:18 -08:00
lapb [LAPB]: Fix windowsize check 2006-08-05 21:15:58 -07:00
llc [LLC]: anotations 2006-12-02 21:21:23 -08:00
netfilter [NETFILTER]: remove remaining ASSERT_{READ,WRITE}_LOCK 2006-12-02 21:31:33 -08:00
netlabel NetLabel: convert to an extensibile/sparse category bitmap 2006-12-02 21:31:36 -08:00
netlink [NETLINK]: Remove unused dst_pid field in netlink_skb_parms 2006-12-02 21:30:43 -08:00
netrom [NETROM]: Use kmemdup 2006-12-02 21:24:02 -08:00
packet [AF_PACKET]: annotate 2006-12-02 21:21:24 -08:00
rose [ROSE] lockdep: fix false positive 2006-07-12 13:58:59 -07:00
rxrpc [NET]: Kill direct includes of asm/checksum.h 2006-12-02 21:22:59 -08:00
sched [NET_SCHED]: Fix endless loops caused by inaccurate qlen counters (part 1) 2006-12-02 21:31:42 -08:00
sctp [SCTP]: Use kzalloc where appropriate 2006-12-02 21:30:19 -08:00
sunrpc [SUNRPC]: Use k{mem,str}dup where applicable 2006-12-02 21:30:20 -08:00
tipc [TIPC]: Use kzalloc where appropriate 2006-12-02 21:30:21 -08:00
unix [NET]: Annotate csum_partial() callers in net/* 2006-12-02 21:23:32 -08:00
wanrouter Fix misc .c/.h comment typos 2006-11-30 05:24:39 +01:00
x25 Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
xfrm [XFRM]: Convert a few __u8 to proper u8 2006-12-02 21:30:50 -08:00
Kconfig [NETFILTER]: remove the reference to ipchains from Kconfig 2006-12-02 21:31:35 -08:00
Makefile [NetLabel]: core NetLabel subsystem 2006-09-22 14:53:34 -07:00
TUNABLE Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
compat.c [NET]: File descriptor loss while receiving SCM_RIGHTS 2006-10-11 23:59:48 -07:00
nonet.c [PATCH] Make most file operations structs in fs/ const 2006-03-28 09:16:06 -08:00
socket.c [NET]: The scheduled removal of the frame diverter. 2006-12-02 21:22:23 -08:00
sysctl_net.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00