diff options
author | Patrick McHardy <kaber@trash.net> | 2007-05-23 23:39:54 -0700 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-05-24 16:36:56 -0700 |
commit | 2e4b3b0e8734d1173c96c6f5d8a8dd6728950b56 (patch) | |
tree | 0fbdf481ad4ef35c1bb99ac16c7db0fd240f86ed /net | |
parent | 1b07a95a5be77dc1291de12b216f930aee04eb4f (diff) | |
download | op-kernel-dev-2e4b3b0e8734d1173c96c6f5d8a8dd6728950b56.zip op-kernel-dev-2e4b3b0e8734d1173c96c6f5d8a8dd6728950b56.tar.gz |
[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>
Diffstat (limited to 'net')
-rw-r--r-- | net/sched/sch_htb.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c index 99bcec8..035788c 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]; |