|
@@ -1533,9 +1533,10 @@ static const struct efx_hw_stat_desc efx_ef10_stat_desc[EF10_STAT_COUNT] = {
|
|
|
(1ULL << GENERIC_STAT_rx_nodesc_trunc) | \
|
|
|
(1ULL << GENERIC_STAT_rx_noskb_drops))
|
|
|
|
|
|
-/* These statistics are only provided by the 10G MAC. For a 10G/40G
|
|
|
- * switchable port we do not expose these because they might not
|
|
|
- * include all the packets they should.
|
|
|
+/* On 7000 series NICs, these statistics are only provided by the 10G MAC.
|
|
|
+ * For a 10G/40G switchable port we do not expose these because they might
|
|
|
+ * not include all the packets they should.
|
|
|
+ * On 8000 series NICs these statistics are always provided.
|
|
|
*/
|
|
|
#define HUNT_10G_ONLY_STAT_MASK ((1ULL << EF10_STAT_port_tx_control) | \
|
|
|
(1ULL << EF10_STAT_port_tx_lt64) | \
|
|
@@ -1581,10 +1582,15 @@ static u64 efx_ef10_raw_stat_mask(struct efx_nic *efx)
|
|
|
1 << MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_LINKCTRL))
|
|
|
return 0;
|
|
|
|
|
|
- if (port_caps & (1 << MC_CMD_PHY_CAP_40000FDX_LBN))
|
|
|
+ if (port_caps & (1 << MC_CMD_PHY_CAP_40000FDX_LBN)) {
|
|
|
raw_mask |= HUNT_40G_EXTRA_STAT_MASK;
|
|
|
- else
|
|
|
+ /* 8000 series have everything even at 40G */
|
|
|
+ if (nic_data->datapath_caps2 &
|
|
|
+ (1 << MC_CMD_GET_CAPABILITIES_V2_OUT_MAC_STATS_40G_TX_SIZE_BINS_LBN))
|
|
|
+ raw_mask |= HUNT_10G_ONLY_STAT_MASK;
|
|
|
+ } else {
|
|
|
raw_mask |= HUNT_10G_ONLY_STAT_MASK;
|
|
|
+ }
|
|
|
|
|
|
if (nic_data->datapath_caps &
|
|
|
(1 << MC_CMD_GET_CAPABILITIES_OUT_PM_AND_RXDP_COUNTERS_LBN))
|