|
@@ -96,10 +96,8 @@ static const struct igb_stats igb_gstrings_stats[] = {
|
|
|
};
|
|
|
|
|
|
#define IGB_QUEUE_STATS_LEN \
|
|
|
- ((((((struct igb_adapter *)netdev->priv)->num_rx_queues > 1) ? \
|
|
|
- ((struct igb_adapter *)netdev->priv)->num_rx_queues : 0) + \
|
|
|
- (((((struct igb_adapter *)netdev->priv)->num_tx_queues > 1) ? \
|
|
|
- ((struct igb_adapter *)netdev->priv)->num_tx_queues : 0))) * \
|
|
|
+ ((((struct igb_adapter *)netdev->priv)->num_rx_queues + \
|
|
|
+ ((struct igb_adapter *)netdev->priv)->num_tx_queues) * \
|
|
|
(sizeof(struct igb_queue_stats) / sizeof(u64)))
|
|
|
#define IGB_GLOBAL_STATS_LEN \
|
|
|
sizeof(igb_gstrings_stats) / sizeof(struct igb_stats)
|
|
@@ -1842,6 +1840,13 @@ static void igb_get_ethtool_stats(struct net_device *netdev,
|
|
|
data[i] = (igb_gstrings_stats[i].sizeof_stat ==
|
|
|
sizeof(u64)) ? *(u64 *)p : *(u32 *)p;
|
|
|
}
|
|
|
+ for (j = 0; j < adapter->num_tx_queues; j++) {
|
|
|
+ int k;
|
|
|
+ queue_stat = (u64 *)&adapter->tx_ring[j].tx_stats;
|
|
|
+ for (k = 0; k < stat_count; k++)
|
|
|
+ data[i + k] = queue_stat[k];
|
|
|
+ i += k;
|
|
|
+ }
|
|
|
for (j = 0; j < adapter->num_rx_queues; j++) {
|
|
|
int k;
|
|
|
queue_stat = (u64 *)&adapter->rx_ring[j].rx_stats;
|