myri10ge: fix per-slice rx/tx_dropped counters
authorBrice Goglin <brice@myri.com>
Thu, 20 Nov 2008 09:50:04 +0000 (01:50 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 20 Nov 2008 09:50:04 +0000 (01:50 -0800)
Properly attribute transmit and receive drops by incrementing the
per-slice counter.

Signed-off-by: Brice Goglin <brice@myri.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/myri10ge/myri10ge.c

index 56c6f876042ce7b6a85efedd9e1adc3327deaaaa..cd856d7ce9f128303ee4d53faf60484ce898c748 100644 (file)
@@ -1309,7 +1309,7 @@ myri10ge_rx_done(struct myri10ge_slice_state *ss, struct myri10ge_rx_buf *rx,
 
        skb = netdev_alloc_skb(dev, MYRI10GE_HLEN + 16);
        if (unlikely(skb == NULL)) {
-               mgp->stats.rx_dropped++;
+               ss->stats.rx_dropped++;
                do {
                        i--;
                        put_page(rx_frags[i].page);
@@ -2926,6 +2926,7 @@ static int myri10ge_sw_tso(struct sk_buff *skb, struct net_device *dev)
 {
        struct sk_buff *segs, *curr;
        struct myri10ge_priv *mgp = netdev_priv(dev);
+       struct myri10ge_slice_state *ss;
        int status;
 
        segs = skb_gso_segment(skb, dev->features & ~NETIF_F_TSO6);
@@ -2952,8 +2953,9 @@ static int myri10ge_sw_tso(struct sk_buff *skb, struct net_device *dev)
        return 0;
 
 drop:
+       ss = &mgp->ss[skb_get_queue_mapping(skb)];
        dev_kfree_skb_any(skb);
-       mgp->stats.tx_dropped += 1;
+       ss->stats.tx_dropped += 1;
        return 0;
 }