net: enetc: parameterize port MAC stats to also cover the pMAC
authorVladimir Oltean <vladimir.oltean@nxp.com>
Fri, 9 Sep 2022 11:37:59 +0000 (14:37 +0300)
committerJakub Kicinski <kuba@kernel.org>
Tue, 20 Sep 2022 00:58:25 +0000 (17:58 -0700)
The ENETC has counters for the eMAC and for the pMAC exactly 0x1000
apart from each other. The driver only contains definitions for PM0,
the eMAC.

Rather than duplicating everything for PM1, modify the register
definitions such that they take the MAC as argument.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Claudiu Manoil <claudiu.manoil@nxp.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/freescale/enetc/enetc_ethtool.c
drivers/net/ethernet/freescale/enetc/enetc_hw.h

index dec721e..b07139c 100644 (file)
@@ -125,68 +125,68 @@ static const struct {
        int reg;
        char name[ETH_GSTRING_LEN];
 } enetc_port_counters[] = {
-       { ENETC_PM0_REOCT,  "MAC rx ethernet octets" },
-       { ENETC_PM0_RALN,   "MAC rx alignment errors" },
-       { ENETC_PM0_RXPF,   "MAC rx valid pause frames" },
-       { ENETC_PM0_RFRM,   "MAC rx valid frames" },
-       { ENETC_PM0_RFCS,   "MAC rx fcs errors" },
-       { ENETC_PM0_RVLAN,  "MAC rx VLAN frames" },
-       { ENETC_PM0_RERR,   "MAC rx frame errors" },
-       { ENETC_PM0_RUCA,   "MAC rx unicast frames" },
-       { ENETC_PM0_RMCA,   "MAC rx multicast frames" },
-       { ENETC_PM0_RBCA,   "MAC rx broadcast frames" },
-       { ENETC_PM0_RDRP,   "MAC rx dropped packets" },
-       { ENETC_PM0_RPKT,   "MAC rx packets" },
-       { ENETC_PM0_RUND,   "MAC rx undersized packets" },
-       { ENETC_PM0_R64,    "MAC rx 64 byte packets" },
-       { ENETC_PM0_R127,   "MAC rx 65-127 byte packets" },
-       { ENETC_PM0_R255,   "MAC rx 128-255 byte packets" },
-       { ENETC_PM0_R511,   "MAC rx 256-511 byte packets" },
-       { ENETC_PM0_R1023,  "MAC rx 512-1023 byte packets" },
-       { ENETC_PM0_R1522,  "MAC rx 1024-1522 byte packets" },
-       { ENETC_PM0_R1523X, "MAC rx 1523 to max-octet packets" },
-       { ENETC_PM0_ROVR,   "MAC rx oversized packets" },
-       { ENETC_PM0_RJBR,   "MAC rx jabber packets" },
-       { ENETC_PM0_RFRG,   "MAC rx fragment packets" },
-       { ENETC_PM0_RCNP,   "MAC rx control packets" },
-       { ENETC_PM0_RDRNTP, "MAC rx fifo drop" },
-       { ENETC_PM0_TEOCT,  "MAC tx ethernet octets" },
-       { ENETC_PM0_TOCT,   "MAC tx octets" },
-       { ENETC_PM0_TCRSE,  "MAC tx carrier sense errors" },
-       { ENETC_PM0_TXPF,   "MAC tx valid pause frames" },
-       { ENETC_PM0_TFRM,   "MAC tx frames" },
-       { ENETC_PM0_TFCS,   "MAC tx fcs errors" },
-       { ENETC_PM0_TVLAN,  "MAC tx VLAN frames" },
-       { ENETC_PM0_TERR,   "MAC tx frame errors" },
-       { ENETC_PM0_TUCA,   "MAC tx unicast frames" },
-       { ENETC_PM0_TMCA,   "MAC tx multicast frames" },
-       { ENETC_PM0_TBCA,   "MAC tx broadcast frames" },
-       { ENETC_PM0_TPKT,   "MAC tx packets" },
-       { ENETC_PM0_TUND,   "MAC tx undersized packets" },
-       { ENETC_PM0_T64,    "MAC tx 64 byte packets" },
-       { ENETC_PM0_T127,   "MAC tx 65-127 byte packets" },
-       { ENETC_PM0_T255,   "MAC tx 128-255 byte packets" },
-       { ENETC_PM0_T511,   "MAC tx 256-511 byte packets" },
-       { ENETC_PM0_T1023,  "MAC tx 512-1023 byte packets" },
-       { ENETC_PM0_T1522,  "MAC tx 1024-1522 byte packets" },
-       { ENETC_PM0_T1523X, "MAC tx 1523 to max-octet packets" },
-       { ENETC_PM0_TCNP,   "MAC tx control packets" },
-       { ENETC_PM0_TDFR,   "MAC tx deferred packets" },
-       { ENETC_PM0_TMCOL,  "MAC tx multiple collisions" },
-       { ENETC_PM0_TSCOL,  "MAC tx single collisions" },
-       { ENETC_PM0_TLCOL,  "MAC tx late collisions" },
-       { ENETC_PM0_TECOL,  "MAC tx excessive collisions" },
-       { ENETC_UFDMF,      "SI MAC nomatch u-cast discards" },
-       { ENETC_MFDMF,      "SI MAC nomatch m-cast discards" },
-       { ENETC_PBFDSIR,    "SI MAC nomatch b-cast discards" },
-       { ENETC_PUFDVFR,    "SI VLAN nomatch u-cast discards" },
-       { ENETC_PMFDVFR,    "SI VLAN nomatch m-cast discards" },
-       { ENETC_PBFDVFR,    "SI VLAN nomatch b-cast discards" },
-       { ENETC_PFDMSAPR,   "SI pruning discarded frames" },
-       { ENETC_PICDR(0),   "ICM DR0 discarded frames" },
-       { ENETC_PICDR(1),   "ICM DR1 discarded frames" },
-       { ENETC_PICDR(2),   "ICM DR2 discarded frames" },
-       { ENETC_PICDR(3),   "ICM DR3 discarded frames" },
+       { ENETC_PM_REOCT(0),    "MAC rx ethernet octets" },
+       { ENETC_PM_RALN(0),     "MAC rx alignment errors" },
+       { ENETC_PM_RXPF(0),     "MAC rx valid pause frames" },
+       { ENETC_PM_RFRM(0),     "MAC rx valid frames" },
+       { ENETC_PM_RFCS(0),     "MAC rx fcs errors" },
+       { ENETC_PM_RVLAN(0),    "MAC rx VLAN frames" },
+       { ENETC_PM_RERR(0),     "MAC rx frame errors" },
+       { ENETC_PM_RUCA(0),     "MAC rx unicast frames" },
+       { ENETC_PM_RMCA(0),     "MAC rx multicast frames" },
+       { ENETC_PM_RBCA(0),     "MAC rx broadcast frames" },
+       { ENETC_PM_RDRP(0),     "MAC rx dropped packets" },
+       { ENETC_PM_RPKT(0),     "MAC rx packets" },
+       { ENETC_PM_RUND(0),     "MAC rx undersized packets" },
+       { ENETC_PM_R64(0),      "MAC rx 64 byte packets" },
+       { ENETC_PM_R127(0),     "MAC rx 65-127 byte packets" },
+       { ENETC_PM_R255(0),     "MAC rx 128-255 byte packets" },
+       { ENETC_PM_R511(0),     "MAC rx 256-511 byte packets" },
+       { ENETC_PM_R1023(0),    "MAC rx 512-1023 byte packets" },
+       { ENETC_PM_R1522(0),    "MAC rx 1024-1522 byte packets" },
+       { ENETC_PM_R1523X(0),   "MAC rx 1523 to max-octet packets" },
+       { ENETC_PM_ROVR(0),     "MAC rx oversized packets" },
+       { ENETC_PM_RJBR(0),     "MAC rx jabber packets" },
+       { ENETC_PM_RFRG(0),     "MAC rx fragment packets" },
+       { ENETC_PM_RCNP(0),     "MAC rx control packets" },
+       { ENETC_PM_RDRNTP(0),   "MAC rx fifo drop" },
+       { ENETC_PM_TEOCT(0),    "MAC tx ethernet octets" },
+       { ENETC_PM_TOCT(0),     "MAC tx octets" },
+       { ENETC_PM_TCRSE(0),    "MAC tx carrier sense errors" },
+       { ENETC_PM_TXPF(0),     "MAC tx valid pause frames" },
+       { ENETC_PM_TFRM(0),     "MAC tx frames" },
+       { ENETC_PM_TFCS(0),     "MAC tx fcs errors" },
+       { ENETC_PM_TVLAN(0),    "MAC tx VLAN frames" },
+       { ENETC_PM_TERR(0),     "MAC tx frame errors" },
+       { ENETC_PM_TUCA(0),     "MAC tx unicast frames" },
+       { ENETC_PM_TMCA(0),     "MAC tx multicast frames" },
+       { ENETC_PM_TBCA(0),     "MAC tx broadcast frames" },
+       { ENETC_PM_TPKT(0),     "MAC tx packets" },
+       { ENETC_PM_TUND(0),     "MAC tx undersized packets" },
+       { ENETC_PM_T64(0),      "MAC tx 64 byte packets" },
+       { ENETC_PM_T127(0),     "MAC tx 65-127 byte packets" },
+       { ENETC_PM_T255(0),     "MAC tx 128-255 byte packets" },
+       { ENETC_PM_T511(0),     "MAC tx 256-511 byte packets" },
+       { ENETC_PM_T1023(0),    "MAC tx 512-1023 byte packets" },
+       { ENETC_PM_T1522(0),    "MAC tx 1024-1522 byte packets" },
+       { ENETC_PM_T1523X(0),   "MAC tx 1523 to max-octet packets" },
+       { ENETC_PM_TCNP(0),     "MAC tx control packets" },
+       { ENETC_PM_TDFR(0),     "MAC tx deferred packets" },
+       { ENETC_PM_TMCOL(0),    "MAC tx multiple collisions" },
+       { ENETC_PM_TSCOL(0),    "MAC tx single collisions" },
+       { ENETC_PM_TLCOL(0),    "MAC tx late collisions" },
+       { ENETC_PM_TECOL(0),    "MAC tx excessive collisions" },
+       { ENETC_UFDMF,          "SI MAC nomatch u-cast discards" },
+       { ENETC_MFDMF,          "SI MAC nomatch m-cast discards" },
+       { ENETC_PBFDSIR,        "SI MAC nomatch b-cast discards" },
+       { ENETC_PUFDVFR,        "SI VLAN nomatch u-cast discards" },
+       { ENETC_PMFDVFR,        "SI VLAN nomatch m-cast discards" },
+       { ENETC_PBFDVFR,        "SI VLAN nomatch b-cast discards" },
+       { ENETC_PFDMSAPR,       "SI pruning discarded frames" },
+       { ENETC_PICDR(0),       "ICM DR0 discarded frames" },
+       { ENETC_PICDR(1),       "ICM DR1 discarded frames" },
+       { ENETC_PICDR(2),       "ICM DR2 discarded frames" },
+       { ENETC_PICDR(3),       "ICM DR3 discarded frames" },
 };
 
 static const char rx_ring_stats[][ETH_GSTRING_LEN] = {
index 647c87f..0b85e37 100644 (file)
@@ -276,58 +276,60 @@ enum enetc_bdr_type {TX, RX};
 #define ENETC_PFMCAPR          0x1b38
 #define ENETC_PFMCAPR_MSK      GENMASK(15, 0)
 
-/* MAC counters */
-#define ENETC_PM0_REOCT                0x8100
-#define ENETC_PM0_RALN         0x8110
-#define ENETC_PM0_RXPF         0x8118
-#define ENETC_PM0_RFRM         0x8120
-#define ENETC_PM0_RFCS         0x8128
-#define ENETC_PM0_RVLAN                0x8130
-#define ENETC_PM0_RERR         0x8138
-#define ENETC_PM0_RUCA         0x8140
-#define ENETC_PM0_RMCA         0x8148
-#define ENETC_PM0_RBCA         0x8150
-#define ENETC_PM0_RDRP         0x8158
-#define ENETC_PM0_RPKT         0x8160
-#define ENETC_PM0_RUND         0x8168
-#define ENETC_PM0_R64          0x8170
-#define ENETC_PM0_R127         0x8178
-#define ENETC_PM0_R255         0x8180
-#define ENETC_PM0_R511         0x8188
-#define ENETC_PM0_R1023                0x8190
-#define ENETC_PM0_R1522                0x8198
-#define ENETC_PM0_R1523X       0x81A0
-#define ENETC_PM0_ROVR         0x81A8
-#define ENETC_PM0_RJBR         0x81B0
-#define ENETC_PM0_RFRG         0x81B8
-#define ENETC_PM0_RCNP         0x81C0
-#define ENETC_PM0_RDRNTP       0x81C8
-#define ENETC_PM0_TEOCT                0x8200
-#define ENETC_PM0_TOCT         0x8208
-#define ENETC_PM0_TCRSE                0x8210
-#define ENETC_PM0_TXPF         0x8218
-#define ENETC_PM0_TFRM         0x8220
-#define ENETC_PM0_TFCS         0x8228
-#define ENETC_PM0_TVLAN                0x8230
-#define ENETC_PM0_TERR         0x8238
-#define ENETC_PM0_TUCA         0x8240
-#define ENETC_PM0_TMCA         0x8248
-#define ENETC_PM0_TBCA         0x8250
-#define ENETC_PM0_TPKT         0x8260
-#define ENETC_PM0_TUND         0x8268
-#define ENETC_PM0_T64          0x8270
-#define ENETC_PM0_T127         0x8278
-#define ENETC_PM0_T255         0x8280
-#define ENETC_PM0_T511         0x8288
-#define ENETC_PM0_T1023                0x8290
-#define ENETC_PM0_T1522                0x8298
-#define ENETC_PM0_T1523X       0x82A0
-#define ENETC_PM0_TCNP         0x82C0
-#define ENETC_PM0_TDFR         0x82D0
-#define ENETC_PM0_TMCOL                0x82D8
-#define ENETC_PM0_TSCOL                0x82E0
-#define ENETC_PM0_TLCOL                0x82E8
-#define ENETC_PM0_TECOL                0x82F0
+/* Port MAC counters: Port MAC 0 corresponds to the eMAC and
+ * Port MAC 1 to the pMAC.
+ */
+#define ENETC_PM_REOCT(mac)    (0x8100 + 0x1000 * (mac))
+#define ENETC_PM_RALN(mac)     (0x8110 + 0x1000 * (mac))
+#define ENETC_PM_RXPF(mac)     (0x8118 + 0x1000 * (mac))
+#define ENETC_PM_RFRM(mac)     (0x8120 + 0x1000 * (mac))
+#define ENETC_PM_RFCS(mac)     (0x8128 + 0x1000 * (mac))
+#define ENETC_PM_RVLAN(mac)    (0x8130 + 0x1000 * (mac))
+#define ENETC_PM_RERR(mac)     (0x8138 + 0x1000 * (mac))
+#define ENETC_PM_RUCA(mac)     (0x8140 + 0x1000 * (mac))
+#define ENETC_PM_RMCA(mac)     (0x8148 + 0x1000 * (mac))
+#define ENETC_PM_RBCA(mac)     (0x8150 + 0x1000 * (mac))
+#define ENETC_PM_RDRP(mac)     (0x8158 + 0x1000 * (mac))
+#define ENETC_PM_RPKT(mac)     (0x8160 + 0x1000 * (mac))
+#define ENETC_PM_RUND(mac)     (0x8168 + 0x1000 * (mac))
+#define ENETC_PM_R64(mac)      (0x8170 + 0x1000 * (mac))
+#define ENETC_PM_R127(mac)     (0x8178 + 0x1000 * (mac))
+#define ENETC_PM_R255(mac)     (0x8180 + 0x1000 * (mac))
+#define ENETC_PM_R511(mac)     (0x8188 + 0x1000 * (mac))
+#define ENETC_PM_R1023(mac)    (0x8190 + 0x1000 * (mac))
+#define ENETC_PM_R1522(mac)    (0x8198 + 0x1000 * (mac))
+#define ENETC_PM_R1523X(mac)   (0x81A0 + 0x1000 * (mac))
+#define ENETC_PM_ROVR(mac)     (0x81A8 + 0x1000 * (mac))
+#define ENETC_PM_RJBR(mac)     (0x81B0 + 0x1000 * (mac))
+#define ENETC_PM_RFRG(mac)     (0x81B8 + 0x1000 * (mac))
+#define ENETC_PM_RCNP(mac)     (0x81C0 + 0x1000 * (mac))
+#define ENETC_PM_RDRNTP(mac)   (0x81C8 + 0x1000 * (mac))
+#define ENETC_PM_TEOCT(mac)    (0x8200 + 0x1000 * (mac))
+#define ENETC_PM_TOCT(mac)     (0x8208 + 0x1000 * (mac))
+#define ENETC_PM_TCRSE(mac)    (0x8210 + 0x1000 * (mac))
+#define ENETC_PM_TXPF(mac)     (0x8218 + 0x1000 * (mac))
+#define ENETC_PM_TFRM(mac)     (0x8220 + 0x1000 * (mac))
+#define ENETC_PM_TFCS(mac)     (0x8228 + 0x1000 * (mac))
+#define ENETC_PM_TVLAN(mac)    (0x8230 + 0x1000 * (mac))
+#define ENETC_PM_TERR(mac)     (0x8238 + 0x1000 * (mac))
+#define ENETC_PM_TUCA(mac)     (0x8240 + 0x1000 * (mac))
+#define ENETC_PM_TMCA(mac)     (0x8248 + 0x1000 * (mac))
+#define ENETC_PM_TBCA(mac)     (0x8250 + 0x1000 * (mac))
+#define ENETC_PM_TPKT(mac)     (0x8260 + 0x1000 * (mac))
+#define ENETC_PM_TUND(mac)     (0x8268 + 0x1000 * (mac))
+#define ENETC_PM_T64(mac)      (0x8270 + 0x1000 * (mac))
+#define ENETC_PM_T127(mac)     (0x8278 + 0x1000 * (mac))
+#define ENETC_PM_T255(mac)     (0x8280 + 0x1000 * (mac))
+#define ENETC_PM_T511(mac)     (0x8288 + 0x1000 * (mac))
+#define ENETC_PM_T1023(mac)    (0x8290 + 0x1000 * (mac))
+#define ENETC_PM_T1522(mac)    (0x8298 + 0x1000 * (mac))
+#define ENETC_PM_T1523X(mac)   (0x82A0 + 0x1000 * (mac))
+#define ENETC_PM_TCNP(mac)     (0x82C0 + 0x1000 * (mac))
+#define ENETC_PM_TDFR(mac)     (0x82D0 + 0x1000 * (mac))
+#define ENETC_PM_TMCOL(mac)    (0x82D8 + 0x1000 * (mac))
+#define ENETC_PM_TSCOL(mac)    (0x82E0 + 0x1000 * (mac))
+#define ENETC_PM_TLCOL(mac)    (0x82E8 + 0x1000 * (mac))
+#define ENETC_PM_TECOL(mac)    (0x82F0 + 0x1000 * (mac))
 
 /* Port counters */
 #define ENETC_PICDR(n)         (0x0700 + (n) * 8) /* n = [0..3] */