Hi, I am trying to get packet scheduling to work on a 2.3.22 kernel (with Werner Almesbergers diffserv patches). I discovered the following problem : Both dsmark_dequeue and cbq_dequeue (and possibly others, I didn't check them all), decrement the queue length after calling a lower layer dequeue function. However this lower layer dequeue function also decrements the queue length. This results in a negative queue length when the upper dequeueing function exits. Unfortunately __qdisc_wakeup will try to dequeue packets as long as qdisc_restart returns < 0 and the transmitter is not busy. So this negative queue length results in an endless loop. As a quick hack I removed the q.qlen-- from dsmark_dequeue and cbq_dequeue. This seems to work, but I didn't verify in depth if this might cause other problems. Ideas ? Comments ? Peter. --- In a world without walls and fences - who needs Windows and Gates ? - To unsubscribe from this list: send the line "unsubscribe linux-net" in the body of a message to [EMAIL PROTECTED]
