bnx2x: small fix in stats handling
authorEric Dumazet <eric.dumazet@gmail.com>
Mon, 23 Aug 2010 19:44:08 +0000 (19:44 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 25 Aug 2010 23:29:21 +0000 (16:29 -0700)
Use a private variable to fold rx_dropped value, instead of shared
destination buffer, as it might break SNMP applications.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
CC: Eilon Greenstein <eilong@broadcom.com>
CC: Dmitry Kravkov <dmitry@broadcom.com>
Acked-By: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bnx2x/bnx2x_stats.c

index c747244..efa1403 100644 (file)
@@ -969,6 +969,7 @@ static void bnx2x_net_stats_update(struct bnx2x *bp)
 {
        struct bnx2x_eth_stats *estats = &bp->eth_stats;
        struct net_device_stats *nstats = &bp->dev->stats;
+       unsigned long tmp;
        int i;
 
        nstats->rx_packets =
@@ -985,10 +986,10 @@ static void bnx2x_net_stats_update(struct bnx2x *bp)
 
        nstats->tx_bytes = bnx2x_hilo(&estats->total_bytes_transmitted_hi);
 
-       nstats->rx_dropped = estats->mac_discard;
+       tmp = estats->mac_discard;
        for_each_queue(bp, i)
-               nstats->rx_dropped +=
-                       le32_to_cpu(bp->fp[i].old_tclient.checksum_discard);
+               tmp += le32_to_cpu(bp->fp[i].old_tclient.checksum_discard);
+       nstats->rx_dropped = tmp;
 
        nstats->tx_dropped = 0;