[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <4AEF9862.8040404@gmail.com>
Date: Tue, 03 Nov 2009 10:41:38 +0800
From: Changli Gao <xiaosuo@...il.com>
To: Jamal Hadi Salim <hadi@...erus.ca>
CC: devik@....cz, netdev@...r.kernel.org, xiaosuo <xiaosuo@...il.com>
Subject: [PATCH] sch_htb.c consume the classes's tokens bellow the HTB_CAN_SEND
level
sch_htb.c consume the classes's tokens bellow the HTB_CAN_SEND level.
When a class enters HTB_MAY_BORROW state, it relies on its parents to
sent packets. The parent class in HTB_CAN_SEND state only consumes
itself and its parents's tokens, but ADD tokens to the classes under its
level. It is totally wrong. It means that a class, which sends packets
in ceil rate, can also enter HTB_CAN_SEND state now and then.
Signed-off-by: Changli Gao <xiaosuo@...il.com>
----
net/sched/sch_htb.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c
index 85acab9..2705702 100644
--- a/net/sched/sch_htb.c
+++ b/net/sched/sch_htb.c
@@ -629,11 +629,10 @@ static void htb_charge_class(struct htb_sched *q, struct htb_class *cl,
if (cl->level >= level) {
if (cl->level == level)
cl->xstats.lends++;
- htb_accnt_tokens(cl, bytes, diff);
} else {
cl->xstats.borrows++;
- cl->tokens += diff; /* we moved t_c; update tokens */
}
+ htb_accnt_tokens(cl, bytes, diff);
htb_accnt_ctokens(cl, bytes, diff);
cl->t_c = q->now;
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists