RE: [PATCH v6 net-next 15/15] net: dsa: netc: add support for ethtool private statistics
Wei Fang <[email protected]> Mon, 11 May 2026 03:26:04 +0000
| Newsgroups | dev.linux.lists.sashiko,dev.linux.lists.imx,org.kernel.vger.linux-devicetree |
|---|---|
| Message-ID | <DBBPR04MB7500DB07950B62C6DBFDEF5688382@DBBPR04MB7500.eurprd04.prod.outlook.com> |
> commit 66f17e671c095a381aeff77d1d8c0cae1e43722c > Author: Wei Fang <[email protected]> > > net: dsa: netc: add support for ethtool private statistics > > Implement the ethtool private statistics interface to expose additional > port-level and MAC-level counters that are not covered by the standard > IEEE 802.3 statistics. The pMAC counters are only reported when the port > supports Frame Preemption (802.1Qbu/802.3br). > > > diff --git a/drivers/net/dsa/netc/netc_ethtool.c > b/drivers/net/dsa/netc/netc_ethtool.c > > index ac8940b5a85c6..8d04db534347c 100644 > > --- a/drivers/net/dsa/netc/netc_ethtool.c > > +++ b/drivers/net/dsa/netc/netc_ethtool.c > > @@ -19,6 +19,56 @@ static const struct ethtool_rmon_hist_range > netc_rmon_ranges[] = { > > { } > > }; > > > > +static const struct netc_port_stat netc_port_counters[] = { > > + { NETC_PTGSLACR, "port gate late arrival frames" }, > > + { NETC_PSDFTCR, "port SDF transmit frames" }, > > + { NETC_PSDFDDCR, "port SDF drop duplicate frames" }, > > + { NETC_PRXDCR, "port rx discard frames" }, > > + { NETC_PRXDCRRR, "port rx discard read-reset" }, > > + { NETC_PRXDCRR0, "port rx discard reason 0" }, > > + { NETC_PRXDCRR1, "port rx discard reason 1" }, > > + { NETC_PTXDCR, "port tx discard frames" }, > > + { NETC_PTXDCRRR, "port tx discard read-reset" }, > > + { NETC_PTXDCRR0, "port tx discard reason 0" }, > > + { NETC_PTXDCRR1, "port tx discard reason 1" }, > > + { NETC_BPDCR, "bridge port discard frames" }, > > + { NETC_BPDCRRR, "bridge port discard read-reset" }, > > + { NETC_BPDCRR0, "bridge port discard reason 0" }, > > + { NETC_BPDCRR1, "bridge port discard reason 1" }, > > +}; > > + > > +static const struct netc_port_stat netc_emac_counters[] = { > > + { NETC_PM_ROCT(0), "eMAC rx octets" }, > > + { NETC_PM_RVLAN(0), "eMAC rx VLAN frames" }, > > + { NETC_PM_RERR(0), "eMAC rx frame errors" }, > > + { NETC_PM_RUCA(0), "eMAC rx unicast frames" }, > > + { NETC_PM_RDRP(0), "eMAC rx dropped packets" }, > > + { NETC_PM_RPKT(0), "eMAC rx packets" }, > > + { NETC_PM_TOCT(0), "eMAC tx octets" }, > > + { NETC_PM_TVLAN(0), "eMAC tx VLAN frames" }, > > + { NETC_PM_TFCS(0), "eMAC tx FCS errors" }, > > + { NETC_PM_TUCA(0), "eMAC tx unicast frames" }, > > + { NETC_PM_TPKT(0), "eMAC tx packets" }, > > + { NETC_PM_TUND(0), "eMAC tx undersized packets" }, > > + { NETC_PM_TIOCT(0), "eMAC tx invalid octets" }, > > +}; > > + > > +static const struct netc_port_stat netc_pmac_counters[] = { > > + { NETC_PM_ROCT(1), "pMAC rx octets" }, > > + { NETC_PM_RVLAN(1), "pMAC rx VLAN frames" }, > > + { NETC_PM_RERR(1), "pMAC rx frame errors" }, > > + { NETC_PM_RUCA(1), "pMAC rx unicast frames" }, > > + { NETC_PM_RDRP(1), "pMAC rx dropped packets" }, > > + { NETC_PM_RPKT(1), "pMAC rx packets" }, > > + { NETC_PM_TOCT(1), "pMAC tx octets" }, > > + { NETC_PM_TVLAN(1), "pMAC tx VLAN frames" }, > > + { NETC_PM_TFCS(1), "pMAC tx FCS errors" }, > > + { NETC_PM_TUCA(1), "pMAC tx unicast frames" }, > > + { NETC_PM_TPKT(1), "pMAC tx packets" }, > > + { NETC_PM_TUND(1), "pMAC tx undersized packets" }, > > + { NETC_PM_TIOCT(1), "pMAC tx invalid octets" }, > > +}; > > Should these standard MAC statistics be exposed as private ethtool strings? > > Many of the counters defined in netc_emac_counters and netc_pmac_counters, > such as rx octets, rx packets, rx dropped packets, and tx FCS errors, > appear to correspond directly to existing standard uAPIs like > struct rtnl_link_stats64 or struct ethtool_eth_mac_stats. > > Since the driver already implements netc_port_get_eth_mac_stats(), which > supports both eMAC and pMAC sources, could these standard counters be > reported through the standard interfaces instead to avoid duplicating > them in ethtool -S? > For the NETC switch, its ports support preemption, so each port has two MACs (express MAC and preemptive MAC). The driver-private statistics can help users obtain statistics for each MAC, just like the standard statistics of ethtool. However, rtnl_link_stats64 retrieves the combined statistics of the two MACs. In addition, ethtool_eth_mac_stats only has the FCS error counter for RX, not TX. what I added to driver-private was TX's FCS error counter. Please ignore this warning.