Subject: [NET_SCHED 00/06]: Fix endless dequeue loops

From: Patrick McHardy <[email-masked]>
Date: Mon, 20 Nov 2006 14:08:35 +0100 (MET)

These patches fix endless qdisc dequeue loops caused by inaccurate
qlen counters that can be triggered quite easily when changing
things while packets are queued. Please read the individual changelog
entries for details.

I've split them into very small pieces for easier review in case we
want to put them in 2.6.19. The problem has always been present, so
it doesn't seem to affect many people.

Martin, can you please review the HTB parts? Thanks.

PS: If anyone wants to suggest a nicer name for qdisc_tree_decrease_qlen
I'll gladly send new patches :)

 include/net/sch_generic.h |    4 +++-
 net/sched/sch_api.c       |   38 ++++++++++++++++++++++++++++++++------
 net/sched/sch_atm.c       |    5 +++--
 net/sched/sch_cbq.c       |   10 ++++++----
 net/sched/sch_dsmark.c    |    7 ++++---
 net/sched/sch_generic.c   |    7 +++++--
 net/sched/sch_hfsc.c      |   26 ++++++++++++++++++--------
 net/sched/sch_htb.c       |   38 +++++++++++++++++++++++++++-----------
 net/sched/sch_netem.c     |    5 +++--
 net/sched/sch_prio.c      |   14 ++++++++++----
 net/sched/sch_red.c       |   14 +++++++++-----
 net/sched/sch_sfq.c       |    3 +++
 net/sched/sch_tbf.c       |   14 +++++++++-----
 13 files changed, 132 insertions(+), 53 deletions(-)

Patrick McHardy:
      [NET_SCHED]: sch_htb: perform qlen adjustment immediately in ->delete
      [NET_SCHED]: Set parent classid in default qdiscs
      [NET_SCHED]: Fix endless loops caused by inaccurate qlen counters (part 1)
      [NET_SCHED]: Fix endless loops (part 2): "simple" qdiscs
      [NET_SCHED]: Fix endless loops (part 3): HFSC
      [NET_SCHED]: Fix endless loops (part 4): HTB