diff options
Diffstat (limited to 'drivers/net/ethernet/intel/igc')
| -rw-r--r-- | drivers/net/ethernet/intel/igc/igc_main.c | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c index 9112dff075cf..b673ac1199bb 100644 --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c @@ -3891,21 +3891,23 @@ static int igc_change_mtu(struct net_device *netdev, int new_mtu)  }  /** - * igc_get_stats - Get System Network Statistics + * igc_get_stats64 - Get System Network Statistics   * @netdev: network interface device structure + * @stats: rtnl_link_stats64 pointer   *   * Returns the address of the device statistics structure.   * The statistics are updated here and also from the timer callback.   */ -static struct net_device_stats *igc_get_stats(struct net_device *netdev) +static void igc_get_stats64(struct net_device *netdev, +			    struct rtnl_link_stats64 *stats)  {  	struct igc_adapter *adapter = netdev_priv(netdev); +	spin_lock(&adapter->stats64_lock);  	if (!test_bit(__IGC_RESETTING, &adapter->state))  		igc_update_stats(adapter); - -	/* only return the current stats */ -	return &netdev->stats; +	memcpy(stats, &adapter->stats64, sizeof(*stats)); +	spin_unlock(&adapter->stats64_lock);  }  static netdev_features_t igc_fix_features(struct net_device *netdev, @@ -4855,7 +4857,7 @@ static const struct net_device_ops igc_netdev_ops = {  	.ndo_set_rx_mode	= igc_set_rx_mode,  	.ndo_set_mac_address	= igc_set_mac,  	.ndo_change_mtu		= igc_change_mtu, -	.ndo_get_stats		= igc_get_stats, +	.ndo_get_stats64	= igc_get_stats64,  	.ndo_fix_features	= igc_fix_features,  	.ndo_set_features	= igc_set_features,  	.ndo_features_check	= igc_features_check,  | 
