From: Jerry Ray <jerry.ray@microchip.com>
To: Andrew Lunn <andrew@lunn.ch>,
Florian Fainelli <f.fainelli@gmail.com>,
Vladimir Oltean <olteanv@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>, <netdev@vger.kernel.org>,
<linux-kernel@vger.kernel.org>,
Jerry Ray <jerry.ray@microchip.com>
Subject: [net-next][PATCH v2 2/2] dsa: lan9303: Add 2 ethtool stats
Date: Tue, 15 Nov 2022 10:51:31 -0600 [thread overview]
Message-ID: <20221115165131.11467-2-jerry.ray@microchip.com> (raw)
In-Reply-To: <20221115165131.11467-1-jerry.ray@microchip.com>
Adding RxDropped and TxDropped counters to the reported statistics.
As these stats are kept by the switch rather than the port instance,
they are indexed differently.
Signed-off-by: Jerry Ray <jerry.ray@microchip.com>
---
v1->v2:
Split patch into 2 pieces.
Removed the adding of a module number to the driver.
---
drivers/net/dsa/lan9303-core.c | 38 ++++++++++++++++++++++++++++------
1 file changed, 32 insertions(+), 6 deletions(-)
diff --git a/drivers/net/dsa/lan9303-core.c b/drivers/net/dsa/lan9303-core.c
index 80f07bd20593..714a21d7aa0a 100644
--- a/drivers/net/dsa/lan9303-core.c
+++ b/drivers/net/dsa/lan9303-core.c
@@ -177,10 +177,12 @@
#define LAN9303_SWE_INGRESS_PORT_TYPE 0x1847
#define LAN9303_SWE_INGRESS_PORT_TYPE_VLAN 3
#define LAN9303_BM_CFG 0x1c00
+#define LAN9303_BM_DRP_CNT_SRC_0 0x1c05
#define LAN9303_BM_EGRSS_PORT_TYPE 0x1c0c
# define LAN9303_BM_EGRSS_PORT_TYPE_SPECIAL_TAG_PORT2 (BIT(17) | BIT(16))
# define LAN9303_BM_EGRSS_PORT_TYPE_SPECIAL_TAG_PORT1 (BIT(9) | BIT(8))
# define LAN9303_BM_EGRSS_PORT_TYPE_SPECIAL_TAG_PORT0 (BIT(1) | BIT(0))
+#define LAN9303_BM_RATE_DRP_CNT_SRC_0 0x1c16
#define LAN9303_SWITCH_PORT_REG(port, reg0) (0x400 * (port) + (reg0))
@@ -978,10 +980,16 @@ static const struct lan9303_mib_desc lan9303_mib[] = {
{ .offset = LAN9303_MAC_TX_LATECOL_0, .name = "TxLateCol", },
};
+/* Buffer Management Statistics (indexed by port) */
+static const struct lan9303_mib_desc lan9303_switch_mib[] = {
+ { .offset = LAN9303_BM_RATE_DRP_CNT_SRC_0, .name = "RxDropped", },
+ { .offset = LAN9303_BM_DRP_CNT_SRC_0, .name = "TxDropped", },
+};
+
static void lan9303_get_strings(struct dsa_switch *ds, int port,
u32 stringset, uint8_t *data)
{
- unsigned int u;
+ unsigned int i, u;
if (stringset != ETH_SS_STATS)
return;
@@ -990,26 +998,44 @@ static void lan9303_get_strings(struct dsa_switch *ds, int port,
strncpy(data + u * ETH_GSTRING_LEN, lan9303_mib[u].name,
ETH_GSTRING_LEN);
}
+ for (i = 0; i < ARRAY_SIZE(lan9303_switch_mib); i++) {
+ strncpy(data + (u + i) * ETH_GSTRING_LEN,
+ lan9303_switch_mib[i].name, ETH_GSTRING_LEN);
+ }
}
static void lan9303_get_ethtool_stats(struct dsa_switch *ds, int port,
uint64_t *data)
{
struct lan9303 *chip = ds->priv;
- unsigned int u;
+ unsigned int i, u;
for (u = 0; u < ARRAY_SIZE(lan9303_mib); u++) {
u32 reg;
int ret;
- ret = lan9303_read_switch_port(
- chip, port, lan9303_mib[u].offset, ®);
-
+ /* Read Port-based MIB stats. */
+ ret = lan9303_read_switch_port(chip, port,
+ lan9303_mib[u].offset,
+ ®);
if (ret)
dev_warn(chip->dev, "Reading status port %d reg %u failed\n",
port, lan9303_mib[u].offset);
data[u] = reg;
}
+ for (i = 0; i < ARRAY_SIZE(lan9303_switch_mib); i++) {
+ u32 reg;
+ int ret;
+
+ /* Read Switch stats indexed by port. */
+ ret = lan9303_read_switch_reg(chip,
+ (lan9303_switch_mib[i].offset +
+ port), ®);
+ if (ret)
+ dev_warn(chip->dev, "Reading status port %d reg %u failed\n",
+ port, lan9303_switch_mib[i].offset);
+ data[i + u] = reg;
+ }
}
static int lan9303_get_sset_count(struct dsa_switch *ds, int port, int sset)
@@ -1017,7 +1043,7 @@ static int lan9303_get_sset_count(struct dsa_switch *ds, int port, int sset)
if (sset != ETH_SS_STATS)
return 0;
- return ARRAY_SIZE(lan9303_mib);
+ return ARRAY_SIZE(lan9303_mib) + ARRAY_SIZE(lan9303_switch_mib);
}
static int lan9303_phy_read(struct dsa_switch *ds, int phy, int regnum)
--
2.17.1
next prev parent reply other threads:[~2022-11-15 16:52 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-15 16:51 [net-next][PATCH v2 1/2] dsa: lan9303: Change stat name Jerry Ray
2022-11-15 16:51 ` Jerry Ray [this message]
2022-11-15 17:36 ` [net-next][PATCH v2 2/2] dsa: lan9303: Add 2 ethtool stats Andrew Lunn
2022-11-16 17:00 ` Jakub Kicinski
2022-11-15 17:30 ` [net-next][PATCH v2 1/2] dsa: lan9303: Change stat name Andrew Lunn
2022-11-16 17:08 ` Florian Fainelli
2022-11-16 17:31 ` Jakub Kicinski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221115165131.11467-2-jerry.ray@microchip.com \
--to=jerry.ray@microchip.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.