diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2011-06-19 16:07:46 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-06-20 16:02:36 -0400 |
commit | 306ff6eb8e9c18bcafb8ca5be4be3c78dfe45475 (patch) | |
tree | 02fdfd2682061ca9078962cf41a32d3f40c95043 /drivers | |
parent | eac56465b88cc9ad3b964a9f0a02be3d3a136ddf (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.c | 10 |
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: | |||
2981 | static struct rtnl_link_stats64 *myri10ge_get_stats(struct net_device *dev, | 2981 | static 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); |