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>
This commit is contained in:
committed by
David S. Miller
parent
eac56465b8
commit
306ff6eb8e
@@ -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,
|
|||||||
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 @@ drop:
|
|||||||
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,
|
|||||||
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)
|
|||||||
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);
|
||||||
|
Reference in New Issue
Block a user