--- linux-2.6.12/net/sched/sch_generic.c 2005-06-17 21:48:29.000000000 +0200 +++ linux-2.6.12-ed/net/sched/sch_generic.c 2005-07-05 09:11:30.000000000 +0200 @@ -333,18 +333,23 @@ static struct sk_buff * pfifo_fast_dequeue(struct Qdisc* qdisc) { - int prio; struct sk_buff_head *list = qdisc_priv(qdisc); struct sk_buff *skb; - for (prio = 0; prio < 3; prio++, list++) { - skb = __skb_dequeue(list); - if (skb) { - qdisc->q.qlen--; - return skb; - } + for (;;) { + if (!skb_queue_empty(list)) + break; + list++; + if (!skb_queue_empty(list)) + break; + list++; + if (!skb_queue_empty(list)) + break; + return NULL; } - return NULL; + skb = __skb_dequeue(list); + qdisc->q.qlen--; + return skb; } static int