Commit 306ff6eb authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller

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: default avatarEric 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: default avatarJon Mason <mason@myri.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent eac56465
...@@ -210,7 +210,6 @@ struct myri10ge_priv { ...@@ -210,7 +210,6 @@ struct myri10ge_priv {
int big_bytes; int big_bytes;
int max_intr_slots; int max_intr_slots;
struct net_device *dev; struct net_device *dev;
spinlock_t stats_lock;
u8 __iomem *sram; u8 __iomem *sram;
int sram_size; int sram_size;
unsigned long board_span; unsigned long board_span;
...@@ -1837,6 +1836,7 @@ myri10ge_get_ethtool_stats(struct net_device *netdev, ...@@ -1837,6 +1836,7 @@ myri10ge_get_ethtool_stats(struct net_device *netdev,
int i; int i;
/* force stats update */ /* force stats update */
memset(&link_stats, 0, sizeof(link_stats));
(void)myri10ge_get_stats(netdev, &link_stats); (void)myri10ge_get_stats(netdev, &link_stats);
for (i = 0; i < MYRI10GE_NET_STATS_LEN; i++) for (i = 0; i < MYRI10GE_NET_STATS_LEN; i++)
data[i] = ((u64 *)&link_stats)[i]; data[i] = ((u64 *)&link_stats)[i];
...@@ -2981,12 +2981,10 @@ static netdev_tx_t myri10ge_sw_tso(struct sk_buff *skb, ...@@ -2981,12 +2981,10 @@ static netdev_tx_t myri10ge_sw_tso(struct sk_buff *skb,
static struct rtnl_link_stats64 *myri10ge_get_stats(struct net_device *dev, static struct rtnl_link_stats64 *myri10ge_get_stats(struct net_device *dev,
struct rtnl_link_stats64 *stats) struct rtnl_link_stats64 *stats)
{ {
struct myri10ge_priv *mgp = netdev_priv(dev); const struct myri10ge_priv *mgp = netdev_priv(dev);
struct myri10ge_slice_netstats *slice_stats; const struct myri10ge_slice_netstats *slice_stats;
int i; int i;
spin_lock(&mgp->stats_lock);
memset(stats, 0, sizeof(*stats));
for (i = 0; i < mgp->num_slices; i++) { for (i = 0; i < mgp->num_slices; i++) {
slice_stats = &mgp->ss[i].stats; slice_stats = &mgp->ss[i].stats;
stats->rx_packets += slice_stats->rx_packets; stats->rx_packets += slice_stats->rx_packets;
...@@ -2996,7 +2994,6 @@ static struct rtnl_link_stats64 *myri10ge_get_stats(struct net_device *dev, ...@@ -2996,7 +2994,6 @@ static struct rtnl_link_stats64 *myri10ge_get_stats(struct net_device *dev,
stats->rx_dropped += slice_stats->rx_dropped; stats->rx_dropped += slice_stats->rx_dropped;
stats->tx_dropped += slice_stats->tx_dropped; stats->tx_dropped += slice_stats->tx_dropped;
} }
spin_unlock(&mgp->stats_lock);
return stats; return stats;
} }
...@@ -3966,7 +3963,6 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -3966,7 +3963,6 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
setup_timer(&mgp->watchdog_timer, myri10ge_watchdog_timer, setup_timer(&mgp->watchdog_timer, myri10ge_watchdog_timer,
(unsigned long)mgp); (unsigned long)mgp);
spin_lock_init(&mgp->stats_lock);
SET_ETHTOOL_OPS(netdev, &myri10ge_ethtool_ops); SET_ETHTOOL_OPS(netdev, &myri10ge_ethtool_ops);
INIT_WORK(&mgp->watchdog_work, myri10ge_watchdog); INIT_WORK(&mgp->watchdog_work, myri10ge_watchdog);
status = register_netdev(netdev); status = register_netdev(netdev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment