Skip to content

Commit 00eb887

Browse files
vladimirolteankuba-moo
authored andcommitted
net: dsa: sja1105: fix displaced ethtool statistics counters
Port counters with no name (aka sja1105_port_counters[__SJA1105_COUNTER_UNUSED]) are skipped when reporting sja1105_get_sset_count(), but are not skipped during sja1105_get_strings() and sja1105_get_ethtool_stats(). As a consequence, the first reported counter has an empty name and a bogus value (reads from area 0, aka MAC, from offset 0, bits start:end 0:0). Also, the last counter (N_NOT_REACH on E/T, N_RX_BCAST on P/Q/R/S) gets pushed out of the statistics counters that get shown. Skip __SJA1105_COUNTER_UNUSED consistently, so that the bogus counter with an empty name disappears, and in its place appears a valid counter. Fixes: 039b167 ("net: dsa: sja1105: don't use burst SPI reads for port statistics") Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/20250318115716.2124395-2-vladimir.oltean@nxp.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 4af9939 commit 00eb887

1 file changed

Lines changed: 8 additions & 1 deletion

File tree

drivers/net/dsa/sja1105/sja1105_ethtool.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,6 +571,9 @@ void sja1105_get_ethtool_stats(struct dsa_switch *ds, int port, u64 *data)
571571
max_ctr = __MAX_SJA1105PQRS_PORT_COUNTER;
572572

573573
for (i = 0; i < max_ctr; i++) {
574+
if (!strlen(sja1105_port_counters[i].name))
575+
continue;
576+
574577
rc = sja1105_port_counter_read(priv, port, i, &data[k++]);
575578
if (rc) {
576579
dev_err(ds->dev,
@@ -596,8 +599,12 @@ void sja1105_get_strings(struct dsa_switch *ds, int port,
596599
else
597600
max_ctr = __MAX_SJA1105PQRS_PORT_COUNTER;
598601

599-
for (i = 0; i < max_ctr; i++)
602+
for (i = 0; i < max_ctr; i++) {
603+
if (!strlen(sja1105_port_counters[i].name))
604+
continue;
605+
600606
ethtool_puts(&data, sja1105_port_counters[i].name);
607+
}
601608
}
602609

603610
int sja1105_get_sset_count(struct dsa_switch *ds, int port, int sset)

0 commit comments

Comments
 (0)