path: root/net/sched/sch_atm.c
diff options
authorEric Dumazet <edumazet@google.com>2012-05-10 05:36:34 +0000
committerDavid S. Miller <davem@davemloft.net>2012-05-10 23:33:01 -0400
commit2dd875ff31ac7ff42d6fc7d7f78ac6c0635439f5 (patch)
treec75209ccd8374f9695d4ec854d5b4bfb80c5e0dc /net/sched/sch_atm.c
parentnet, drivers/net: Convert compare_ether_addr_64bits to ether_addr_equal_64bits (diff)
net_sched: update bstats in dequeue()
Class bytes/packets stats can be misleading because they are updated in enqueue() while packet might be dropped later. We already fixed all qdiscs but sch_atm. This patch makes the final cleanup. class rate estimators can now match qdisc ones. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/sch_atm.c')
1 files changed, 2 insertions, 2 deletions
diff --git a/net/sched/sch_atm.c b/net/sched/sch_atm.c
index a77a4fbc069a..8522a4793374 100644
--- a/net/sched/sch_atm.c
+++ b/net/sched/sch_atm.c
@@ -423,8 +423,6 @@ drop: __maybe_unused
return ret;
- qdisc_bstats_update(sch, skb);
- bstats_update(&flow->bstats, skb);
* Okay, this may seem weird. We pretend we've dropped the packet if
* it goes via ATM. The reason for this is that the outer qdisc
@@ -472,6 +470,8 @@ static void sch_atm_dequeue(unsigned long data)
if (unlikely(!skb))
+ qdisc_bstats_update(sch, skb);
+ bstats_update(&flow->bstats, skb);
pr_debug("atm_tc_dequeue: sending on class %p\n", flow);
/* remove any LL header somebody else has attached */
skb_pull(skb, skb_network_offset(skb));