aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/dev.c
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2010-07-19 12:35:40 -0400
committerDavid S. Miller <davem@davemloft.net>2010-07-19 12:35:40 -0400
commitbd27290a593f80cb99e95287cb29c72c0d57608b (patch)
treec12dfb1cb4cfd7f7d65e34fcf53797685ec66670 /net/core/dev.c
parentdb5dda905759c931ceb8f3f2fcfd7719009acc98 (diff)
net: 64bit stats for netdev_queue
Since struct netdev_queue tx_bytes/tx_packets/tx_dropped are already protected by _xmit_lock, its easy to convert these fields to u64 instead of unsigned long. This completes 64bit stats for devices using them (vlan, macvlan, ...) Strictly, we could avoid the locking in dev_txq_stats_fold() on 64bit arches, but its slow path and we prefer keep it simple. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/dev.c')
-rw-r--r--net/core/dev.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 1c002c7ef5d..9de75cdade5 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -5282,15 +5282,17 @@ void netdev_run_todo(void)
5282void dev_txq_stats_fold(const struct net_device *dev, 5282void dev_txq_stats_fold(const struct net_device *dev,
5283 struct rtnl_link_stats64 *stats) 5283 struct rtnl_link_stats64 *stats)
5284{ 5284{
5285 unsigned long tx_bytes = 0, tx_packets = 0, tx_dropped = 0; 5285 u64 tx_bytes = 0, tx_packets = 0, tx_dropped = 0;
5286 unsigned int i; 5286 unsigned int i;
5287 struct netdev_queue *txq; 5287 struct netdev_queue *txq;
5288 5288
5289 for (i = 0; i < dev->num_tx_queues; i++) { 5289 for (i = 0; i < dev->num_tx_queues; i++) {
5290 txq = netdev_get_tx_queue(dev, i); 5290 txq = netdev_get_tx_queue(dev, i);
5291 spin_lock_bh(&txq->_xmit_lock);
5291 tx_bytes += txq->tx_bytes; 5292 tx_bytes += txq->tx_bytes;
5292 tx_packets += txq->tx_packets; 5293 tx_packets += txq->tx_packets;
5293 tx_dropped += txq->tx_dropped; 5294 tx_dropped += txq->tx_dropped;
5295 spin_unlock_bh(&txq->_xmit_lock);
5294 } 5296 }
5295 if (tx_bytes || tx_packets || tx_dropped) { 5297 if (tx_bytes || tx_packets || tx_dropped) {
5296 stats->tx_bytes = tx_bytes; 5298 stats->tx_bytes = tx_bytes;