diff options
Diffstat (limited to 'drivers/net/xen-netback/interface.c')
-rw-r--r-- | drivers/net/xen-netback/interface.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c index e30ffd29b7e9..50fa1692d985 100644 --- a/drivers/net/xen-netback/interface.c +++ b/drivers/net/xen-netback/interface.c | |||
@@ -221,18 +221,18 @@ static struct net_device_stats *xenvif_get_stats(struct net_device *dev) | |||
221 | { | 221 | { |
222 | struct xenvif *vif = netdev_priv(dev); | 222 | struct xenvif *vif = netdev_priv(dev); |
223 | struct xenvif_queue *queue = NULL; | 223 | struct xenvif_queue *queue = NULL; |
224 | unsigned int num_queues = vif->num_queues; | 224 | u64 rx_bytes = 0; |
225 | unsigned long rx_bytes = 0; | 225 | u64 rx_packets = 0; |
226 | unsigned long rx_packets = 0; | 226 | u64 tx_bytes = 0; |
227 | unsigned long tx_bytes = 0; | 227 | u64 tx_packets = 0; |
228 | unsigned long tx_packets = 0; | ||
229 | unsigned int index; | 228 | unsigned int index; |
230 | 229 | ||
230 | spin_lock(&vif->lock); | ||
231 | if (vif->queues == NULL) | 231 | if (vif->queues == NULL) |
232 | goto out; | 232 | goto out; |
233 | 233 | ||
234 | /* Aggregate tx and rx stats from each queue */ | 234 | /* Aggregate tx and rx stats from each queue */ |
235 | for (index = 0; index < num_queues; ++index) { | 235 | for (index = 0; index < vif->num_queues; ++index) { |
236 | queue = &vif->queues[index]; | 236 | queue = &vif->queues[index]; |
237 | rx_bytes += queue->stats.rx_bytes; | 237 | rx_bytes += queue->stats.rx_bytes; |
238 | rx_packets += queue->stats.rx_packets; | 238 | rx_packets += queue->stats.rx_packets; |
@@ -241,6 +241,8 @@ static struct net_device_stats *xenvif_get_stats(struct net_device *dev) | |||
241 | } | 241 | } |
242 | 242 | ||
243 | out: | 243 | out: |
244 | spin_unlock(&vif->lock); | ||
245 | |||
244 | vif->dev->stats.rx_bytes = rx_bytes; | 246 | vif->dev->stats.rx_bytes = rx_bytes; |
245 | vif->dev->stats.rx_packets = rx_packets; | 247 | vif->dev->stats.rx_packets = rx_packets; |
246 | vif->dev->stats.tx_bytes = tx_bytes; | 248 | vif->dev->stats.tx_bytes = tx_bytes; |