ixgbe: Use the instance of net_device_stats from net_device.

Since net_device has an instance of net_device_stats,
we can remove the instance of this from the private adapter structure.

Signed-off-by: Ajit Khaparde <ajitk@serverengines.com>
Acked-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Ajit Khaparde 2009-10-07 02:43:49 +00:00 committed by David S. Miller
parent 6dc3494183
commit 2d86f1393c
3 changed files with 34 additions and 33 deletions

View File

@ -340,7 +340,6 @@ struct ixgbe_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;
u32 test_icr; u32 test_icr;
struct ixgbe_ring test_tx_ring; struct ixgbe_ring test_tx_ring;

View File

@ -48,11 +48,13 @@ struct ixgbe_stats {
#define IXGBE_STAT(m) sizeof(((struct ixgbe_adapter *)0)->m), \ #define IXGBE_STAT(m) sizeof(((struct ixgbe_adapter *)0)->m), \
offsetof(struct ixgbe_adapter, m) offsetof(struct ixgbe_adapter, m)
#define IXGBE_NETDEV_STAT(m) sizeof(((struct net_device *)0)->m), \
offsetof(struct net_device, m)
static struct ixgbe_stats ixgbe_gstrings_stats[] = { static struct ixgbe_stats ixgbe_gstrings_stats[] = {
{"rx_packets", IXGBE_STAT(net_stats.rx_packets)}, {"rx_packets", IXGBE_NETDEV_STAT(stats.rx_packets)},
{"tx_packets", IXGBE_STAT(net_stats.tx_packets)}, {"tx_packets", IXGBE_NETDEV_STAT(stats.tx_packets)},
{"rx_bytes", IXGBE_STAT(net_stats.rx_bytes)}, {"rx_bytes", IXGBE_NETDEV_STAT(stats.rx_bytes)},
{"tx_bytes", IXGBE_STAT(net_stats.tx_bytes)}, {"tx_bytes", IXGBE_NETDEV_STAT(stats.tx_bytes)},
{"rx_pkts_nic", IXGBE_STAT(stats.gprc)}, {"rx_pkts_nic", IXGBE_STAT(stats.gprc)},
{"tx_pkts_nic", IXGBE_STAT(stats.gptc)}, {"tx_pkts_nic", IXGBE_STAT(stats.gptc)},
{"rx_bytes_nic", IXGBE_STAT(stats.gorc)}, {"rx_bytes_nic", IXGBE_STAT(stats.gorc)},
@ -60,26 +62,26 @@ static struct ixgbe_stats ixgbe_gstrings_stats[] = {
{"lsc_int", IXGBE_STAT(lsc_int)}, {"lsc_int", IXGBE_STAT(lsc_int)},
{"tx_busy", IXGBE_STAT(tx_busy)}, {"tx_busy", IXGBE_STAT(tx_busy)},
{"non_eop_descs", IXGBE_STAT(non_eop_descs)}, {"non_eop_descs", IXGBE_STAT(non_eop_descs)},
{"rx_errors", IXGBE_STAT(net_stats.rx_errors)}, {"rx_errors", IXGBE_NETDEV_STAT(stats.rx_errors)},
{"tx_errors", IXGBE_STAT(net_stats.tx_errors)}, {"tx_errors", IXGBE_NETDEV_STAT(stats.tx_errors)},
{"rx_dropped", IXGBE_STAT(net_stats.rx_dropped)}, {"rx_dropped", IXGBE_NETDEV_STAT(stats.rx_dropped)},
{"tx_dropped", IXGBE_STAT(net_stats.tx_dropped)}, {"tx_dropped", IXGBE_NETDEV_STAT(stats.tx_dropped)},
{"multicast", IXGBE_STAT(net_stats.multicast)}, {"multicast", IXGBE_NETDEV_STAT(stats.multicast)},
{"broadcast", IXGBE_STAT(stats.bprc)}, {"broadcast", IXGBE_STAT(stats.bprc)},
{"rx_no_buffer_count", IXGBE_STAT(stats.rnbc[0]) }, {"rx_no_buffer_count", IXGBE_STAT(stats.rnbc[0]) },
{"collisions", IXGBE_STAT(net_stats.collisions)}, {"collisions", IXGBE_NETDEV_STAT(stats.collisions)},
{"rx_over_errors", IXGBE_STAT(net_stats.rx_over_errors)}, {"rx_over_errors", IXGBE_NETDEV_STAT(stats.rx_over_errors)},
{"rx_crc_errors", IXGBE_STAT(net_stats.rx_crc_errors)}, {"rx_crc_errors", IXGBE_NETDEV_STAT(stats.rx_crc_errors)},
{"rx_frame_errors", IXGBE_STAT(net_stats.rx_frame_errors)}, {"rx_frame_errors", IXGBE_NETDEV_STAT(stats.rx_frame_errors)},
{"hw_rsc_count", IXGBE_STAT(rsc_count)}, {"hw_rsc_count", IXGBE_STAT(rsc_count)},
{"fdir_match", IXGBE_STAT(stats.fdirmatch)}, {"fdir_match", IXGBE_STAT(stats.fdirmatch)},
{"fdir_miss", IXGBE_STAT(stats.fdirmiss)}, {"fdir_miss", IXGBE_STAT(stats.fdirmiss)},
{"rx_fifo_errors", IXGBE_STAT(net_stats.rx_fifo_errors)}, {"rx_fifo_errors", IXGBE_NETDEV_STAT(stats.rx_fifo_errors)},
{"rx_missed_errors", IXGBE_STAT(net_stats.rx_missed_errors)}, {"rx_missed_errors", IXGBE_NETDEV_STAT(stats.rx_missed_errors)},
{"tx_aborted_errors", IXGBE_STAT(net_stats.tx_aborted_errors)}, {"tx_aborted_errors", IXGBE_NETDEV_STAT(stats.tx_aborted_errors)},
{"tx_carrier_errors", IXGBE_STAT(net_stats.tx_carrier_errors)}, {"tx_carrier_errors", IXGBE_NETDEV_STAT(stats.tx_carrier_errors)},
{"tx_fifo_errors", IXGBE_STAT(net_stats.tx_fifo_errors)}, {"tx_fifo_errors", IXGBE_NETDEV_STAT(stats.tx_fifo_errors)},
{"tx_heartbeat_errors", IXGBE_STAT(net_stats.tx_heartbeat_errors)}, {"tx_heartbeat_errors", IXGBE_NETDEV_STAT(stats.tx_heartbeat_errors)},
{"tx_timeout_count", IXGBE_STAT(tx_timeout_count)}, {"tx_timeout_count", IXGBE_STAT(tx_timeout_count)},
{"tx_restart_queue", IXGBE_STAT(restart_queue)}, {"tx_restart_queue", IXGBE_STAT(restart_queue)},
{"rx_long_length_errors", IXGBE_STAT(stats.roc)}, {"rx_long_length_errors", IXGBE_STAT(stats.roc)},

View File

@ -372,8 +372,8 @@ static bool ixgbe_clean_tx_irq(struct ixgbe_q_vector *q_vector,
tx_ring->total_packets += total_packets; tx_ring->total_packets += total_packets;
tx_ring->stats.packets += total_packets; tx_ring->stats.packets += total_packets;
tx_ring->stats.bytes += total_bytes; tx_ring->stats.bytes += total_bytes;
adapter->net_stats.tx_bytes += total_bytes; netdev->stats.tx_bytes += total_bytes;
adapter->net_stats.tx_packets += total_packets; netdev->stats.tx_packets += total_packets;
return (count < tx_ring->work_limit); return (count < tx_ring->work_limit);
} }
@ -709,6 +709,7 @@ static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
int *work_done, int work_to_do) int *work_done, int work_to_do)
{ {
struct ixgbe_adapter *adapter = q_vector->adapter; struct ixgbe_adapter *adapter = q_vector->adapter;
struct net_device *netdev = adapter->netdev;
struct pci_dev *pdev = adapter->pdev; struct pci_dev *pdev = adapter->pdev;
union ixgbe_adv_rx_desc *rx_desc, *next_rxd; union ixgbe_adv_rx_desc *rx_desc, *next_rxd;
struct ixgbe_rx_buffer *rx_buffer_info, *next_buffer; struct ixgbe_rx_buffer *rx_buffer_info, *next_buffer;
@ -880,8 +881,8 @@ next_desc:
rx_ring->total_packets += total_rx_packets; rx_ring->total_packets += total_rx_packets;
rx_ring->total_bytes += total_rx_bytes; rx_ring->total_bytes += total_rx_bytes;
adapter->net_stats.rx_bytes += total_rx_bytes; netdev->stats.rx_bytes += total_rx_bytes;
adapter->net_stats.rx_packets += total_rx_packets; netdev->stats.rx_packets += total_rx_packets;
return cleaned; return cleaned;
} }
@ -4403,6 +4404,7 @@ static void ixgbe_shutdown(struct pci_dev *pdev)
**/ **/
void ixgbe_update_stats(struct ixgbe_adapter *adapter) void ixgbe_update_stats(struct ixgbe_adapter *adapter)
{ {
struct net_device *netdev = adapter->netdev;
struct ixgbe_hw *hw = &adapter->hw; struct ixgbe_hw *hw = &adapter->hw;
u64 total_mpc = 0; u64 total_mpc = 0;
u32 i, missed_rx = 0, mpc, bprc, lxon, lxoff, xon_off_tot; u32 i, missed_rx = 0, mpc, bprc, lxon, lxoff, xon_off_tot;
@ -4522,15 +4524,15 @@ void ixgbe_update_stats(struct ixgbe_adapter *adapter)
adapter->stats.bptc += IXGBE_READ_REG(hw, IXGBE_BPTC); adapter->stats.bptc += IXGBE_READ_REG(hw, IXGBE_BPTC);
/* Fill out the OS statistics structure */ /* Fill out the OS statistics structure */
adapter->net_stats.multicast = adapter->stats.mprc; netdev->stats.multicast = adapter->stats.mprc;
/* Rx Errors */ /* Rx Errors */
adapter->net_stats.rx_errors = adapter->stats.crcerrs + netdev->stats.rx_errors = adapter->stats.crcerrs +
adapter->stats.rlec; adapter->stats.rlec;
adapter->net_stats.rx_dropped = 0; netdev->stats.rx_dropped = 0;
adapter->net_stats.rx_length_errors = adapter->stats.rlec; netdev->stats.rx_length_errors = adapter->stats.rlec;
adapter->net_stats.rx_crc_errors = adapter->stats.crcerrs; netdev->stats.rx_crc_errors = adapter->stats.crcerrs;
adapter->net_stats.rx_missed_errors = total_mpc; netdev->stats.rx_missed_errors = total_mpc;
} }
/** /**
@ -5300,10 +5302,8 @@ static netdev_tx_t ixgbe_xmit_frame(struct sk_buff *skb,
**/ **/
static struct net_device_stats *ixgbe_get_stats(struct net_device *netdev) static struct net_device_stats *ixgbe_get_stats(struct net_device *netdev)
{ {
struct ixgbe_adapter *adapter = netdev_priv(netdev);
/* only return the current stats */ /* only return the current stats */
return &adapter->net_stats; return &netdev->stats;
} }
/** /**