mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 20:51:44 +00:00
igc: Fix returning wrong statistics
'igc_update_stats()' was not updating 'netdev->stats', so the returned
statistics, for example, requested by:
$ ip -s link show dev enp3s0
were not being updated and were always zero.
Fix by returning a set of statistics that are actually being
updated (adapter->stats64).
Fixes: c9a11c23ce
("igc: Add netdev")
Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
parent
1773482fd8
commit
6b7ed22ae4
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user