|
@@ -113,15 +113,15 @@ vmxnet3_global_stats[] = {
|
|
|
};
|
|
|
|
|
|
|
|
|
-struct net_device_stats *
|
|
|
-vmxnet3_get_stats(struct net_device *netdev)
|
|
|
+struct rtnl_link_stats64 *
|
|
|
+vmxnet3_get_stats64(struct net_device *netdev,
|
|
|
+ struct rtnl_link_stats64 *stats)
|
|
|
{
|
|
|
struct vmxnet3_adapter *adapter;
|
|
|
struct vmxnet3_tq_driver_stats *drvTxStats;
|
|
|
struct vmxnet3_rq_driver_stats *drvRxStats;
|
|
|
struct UPT1_TxStats *devTxStats;
|
|
|
struct UPT1_RxStats *devRxStats;
|
|
|
- struct net_device_stats *net_stats = &netdev->stats;
|
|
|
unsigned long flags;
|
|
|
int i;
|
|
|
|
|
@@ -132,36 +132,36 @@ vmxnet3_get_stats(struct net_device *netdev)
|
|
|
VMXNET3_WRITE_BAR1_REG(adapter, VMXNET3_REG_CMD, VMXNET3_CMD_GET_STATS);
|
|
|
spin_unlock_irqrestore(&adapter->cmd_lock, flags);
|
|
|
|
|
|
- memset(net_stats, 0, sizeof(*net_stats));
|
|
|
for (i = 0; i < adapter->num_tx_queues; i++) {
|
|
|
devTxStats = &adapter->tqd_start[i].stats;
|
|
|
drvTxStats = &adapter->tx_queue[i].stats;
|
|
|
- net_stats->tx_packets += devTxStats->ucastPktsTxOK +
|
|
|
- devTxStats->mcastPktsTxOK +
|
|
|
- devTxStats->bcastPktsTxOK;
|
|
|
- net_stats->tx_bytes += devTxStats->ucastBytesTxOK +
|
|
|
- devTxStats->mcastBytesTxOK +
|
|
|
- devTxStats->bcastBytesTxOK;
|
|
|
- net_stats->tx_errors += devTxStats->pktsTxError;
|
|
|
- net_stats->tx_dropped += drvTxStats->drop_total;
|
|
|
+ stats->tx_packets += devTxStats->ucastPktsTxOK +
|
|
|
+ devTxStats->mcastPktsTxOK +
|
|
|
+ devTxStats->bcastPktsTxOK;
|
|
|
+ stats->tx_bytes += devTxStats->ucastBytesTxOK +
|
|
|
+ devTxStats->mcastBytesTxOK +
|
|
|
+ devTxStats->bcastBytesTxOK;
|
|
|
+ stats->tx_errors += devTxStats->pktsTxError;
|
|
|
+ stats->tx_dropped += drvTxStats->drop_total;
|
|
|
}
|
|
|
|
|
|
for (i = 0; i < adapter->num_rx_queues; i++) {
|
|
|
devRxStats = &adapter->rqd_start[i].stats;
|
|
|
drvRxStats = &adapter->rx_queue[i].stats;
|
|
|
- net_stats->rx_packets += devRxStats->ucastPktsRxOK +
|
|
|
- devRxStats->mcastPktsRxOK +
|
|
|
- devRxStats->bcastPktsRxOK;
|
|
|
+ stats->rx_packets += devRxStats->ucastPktsRxOK +
|
|
|
+ devRxStats->mcastPktsRxOK +
|
|
|
+ devRxStats->bcastPktsRxOK;
|
|
|
|
|
|
- net_stats->rx_bytes += devRxStats->ucastBytesRxOK +
|
|
|
- devRxStats->mcastBytesRxOK +
|
|
|
- devRxStats->bcastBytesRxOK;
|
|
|
+ stats->rx_bytes += devRxStats->ucastBytesRxOK +
|
|
|
+ devRxStats->mcastBytesRxOK +
|
|
|
+ devRxStats->bcastBytesRxOK;
|
|
|
|
|
|
- net_stats->rx_errors += devRxStats->pktsRxError;
|
|
|
- net_stats->rx_dropped += drvRxStats->drop_total;
|
|
|
- net_stats->multicast += devRxStats->mcastPktsRxOK;
|
|
|
+ stats->rx_errors += devRxStats->pktsRxError;
|
|
|
+ stats->rx_dropped += drvRxStats->drop_total;
|
|
|
+ stats->multicast += devRxStats->mcastPktsRxOK;
|
|
|
}
|
|
|
- return net_stats;
|
|
|
+
|
|
|
+ return stats;
|
|
|
}
|
|
|
|
|
|
static int
|