|
@@ -1054,6 +1054,12 @@ static void ixgbe_get_ethtool_stats(struct net_device *netdev,
|
|
|
data[i] = 0;
|
|
|
data[i+1] = 0;
|
|
|
i += 2;
|
|
|
+#ifdef LL_EXTENDED_STATS
|
|
|
+ data[i] = 0;
|
|
|
+ data[i+1] = 0;
|
|
|
+ data[i+2] = 0;
|
|
|
+ i += 3;
|
|
|
+#endif
|
|
|
continue;
|
|
|
}
|
|
|
|
|
@@ -1063,6 +1069,12 @@ static void ixgbe_get_ethtool_stats(struct net_device *netdev,
|
|
|
data[i+1] = ring->stats.bytes;
|
|
|
} while (u64_stats_fetch_retry_bh(&ring->syncp, start));
|
|
|
i += 2;
|
|
|
+#ifdef LL_EXTENDED_STATS
|
|
|
+ data[i] = ring->stats.yields;
|
|
|
+ data[i+1] = ring->stats.misses;
|
|
|
+ data[i+2] = ring->stats.cleaned;
|
|
|
+ i += 3;
|
|
|
+#endif
|
|
|
}
|
|
|
for (j = 0; j < IXGBE_NUM_RX_QUEUES; j++) {
|
|
|
ring = adapter->rx_ring[j];
|
|
@@ -1070,6 +1082,12 @@ static void ixgbe_get_ethtool_stats(struct net_device *netdev,
|
|
|
data[i] = 0;
|
|
|
data[i+1] = 0;
|
|
|
i += 2;
|
|
|
+#ifdef LL_EXTENDED_STATS
|
|
|
+ data[i] = 0;
|
|
|
+ data[i+1] = 0;
|
|
|
+ data[i+2] = 0;
|
|
|
+ i += 3;
|
|
|
+#endif
|
|
|
continue;
|
|
|
}
|
|
|
|
|
@@ -1079,6 +1097,12 @@ static void ixgbe_get_ethtool_stats(struct net_device *netdev,
|
|
|
data[i+1] = ring->stats.bytes;
|
|
|
} while (u64_stats_fetch_retry_bh(&ring->syncp, start));
|
|
|
i += 2;
|
|
|
+#ifdef LL_EXTENDED_STATS
|
|
|
+ data[i] = ring->stats.yields;
|
|
|
+ data[i+1] = ring->stats.misses;
|
|
|
+ data[i+2] = ring->stats.cleaned;
|
|
|
+ i += 3;
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
for (j = 0; j < IXGBE_MAX_PACKET_BUFFERS; j++) {
|
|
@@ -1115,12 +1139,28 @@ static void ixgbe_get_strings(struct net_device *netdev, u32 stringset,
|
|
|
p += ETH_GSTRING_LEN;
|
|
|
sprintf(p, "tx_queue_%u_bytes", i);
|
|
|
p += ETH_GSTRING_LEN;
|
|
|
+#ifdef LL_EXTENDED_STATS
|
|
|
+ sprintf(p, "tx_q_%u_napi_yield", i);
|
|
|
+ p += ETH_GSTRING_LEN;
|
|
|
+ sprintf(p, "tx_q_%u_misses", i);
|
|
|
+ p += ETH_GSTRING_LEN;
|
|
|
+ sprintf(p, "tx_q_%u_cleaned", i);
|
|
|
+ p += ETH_GSTRING_LEN;
|
|
|
+#endif /* LL_EXTENDED_STATS */
|
|
|
}
|
|
|
for (i = 0; i < IXGBE_NUM_RX_QUEUES; i++) {
|
|
|
sprintf(p, "rx_queue_%u_packets", i);
|
|
|
p += ETH_GSTRING_LEN;
|
|
|
sprintf(p, "rx_queue_%u_bytes", i);
|
|
|
p += ETH_GSTRING_LEN;
|
|
|
+#ifdef LL_EXTENDED_STATS
|
|
|
+ sprintf(p, "rx_q_%u_ll_poll_yield", i);
|
|
|
+ p += ETH_GSTRING_LEN;
|
|
|
+ sprintf(p, "rx_q_%u_misses", i);
|
|
|
+ p += ETH_GSTRING_LEN;
|
|
|
+ sprintf(p, "rx_q_%u_cleaned", i);
|
|
|
+ p += ETH_GSTRING_LEN;
|
|
|
+#endif /* LL_EXTENDED_STATS */
|
|
|
}
|
|
|
for (i = 0; i < IXGBE_MAX_PACKET_BUFFERS; i++) {
|
|
|
sprintf(p, "tx_pb_%u_pxon", i);
|