summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2007-05-23 23:39:54 -0700
committerDavid S. Miller <davem@sunset.davemloft.net>2007-05-24 16:36:56 -0700
commit2e4b3b0e8734d1173c96c6f5d8a8dd6728950b56 (patch)
tree0fbdf481ad4ef35c1bb99ac16c7db0fd240f86ed
parent1b07a95a5be77dc1291de12b216f930aee04eb4f (diff)
downloadlinux-lfu-2e4b3b0e8734d1173c96c6f5d8a8dd6728950b56.tar.gz
linux-lfu-2e4b3b0e8734d1173c96c6f5d8a8dd6728950b56.tar.xz
[NET_SCHED]: sch_htb: fix event cache time calculation
The event cache time must be an absolute value, when no event exists it is incorrectly set to 1s instead of 1s in the future. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/sched/sch_htb.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c
index 99bcec8dd04..035788c5b7f 100644
--- a/net/sched/sch_htb.c
+++ b/net/sched/sch_htb.c
@@ -976,8 +976,9 @@ static struct sk_buff *htb_dequeue(struct Qdisc *sch)
if (q->now >= q->near_ev_cache[level]) {
event = htb_do_events(q, level);
- q->near_ev_cache[level] = event ? event :
- PSCHED_TICKS_PER_SEC;
+ if (!event)
+ event = q->now + PSCHED_TICKS_PER_SEC;
+ q->near_ev_cache[level] = event;
} else
event = q->near_ev_cache[level];