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 */
|
||||
struct net_device *netdev;
|
||||
struct pci_dev *pdev;
|
||||
struct net_device_stats net_stats;
|
||||
|
||||
struct i40e_hw hw; /* defined in i40e_type.h */
|
||||
|
||||
|
|
|
@ -2242,21 +2242,6 @@ static int i40evf_close(struct net_device *netdev)
|
|||
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
|
||||
* @netdev: network interface device structure
|
||||
|
@ -2363,7 +2348,6 @@ static const struct net_device_ops i40evf_netdev_ops = {
|
|||
.ndo_open = i40evf_open,
|
||||
.ndo_stop = i40evf_close,
|
||||
.ndo_start_xmit = i40evf_xmit_frame,
|
||||
.ndo_get_stats = i40evf_get_stats,
|
||||
.ndo_set_rx_mode = i40evf_set_rx_mode,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.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: {
|
||||
struct i40e_eth_stats *stats =
|
||||
(struct i40e_eth_stats *)msg;
|
||||
adapter->net_stats.rx_packets = stats->rx_unicast +
|
||||
stats->rx_multicast +
|
||||
stats->rx_broadcast;
|
||||
adapter->net_stats.tx_packets = stats->tx_unicast +
|
||||
stats->tx_multicast +
|
||||
stats->tx_broadcast;
|
||||
adapter->net_stats.rx_bytes = stats->rx_bytes;
|
||||
adapter->net_stats.tx_bytes = stats->tx_bytes;
|
||||
adapter->net_stats.tx_errors = stats->tx_errors;
|
||||
adapter->net_stats.rx_dropped = stats->rx_discards;
|
||||
adapter->net_stats.tx_dropped = stats->tx_discards;
|
||||
netdev->stats.rx_packets = stats->rx_unicast +
|
||||
stats->rx_multicast +
|
||||
stats->rx_broadcast;
|
||||
netdev->stats.tx_packets = stats->tx_unicast +
|
||||
stats->tx_multicast +
|
||||
stats->tx_broadcast;
|
||||
netdev->stats.rx_bytes = stats->rx_bytes;
|
||||
netdev->stats.tx_bytes = stats->tx_bytes;
|
||||
netdev->stats.tx_errors = stats->tx_errors;
|
||||
netdev->stats.rx_dropped = stats->rx_discards;
|
||||
netdev->stats.tx_dropped = stats->tx_discards;
|
||||
adapter->current_stats = *stats;
|
||||
}
|
||||
break;
|
||||
|
|
Загрузка…
Ссылка в новой задаче