[PKT_SCHED] HTB: initialize upper bound properly
authorStephen Hemminger <shemminger@osdl.org>
Fri, 14 Jul 2006 23:32:27 +0000 (16:32 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 14 Jul 2006 23:32:27 +0000 (16:32 -0700)
The upper bound for HTB time diff needs to be scaled to PSCHED
units rather than just assuming usecs.  The field mbuffer is used
in TDIFF_SAFE(), as an upper bound.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Acked-by: Jamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/sch_htb.c

index 34afe41fa2f3b6dd3d620214ded409d6fde9781a..cd0a973b1128436814c3d2bab5f58bd9b02ca279 100644 (file)
@@ -196,7 +196,7 @@ struct htb_class
     struct qdisc_rate_table *rate;     /* rate table of the class itself */
     struct qdisc_rate_table *ceil;     /* ceiling rate (limits borrows too) */
     long buffer,cbuffer;               /* token bucket depth/rate */
-    long mbuffer;                      /* max wait time */
+    psched_tdiff_t mbuffer;            /* max wait time */
     long tokens,ctokens;               /* current number of tokens */
     psched_time_t t_c;                 /* checkpoint time */
 };
@@ -1601,7 +1601,7 @@ static int htb_change_class(struct Qdisc *sch, u32 classid,
                /* set class to be in HTB_CAN_SEND state */
                cl->tokens = hopt->buffer;
                cl->ctokens = hopt->cbuffer;
-               cl->mbuffer = 60000000; /* 1min */
+               cl->mbuffer = PSCHED_JIFFIE2US(HZ*60) /* 1min */
                PSCHED_GET_TIME(cl->t_c);
                cl->cmode = HTB_CAN_SEND;