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
..
bluetooth
[BLUETOOTH]: rfcomm endianness annotations
2006-12-02 21:21:29 -08:00
irda
[IRDA]: Trivial annotations.
2006-12-02 21:22:48 -08:00
netfilter
[NETFILTER]: conntrack: add '_get' to {ip, nf}_conntrack_expect_find
2006-12-02 21:31:21 -08:00
sctp
[SCTP]: SCTP_CMD_PROCESS_CTSN annotations.
2006-12-02 21:27:14 -08:00
tc_act
[PKT_SCHED]: Kill pkt_act.h inlining.
2006-09-22 14:55:10 -07:00
tipc
[TIPC]: endianness annotations
2006-12-02 21:21:08 -08:00
act_api.h
[PKT_SCHED]: Kill pkt_act.h inlining.
2006-09-22 14:55:10 -07:00
addrconf.h
[IPV6]: Misc endianness annotations.
2006-12-02 21:22:52 -08:00
af_unix.h
[AF_UNIX]: Kernel memory leak fix for af_unix datagram getpeersec patch
2006-08-02 14:12:06 -07:00
ah.h
[IPSEC]: Use HMAC template and hash interface
2006-09-21 11:46:18 +10:00
arp.h
[IPV6]: Assorted trivial endianness annotations.
2006-12-02 21:22:50 -08:00
atmclip.h
[ATM]: Annotations.
2006-12-02 21:22:55 -08:00
ax25.h
[AX.25]: Reference counting for AX.25 routes.
2006-07-03 19:30:18 -07:00
checksum.h
[NET]: Make mangling a checksum (0 -> 0xffff on the wire) explicit.
2006-12-02 21:23:39 -08:00
cipso_ipv4.h
NetLabel: use the correct CIPSOv4 MLS label limits
2006-12-02 21:24:12 -08:00
compat.h
Merge git://git.infradead.org/hdrcleanup-2.6
2006-06-20 15:10:08 -07:00
datalink.h
dn.h
[NET]: Reduce sizeof(struct flowi) by 20 bytes.
2006-10-21 20:24:01 -07:00
dn_dev.h
dn_fib.h
[DECNET]: cleanups
2006-09-22 14:54:40 -07:00
dn_neigh.h
dn_nsp.h
dn_route.h
dsfield.h
[NET]: IP header modifier helpers annotations.
2006-12-02 21:23:40 -08:00
dst.h
[NET]: Annotate dst_ops protocol
2006-09-28 18:02:58 -07:00
esp.h
[IPSEC] esp: Defer output IV initialization to first use.
2006-09-22 15:17:35 -07:00
fib_rules.h
[NETLINK]: Do precise netlink message allocations where possible
2006-12-02 21:22:11 -08:00
flow.h
[NET]: Rethink mark field in struct flowi
2006-12-02 21:21:39 -08:00
gen_stats.h
genetlink.h
[GENL]: Add genlmsg_put_reply() to simplify building reply headers
2006-12-02 21:22:42 -08:00
icmp.h
[IPV4]: icmp_send() annotation
2006-09-28 18:01:06 -07:00
ieee80211.h
[PATCH] ieee80211: Drop and count duplicate data frames to remove 'replay detected' log messages
2006-12-02 00:11:57 -05:00
ieee80211_crypt.h
ieee80211_radiotap.h
ieee80211softmac.h
[PATCH] softmac: Fix WX and association related races
2006-10-16 20:09:47 -04:00
ieee80211softmac_wx.h
if_inet6.h
[IPV6]: Per-interface statistics support.
2006-12-02 21:22:08 -08:00
inet6_connection_sock.h
[TCP]: Don't set SKB owner in tcp_transmit_skb().
2006-12-02 21:21:52 -08:00
inet6_hashtables.h
[IPV6]: annotate inet6_hashtables
2006-12-02 21:21:10 -08:00
inet_common.h
inet_connection_sock.h
[INET_CONNECTION_SOCK]: Pack struct inet_connection_sock_af_ops
2006-12-02 21:30:46 -08:00
inet_ecn.h
[NET]: IP header modifier helpers annotations.
2006-12-02 21:23:40 -08:00
inet_hashtables.h
[IPV4]: annotate inet_lookup() and friends
2006-09-28 18:02:26 -07:00
inet_sock.h
[IPV4]: annotate inet_lookup() and friends
2006-09-28 18:02:26 -07:00
inet_timewait_sock.h
[NET]: Introduce protocol-specific destructor for time-wait sockets.
2006-10-12 00:00:00 -07:00
inetpeer.h
[IPV4] inet_peer: Group together avl_left, avl_right, v4daddr to speedup lookups on some CPUS
2006-10-20 00:28:35 -07:00
ip.h
[NET]: IP header modifier helpers annotations.
2006-12-02 21:23:40 -08:00
ip6_checksum.h
[NET]: Generic checksum annotations and cleanups.
2006-12-02 21:23:25 -08:00
ip6_fib.h
[IPV6]: Introduce ip6_dst_idev() to get inet6_dev{} stored in dst_entry{}.
2006-12-02 21:22:07 -08:00
ip6_route.h
[IPV6]: Misc endianness annotations.
2006-12-02 21:22:52 -08:00
ip6_tunnel.h
ip_fib.h
[IPV4] nl_fib_lookup: Rename fl_fwmark to fl_mark
2006-12-02 21:21:40 -08:00
ip_mp_alg.h
[NET]: Rethink mark field in struct flowi
2006-12-02 21:21:39 -08:00
ip_vs.h
[NET]: ipvs checksum annotations.
2006-12-02 21:23:41 -08:00
ipcomp.h
[CRYPTO] users: Use crypto_comp and crypto_has_*
2006-09-21 11:46:22 +10:00
ipconfig.h
[NET]: ipconfig and nfsroot annotations
2006-12-02 21:21:09 -08:00
ipip.h
[IPV6] net/ipv6/sit.c: make 2 functions static
2006-12-02 21:26:15 -08:00
ipv6.h
[IPV6]: __ipv6_addr_diff() annotations and cleanup.
2006-12-02 21:22:53 -08:00
ipx.h
[IPX]: Annotate and fix IPX checksum
2006-11-05 14:11:25 -08:00
iw_handler.h
lapb.h
llc.h
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h
llc_if.h
[LLC]: add multicast support for datagrams
2006-06-17 21:26:08 -07:00
llc_pdu.h
[LLC]: anotations
2006-12-02 21:21:23 -08:00
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
mip6.h
[IPV6] MIP6: Add receiving mobility header functions through raw socket.
2006-09-22 15:07:01 -07:00
ndisc.h
[IPV6]: Misc endianness annotations.
2006-12-02 21:22:52 -08:00
neighbour.h
[IPV6] NDISC: Set per-entry is_router flag in Proxy NA.
2006-09-22 15:20:24 -07:00
netdma.h
Remove all inclusions of <linux/config.h>
2006-10-04 03:38:54 -04:00
netevent.h
[NET]: Network Event Notifier Mechanism.
2006-08-02 13:38:20 -07:00
netlabel.h
NetLabel: convert to an extensibile/sparse category bitmap
2006-12-02 21:31:36 -08:00
netlink.h
[DECNET] address: Convert to new netlink interface
2006-12-02 21:30:30 -08:00
netrom.h
nexthop.h
[IPv4]: FIB configuration using struct fib_config
2006-09-22 14:55:04 -07:00
p8022.h
pkt_cls.h
pkt_sched.h
[PKT_SCHED]: Fix regression in PSCHED_TADD{,2}.
2006-07-24 12:44:23 -07:00
protocol.h
[INET]: Change protocol field in struct inet_protosw to u16
2006-12-02 21:30:55 -08:00
psnap.h
raw.h
Merge git://git.infradead.org/hdrcleanup-2.6
2006-06-20 15:10:08 -07:00
rawv6.h
[IPV6]: 'info' argument of ipv6 ->err_handler() is net-endian
2006-12-02 21:21:12 -08:00
red.h
[PKT_SCHED] RED: Fix overflow in calculation of queue average
2006-08-04 22:59:51 -07:00
request_sock.h
[TCP]: MD5 Signature Option (RFC2385) support.
2006-12-02 21:22:39 -08:00
rose.h
route.h
[IPV4]: route.h annotations
2006-09-28 18:02:10 -07:00
sch_generic.h
[NET_SCHED]: Fix endless loops caused by inaccurate qlen counters (part 1)
2006-12-02 21:31:42 -08:00
scm.h
[AF_UNIX]: Kernel memory leak fix for af_unix datagram getpeersec patch
2006-08-02 14:12:06 -07:00
slhc_vj.h
snmp.h
[SCTP]: Extend /proc/net/sctp/snmp to provide more statistics.
2006-09-22 14:55:16 -07:00
sock.h
[NET]: Conditionally use bh_lock_sock_nested in sk_receive_skb
2006-12-02 21:23:51 -08:00
syncppp.h
tcp.h
[NET]: Fix assorted misannotations (from md5 and udplite merges).
2006-12-02 21:27:16 -08:00
tcp_ecn.h
[IPV6]: Added GSO support for TCPv6
2006-06-30 14:12:10 -07:00
tcp_states.h
timewait_sock.h
[TCP]: MD5 Signature Option (RFC2385) support.
2006-12-02 21:22:39 -08:00
transp_v6.h
[NET]: Supporting UDP-Lite (RFC 3828) in Linux
2006-12-02 21:22:46 -08:00
udp.h
[UDP(-Lite)]: consolidate v4 and v6 get|setsockopt code
2006-12-02 21:30:45 -08:00
udplite.h
[NET]: Fix assorted misannotations (from md5 and udplite merges).
2006-12-02 21:27:16 -08:00
x25.h
x25device.h
xfrm.h
[XFRM]: Pack struct xfrm_policy
2006-12-02 21:30:48 -08:00