aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2011-06-19 16:07:46 -0400
committerDavid S. Miller <davem@davemloft.net>2011-06-20 16:02:36 -0400
commit306ff6eb8e9c18bcafb8ca5be4be3c78dfe45475 (patch)
tree02fdfd2682061ca9078962cf41a32d3f40c95043 /drivers
parenteac56465b88cc9ad3b964a9f0a02be3d3a136ddf (diff)
myricom: remove stats_lock
stats_lock is non useless, lets remove it. Also, ndo_get_stats64() doesnt have to clear the stats, caller takes care of this. Note: folding 32bit fields in 64bit one is problematic when one of 32bit values wraps : SNMP reader will see a ~2^32 back change in a 64bit value. A future patch should fix this. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> CC: Stephen Hemminger <shemminger@vyatta.com> CC: Andrew Gallatin <gallatin@myri.com> CC: Brice Goglin <brice@myri.com> Acked-by: Jon Mason <mason@myri.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/myri10ge/myri10ge.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index 04e10f4d679d..3e89a842fc5e 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -210,7 +210,6 @@ struct myri10ge_priv {
210 int big_bytes; 210 int big_bytes;
211 int max_intr_slots; 211 int max_intr_slots;
212 struct net_device *dev; 212 struct net_device *dev;
213 spinlock_t stats_lock;
214 u8 __iomem *sram; 213 u8 __iomem *sram;
215 int sram_size; 214 int sram_size;
216 unsigned long board_span; 215 unsigned long board_span;
@@ -1837,6 +1836,7 @@ myri10ge_get_ethtool_stats(struct net_device *netdev,
1837 int i; 1836 int i;
1838 1837
1839 /* force stats update */ 1838 /* force stats update */
1839 memset(&link_stats, 0, sizeof(link_stats));
1840 (void)myri10ge_get_stats(netdev, &link_stats); 1840 (void)myri10ge_get_stats(netdev, &link_stats);
1841 for (i = 0; i < MYRI10GE_NET_STATS_LEN; i++) 1841 for (i = 0; i < MYRI10GE_NET_STATS_LEN; i++)
1842 data[i] = ((u64 *)&link_stats)[i]; 1842 data[i] = ((u64 *)&link_stats)[i];
@@ -2981,12 +2981,10 @@ drop:
2981static struct rtnl_link_stats64 *myri10ge_get_stats(struct net_device *dev, 2981static struct rtnl_link_stats64 *myri10ge_get_stats(struct net_device *dev,
2982 struct rtnl_link_stats64 *stats) 2982 struct rtnl_link_stats64 *stats)
2983{ 2983{
2984 struct myri10ge_priv *mgp = netdev_priv(dev); 2984 const struct myri10ge_priv *mgp = netdev_priv(dev);
2985 struct myri10ge_slice_netstats *slice_stats; 2985 const struct myri10ge_slice_netstats *slice_stats;
2986 int i; 2986 int i;
2987 2987
2988 spin_lock(&mgp->stats_lock);
2989 memset(stats, 0, sizeof(*stats));
2990 for (i = 0; i < mgp->num_slices; i++) { 2988 for (i = 0; i < mgp->num_slices; i++) {
2991 slice_stats = &mgp->ss[i].stats; 2989 slice_stats = &mgp->ss[i].stats;
2992 stats->rx_packets += slice_stats->rx_packets; 2990 stats->rx_packets += slice_stats->rx_packets;
@@ -2996,7 +2994,6 @@ static struct rtnl_link_stats64 *myri10ge_get_stats(struct net_device *dev,
2996 stats->rx_dropped += slice_stats->rx_dropped; 2994 stats->rx_dropped += slice_stats->rx_dropped;
2997 stats->tx_dropped += slice_stats->tx_dropped; 2995 stats->tx_dropped += slice_stats->tx_dropped;
2998 } 2996 }
2999 spin_unlock(&mgp->stats_lock);
3000 return stats; 2997 return stats;
3001} 2998}
3002 2999
@@ -3966,7 +3963,6 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
3966 setup_timer(&mgp->watchdog_timer, myri10ge_watchdog_timer, 3963 setup_timer(&mgp->watchdog_timer, myri10ge_watchdog_timer,
3967 (unsigned long)mgp); 3964 (unsigned long)mgp);
3968 3965
3969 spin_lock_init(&mgp->stats_lock);
3970 SET_ETHTOOL_OPS(netdev, &myri10ge_ethtool_ops); 3966 SET_ETHTOOL_OPS(netdev, &myri10ge_ethtool_ops);
3971 INIT_WORK(&mgp->watchdog_work, myri10ge_watchdog); 3967 INIT_WORK(&mgp->watchdog_work, myri10ge_watchdog);
3972 status = register_netdev(netdev); 3968 status = register_netdev(netdev);