[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <490824B3.20100@gmail.com>
Date: Wed, 29 Oct 2008 16:54:11 +0800
From: Changli Gao <xiaosuo@...il.com>
To: netdev@...r.kernel.org
CC: xiaosuo <xiaosuo@...il.com>
Subject: [PATCH] HTB updates class's bstats in one place
This patch make HTB update class's bstats in one place when dequeuing
packets instead of updating the leaf's when enqueuing and updating the
other's when dequeuing. It also fixes a statistics bug, the statistics
data of leaf class will exceeds its parent classes's due to packets are
dropped by its inner qdisc.
Signed-off-by: Changli Gao <xiaosuo@...il.com <mailto:xiaosuo@...il.com>>
---
sch_htb.c | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
--- net/sched/sch_htb.c.orig 2008-10-29 16:18:13.000000000 +0800
+++ net/sched/sch_htb.c 2008-10-29 16:19:54.000000000 +0800
@@ -579,9 +579,6 @@
}
return ret;
} else {
- cl->bstats.packets +=
- skb_is_gso(skb)?skb_shinfo(skb)->gso_segs:1;
- cl->bstats.bytes += qdisc_pkt_len(skb);
htb_activate(q, cl);
}
@@ -679,12 +676,10 @@
htb_add_to_wait_tree(q, cl, diff);
}
- /* update byte stats except for leaves which are already updated */
- if (cl->level) {
- cl->bstats.bytes += bytes;
- cl->bstats.packets += skb_is_gso(skb)?
- skb_shinfo(skb)->gso_segs:1;
- }
+ cl->bstats.bytes += bytes;
+ cl->bstats.packets += skb_is_gso(skb)?
+ skb_shinfo(skb)->gso_segs:1;
+
cl = cl->parent;
}
}
--
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