|
@@ -489,13 +489,14 @@ static void efx_ethtool_get_stats(struct net_device *net_dev,
|
|
|
const struct efx_ethtool_stat *stat;
|
|
|
struct efx_channel *channel;
|
|
|
struct efx_tx_queue *tx_queue;
|
|
|
- struct rtnl_link_stats64 temp;
|
|
|
int i;
|
|
|
|
|
|
EFX_BUG_ON_PARANOID(stats->n_stats != EFX_ETHTOOL_NUM_STATS);
|
|
|
|
|
|
+ spin_lock_bh(&efx->stats_lock);
|
|
|
+
|
|
|
/* Update MAC and NIC statistics */
|
|
|
- dev_get_stats(net_dev, &temp);
|
|
|
+ efx->type->update_stats(efx);
|
|
|
|
|
|
/* Fill detailed statistics buffer */
|
|
|
for (i = 0; i < EFX_ETHTOOL_NUM_STATS; i++) {
|
|
@@ -525,6 +526,8 @@ static void efx_ethtool_get_stats(struct net_device *net_dev,
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ spin_unlock_bh(&efx->stats_lock);
|
|
|
}
|
|
|
|
|
|
static void efx_ethtool_self_test(struct net_device *net_dev,
|