David S. Miller wrote:
On Sun, 15 Feb 2004 11:30:05 +0100
Patrick McHardy <kaber@xxxxxxxxx> wrote:
I guess he meant something like this, but I still think it encourages
broken configurations in combination with non-work-conserving
schedulers.
Patrick, "(x || 1)" is not the same as "(x ? x : 1)"
:-)
Doh! I must have been programming in perl before .. ;)
Please make a new patch.
Attached.
Regards
Patrick
===== net/sched/sch_fifo.c 1.7 vs edited =====
--- 1.7/net/sched/sch_fifo.c Wed Nov 19 02:37:34 2003
+++ edited/net/sched/sch_fifo.c Wed Feb 18 12:06:06 2004
@@ -141,10 +141,12 @@
struct fifo_sched_data *q = (void*)sch->data;
if (opt == NULL) {
+ unsigned int limit = sch->dev->tx_queue_len ? : 1;
+
if (sch->ops == &bfifo_qdisc_ops)
- q->limit = sch->dev->tx_queue_len*sch->dev->mtu;
+ q->limit = limit*sch->dev->mtu;
else
- q->limit = sch->dev->tx_queue_len;
+ q->limit = limit;
} else {
struct tc_fifo_qopt *ctl = RTA_DATA(opt);
if (opt->rta_len < RTA_LENGTH(sizeof(*ctl)))
===== net/sched/sch_gred.c 1.13 vs edited =====
--- 1.13/net/sched/sch_gred.c Wed Nov 19 02:37:34 2003
+++ edited/net/sched/sch_gred.c Wed Feb 18 12:06:56 2004
@@ -110,7 +110,7 @@
unsigned long qave=0;
int i=0;
- if (!t->initd && skb_queue_len(&sch->q) < sch->dev->tx_queue_len) {
+ if (!t->initd && skb_queue_len(&sch->q) < (sch->dev->tx_queue_len ? :
1)) {
D2PRINTK("NO GRED Queues setup yet! Enqueued anyway\n");
goto do_enqueue;
}
|