i40evf: Use net_device_stats from struct net_device
Instead of using a private copy of struct net_device_stats in struct i40evf_adapter, use stats from struct net_device. Also remove the now unnecessary .ndo_get_stats function. Signed-off-by: Tobias Klauser <tklauser@distanz.ch> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
Родитель
9868879f29
Коммит
4a0a3abfd9
|
@ -252,7 +252,6 @@ struct i40evf_adapter {
|
||||||
/* OS defined structs */
|
/* OS defined structs */
|
||||||
struct net_device *netdev;
|
struct net_device *netdev;
|
||||||
struct pci_dev *pdev;
|
struct pci_dev *pdev;
|
||||||
struct net_device_stats net_stats;
|
|
||||||
|
|
||||||
struct i40e_hw hw; /* defined in i40e_type.h */
|
struct i40e_hw hw; /* defined in i40e_type.h */
|
||||||
|
|
||||||
|
|
|
@ -2242,21 +2242,6 @@ static int i40evf_close(struct net_device *netdev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* i40evf_get_stats - Get System Network Statistics
|
|
||||||
* @netdev: network interface device structure
|
|
||||||
*
|
|
||||||
* Returns the address of the device statistics structure.
|
|
||||||
* The statistics are actually updated from the timer callback.
|
|
||||||
**/
|
|
||||||
static struct net_device_stats *i40evf_get_stats(struct net_device *netdev)
|
|
||||||
{
|
|
||||||
struct i40evf_adapter *adapter = netdev_priv(netdev);
|
|
||||||
|
|
||||||
/* only return the current stats */
|
|
||||||
return &adapter->net_stats;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* i40evf_change_mtu - Change the Maximum Transfer Unit
|
* i40evf_change_mtu - Change the Maximum Transfer Unit
|
||||||
* @netdev: network interface device structure
|
* @netdev: network interface device structure
|
||||||
|
@ -2363,7 +2348,6 @@ static const struct net_device_ops i40evf_netdev_ops = {
|
||||||
.ndo_open = i40evf_open,
|
.ndo_open = i40evf_open,
|
||||||
.ndo_stop = i40evf_close,
|
.ndo_stop = i40evf_close,
|
||||||
.ndo_start_xmit = i40evf_xmit_frame,
|
.ndo_start_xmit = i40evf_xmit_frame,
|
||||||
.ndo_get_stats = i40evf_get_stats,
|
|
||||||
.ndo_set_rx_mode = i40evf_set_rx_mode,
|
.ndo_set_rx_mode = i40evf_set_rx_mode,
|
||||||
.ndo_validate_addr = eth_validate_addr,
|
.ndo_validate_addr = eth_validate_addr,
|
||||||
.ndo_set_mac_address = i40evf_set_mac,
|
.ndo_set_mac_address = i40evf_set_mac,
|
||||||
|
|
|
@ -960,17 +960,17 @@ void i40evf_virtchnl_completion(struct i40evf_adapter *adapter,
|
||||||
case I40E_VIRTCHNL_OP_GET_STATS: {
|
case I40E_VIRTCHNL_OP_GET_STATS: {
|
||||||
struct i40e_eth_stats *stats =
|
struct i40e_eth_stats *stats =
|
||||||
(struct i40e_eth_stats *)msg;
|
(struct i40e_eth_stats *)msg;
|
||||||
adapter->net_stats.rx_packets = stats->rx_unicast +
|
netdev->stats.rx_packets = stats->rx_unicast +
|
||||||
stats->rx_multicast +
|
stats->rx_multicast +
|
||||||
stats->rx_broadcast;
|
stats->rx_broadcast;
|
||||||
adapter->net_stats.tx_packets = stats->tx_unicast +
|
netdev->stats.tx_packets = stats->tx_unicast +
|
||||||
stats->tx_multicast +
|
stats->tx_multicast +
|
||||||
stats->tx_broadcast;
|
stats->tx_broadcast;
|
||||||
adapter->net_stats.rx_bytes = stats->rx_bytes;
|
netdev->stats.rx_bytes = stats->rx_bytes;
|
||||||
adapter->net_stats.tx_bytes = stats->tx_bytes;
|
netdev->stats.tx_bytes = stats->tx_bytes;
|
||||||
adapter->net_stats.tx_errors = stats->tx_errors;
|
netdev->stats.tx_errors = stats->tx_errors;
|
||||||
adapter->net_stats.rx_dropped = stats->rx_discards;
|
netdev->stats.rx_dropped = stats->rx_discards;
|
||||||
adapter->net_stats.tx_dropped = stats->tx_discards;
|
netdev->stats.tx_dropped = stats->tx_discards;
|
||||||
adapter->current_stats = *stats;
|
adapter->current_stats = *stats;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче