* [PATCH net-next v2 0/2] net: dsa: yt921x: Fix parsing MIB attributes
@ 2025-11-26 8:40 David Yang
2025-11-26 8:40 ` [PATCH net-next v2 1/2] " David Yang
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: David Yang @ 2025-11-26 8:40 UTC (permalink / raw)
To: netdev
Cc: David Yang, Andrew Lunn, Vladimir Oltean, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, linux-kernel
v1: https://lore.kernel.org/r/20251118091237.2208994-1-mmyangfl@gmail.com
- reword commit message and add a fixes tag
- add #defines for each MIB location
David Yang (2):
net: dsa: yt921x: Fix parsing MIB attributes
net: dsa: yt921x: Use macros for MIB locations
drivers/net/dsa/yt921x.c | 105 +++++++++++++++++++--------------------
drivers/net/dsa/yt921x.h | 54 ++++++++++++++++++++
2 files changed, 104 insertions(+), 55 deletions(-)
--
2.51.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH net-next v2 1/2] net: dsa: yt921x: Fix parsing MIB attributes
2025-11-26 8:40 [PATCH net-next v2 0/2] net: dsa: yt921x: Fix parsing MIB attributes David Yang
@ 2025-11-26 8:40 ` David Yang
2025-11-26 8:40 ` [PATCH net-next v2 2/2] net: dsa: yt921x: Use macros for MIB locations David Yang
2025-11-28 2:20 ` [PATCH net-next v2 0/2] net: dsa: yt921x: Fix parsing MIB attributes patchwork-bot+netdevbpf
2 siblings, 0 replies; 4+ messages in thread
From: David Yang @ 2025-11-26 8:40 UTC (permalink / raw)
To: netdev
Cc: David Yang, Andrew Lunn, Vladimir Oltean, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, linux-kernel
There are hard-to-find unused fields in the MIB table I didn't notice in
the example driver code, causing wrong interpretation of the MIB data.
For some 64-bit attributes, the current (wrong) implementation took the
correct lower 32 bits, but messed up the upper 32 bits, so it would work
accidentally until 32-bit overflows happen. Fix that too.
Fixes: 186623f4aa72 ("net: dsa: yt921x: Add support for Motorcomm YT921x")
Signed-off-by: David Yang <mmyangfl@gmail.com>
---
drivers/net/dsa/yt921x.c | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/drivers/net/dsa/yt921x.c b/drivers/net/dsa/yt921x.c
index 944988e29127..97fc6085f4d0 100644
--- a/drivers/net/dsa/yt921x.c
+++ b/drivers/net/dsa/yt921x.c
@@ -56,13 +56,13 @@ static const struct yt921x_mib_desc yt921x_mib_descs[] = {
MIB_DESC(1, 0x30, NULL), /* RxPktSz1024To1518 */
MIB_DESC(1, 0x34, NULL), /* RxPktSz1519ToMax */
- MIB_DESC(2, 0x38, NULL), /* RxGoodBytes */
- /* 0x3c */
+ /* 0x38 unused */
+ MIB_DESC(2, 0x3c, NULL), /* RxGoodBytes */
- MIB_DESC(2, 0x40, "RxBadBytes"),
- /* 0x44 */
- MIB_DESC(2, 0x48, NULL), /* RxOverSzErr */
- /* 0x4c */
+ /* 0x40 */
+ MIB_DESC(2, 0x44, "RxBadBytes"),
+ /* 0x48 */
+ MIB_DESC(1, 0x4c, NULL), /* RxOverSzErr */
MIB_DESC(1, 0x50, NULL), /* RxDropped */
MIB_DESC(1, 0x54, NULL), /* TxBroadcast */
@@ -79,10 +79,10 @@ static const struct yt921x_mib_desc yt921x_mib_descs[] = {
MIB_DESC(1, 0x78, NULL), /* TxPktSz1024To1518 */
MIB_DESC(1, 0x7c, NULL), /* TxPktSz1519ToMax */
- MIB_DESC(2, 0x80, NULL), /* TxGoodBytes */
- /* 0x84 */
- MIB_DESC(2, 0x88, NULL), /* TxCollision */
- /* 0x8c */
+ /* 0x80 unused */
+ MIB_DESC(2, 0x84, NULL), /* TxGoodBytes */
+ /* 0x88 */
+ MIB_DESC(1, 0x8c, NULL), /* TxCollision */
MIB_DESC(1, 0x90, NULL), /* TxExcessiveCollistion */
MIB_DESC(1, 0x94, NULL), /* TxMultipleCollision */
@@ -705,7 +705,7 @@ static int yt921x_read_mib(struct yt921x_priv *priv, int port)
res = yt921x_reg_read(priv, reg + 4, &val1);
if (res)
break;
- val = ((u64)val0 << 32) | val1;
+ val = ((u64)val1 << 32) | val0;
}
WRITE_ONCE(*valp, val);
--
2.51.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH net-next v2 2/2] net: dsa: yt921x: Use macros for MIB locations
2025-11-26 8:40 [PATCH net-next v2 0/2] net: dsa: yt921x: Fix parsing MIB attributes David Yang
2025-11-26 8:40 ` [PATCH net-next v2 1/2] " David Yang
@ 2025-11-26 8:40 ` David Yang
2025-11-28 2:20 ` [PATCH net-next v2 0/2] net: dsa: yt921x: Fix parsing MIB attributes patchwork-bot+netdevbpf
2 siblings, 0 replies; 4+ messages in thread
From: David Yang @ 2025-11-26 8:40 UTC (permalink / raw)
To: netdev
Cc: David Yang, Andrew Lunn, Vladimir Oltean, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, linux-kernel
Extract MIB constants into the header file to improve code style. This
patch will not change the behavior of the function.
Signed-off-by: David Yang <mmyangfl@gmail.com>
---
drivers/net/dsa/yt921x.c | 103 +++++++++++++++++++--------------------
drivers/net/dsa/yt921x.h | 54 ++++++++++++++++++++
2 files changed, 103 insertions(+), 54 deletions(-)
diff --git a/drivers/net/dsa/yt921x.c b/drivers/net/dsa/yt921x.c
index 97fc6085f4d0..ebfd34f72314 100644
--- a/drivers/net/dsa/yt921x.c
+++ b/drivers/net/dsa/yt921x.c
@@ -39,60 +39,55 @@ struct yt921x_mib_desc {
* to perform 32bit MIB overflow wraparound.
*/
static const struct yt921x_mib_desc yt921x_mib_descs[] = {
- MIB_DESC(1, 0x00, NULL), /* RxBroadcast */
- MIB_DESC(1, 0x04, NULL), /* RxPause */
- MIB_DESC(1, 0x08, NULL), /* RxMulticast */
- MIB_DESC(1, 0x0c, NULL), /* RxCrcErr */
-
- MIB_DESC(1, 0x10, NULL), /* RxAlignErr */
- MIB_DESC(1, 0x14, NULL), /* RxUnderSizeErr */
- MIB_DESC(1, 0x18, NULL), /* RxFragErr */
- MIB_DESC(1, 0x1c, NULL), /* RxPktSz64 */
-
- MIB_DESC(1, 0x20, NULL), /* RxPktSz65To127 */
- MIB_DESC(1, 0x24, NULL), /* RxPktSz128To255 */
- MIB_DESC(1, 0x28, NULL), /* RxPktSz256To511 */
- MIB_DESC(1, 0x2c, NULL), /* RxPktSz512To1023 */
-
- MIB_DESC(1, 0x30, NULL), /* RxPktSz1024To1518 */
- MIB_DESC(1, 0x34, NULL), /* RxPktSz1519ToMax */
- /* 0x38 unused */
- MIB_DESC(2, 0x3c, NULL), /* RxGoodBytes */
-
- /* 0x40 */
- MIB_DESC(2, 0x44, "RxBadBytes"),
- /* 0x48 */
- MIB_DESC(1, 0x4c, NULL), /* RxOverSzErr */
-
- MIB_DESC(1, 0x50, NULL), /* RxDropped */
- MIB_DESC(1, 0x54, NULL), /* TxBroadcast */
- MIB_DESC(1, 0x58, NULL), /* TxPause */
- MIB_DESC(1, 0x5c, NULL), /* TxMulticast */
-
- MIB_DESC(1, 0x60, NULL), /* TxUnderSizeErr */
- MIB_DESC(1, 0x64, NULL), /* TxPktSz64 */
- MIB_DESC(1, 0x68, NULL), /* TxPktSz65To127 */
- MIB_DESC(1, 0x6c, NULL), /* TxPktSz128To255 */
-
- MIB_DESC(1, 0x70, NULL), /* TxPktSz256To511 */
- MIB_DESC(1, 0x74, NULL), /* TxPktSz512To1023 */
- MIB_DESC(1, 0x78, NULL), /* TxPktSz1024To1518 */
- MIB_DESC(1, 0x7c, NULL), /* TxPktSz1519ToMax */
-
- /* 0x80 unused */
- MIB_DESC(2, 0x84, NULL), /* TxGoodBytes */
- /* 0x88 */
- MIB_DESC(1, 0x8c, NULL), /* TxCollision */
-
- MIB_DESC(1, 0x90, NULL), /* TxExcessiveCollistion */
- MIB_DESC(1, 0x94, NULL), /* TxMultipleCollision */
- MIB_DESC(1, 0x98, NULL), /* TxSingleCollision */
- MIB_DESC(1, 0x9c, NULL), /* TxPkt */
-
- MIB_DESC(1, 0xa0, NULL), /* TxDeferred */
- MIB_DESC(1, 0xa4, NULL), /* TxLateCollision */
- MIB_DESC(1, 0xa8, "RxOAM"),
- MIB_DESC(1, 0xac, "TxOAM"),
+ MIB_DESC(1, YT921X_MIB_DATA_RX_BROADCAST, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_RX_PAUSE, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_RX_MULTICAST, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_RX_CRC_ERR, NULL),
+
+ MIB_DESC(1, YT921X_MIB_DATA_RX_ALIGN_ERR, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_RX_UNDERSIZE_ERR, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_RX_FRAG_ERR, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_RX_PKT_SZ_64, NULL),
+
+ MIB_DESC(1, YT921X_MIB_DATA_RX_PKT_SZ_65_TO_127, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_RX_PKT_SZ_128_TO_255, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_RX_PKT_SZ_256_TO_511, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_RX_PKT_SZ_512_TO_1023, NULL),
+
+ MIB_DESC(1, YT921X_MIB_DATA_RX_PKT_SZ_1024_TO_1518, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_RX_PKT_SZ_1519_TO_MAX, NULL),
+ MIB_DESC(2, YT921X_MIB_DATA_RX_GOOD_BYTES, NULL),
+
+ MIB_DESC(2, YT921X_MIB_DATA_RX_BAD_BYTES, "RxBadBytes"),
+ MIB_DESC(1, YT921X_MIB_DATA_RX_OVERSIZE_ERR, NULL),
+
+ MIB_DESC(1, YT921X_MIB_DATA_RX_DROPPED, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_TX_BROADCAST, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_TX_PAUSE, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_TX_MULTICAST, NULL),
+
+ MIB_DESC(1, YT921X_MIB_DATA_TX_UNDERSIZE_ERR, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_TX_PKT_SZ_64, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_TX_PKT_SZ_65_TO_127, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_TX_PKT_SZ_128_TO_255, NULL),
+
+ MIB_DESC(1, YT921X_MIB_DATA_TX_PKT_SZ_256_TO_511, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_TX_PKT_SZ_512_TO_1023, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_TX_PKT_SZ_1024_TO_1518, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_TX_PKT_SZ_1519_TO_MAX, NULL),
+
+ MIB_DESC(2, YT921X_MIB_DATA_TX_GOOD_BYTES, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_TX_COLLISION, NULL),
+
+ MIB_DESC(1, YT921X_MIB_DATA_TX_EXCESSIVE_COLLISION, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_TX_MULTIPLE_COLLISION, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_TX_SINGLE_COLLISION, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_TX_PKT, NULL),
+
+ MIB_DESC(1, YT921X_MIB_DATA_TX_DEFERRED, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_TX_LATE_COLLISION, NULL),
+ MIB_DESC(1, YT921X_MIB_DATA_RX_OAM, "RxOAM"),
+ MIB_DESC(1, YT921X_MIB_DATA_TX_OAM, "TxOAM"),
};
struct yt921x_info {
diff --git a/drivers/net/dsa/yt921x.h b/drivers/net/dsa/yt921x.h
index 3e85d90826fb..44719d841d40 100644
--- a/drivers/net/dsa/yt921x.h
+++ b/drivers/net/dsa/yt921x.h
@@ -173,6 +173,60 @@
#define YT921X_MIB_CTRL_ALL_PORT BIT(0)
#define YT921X_MIBn_DATA0(port) (0xc0100 + 0x100 * (port))
#define YT921X_MIBn_DATAm(port, x) (YT921X_MIBn_DATA0(port) + 4 * (x))
+#define YT921X_MIB_DATA_RX_BROADCAST 0x00
+#define YT921X_MIB_DATA_RX_PAUSE 0x04
+#define YT921X_MIB_DATA_RX_MULTICAST 0x08
+#define YT921X_MIB_DATA_RX_CRC_ERR 0x0c
+
+#define YT921X_MIB_DATA_RX_ALIGN_ERR 0x10
+#define YT921X_MIB_DATA_RX_UNDERSIZE_ERR 0x14
+#define YT921X_MIB_DATA_RX_FRAG_ERR 0x18
+#define YT921X_MIB_DATA_RX_PKT_SZ_64 0x1c
+
+#define YT921X_MIB_DATA_RX_PKT_SZ_65_TO_127 0x20
+#define YT921X_MIB_DATA_RX_PKT_SZ_128_TO_255 0x24
+#define YT921X_MIB_DATA_RX_PKT_SZ_256_TO_511 0x28
+#define YT921X_MIB_DATA_RX_PKT_SZ_512_TO_1023 0x2c
+
+#define YT921X_MIB_DATA_RX_PKT_SZ_1024_TO_1518 0x30
+#define YT921X_MIB_DATA_RX_PKT_SZ_1519_TO_MAX 0x34
+/* 0x38: unused */
+#define YT921X_MIB_DATA_RX_GOOD_BYTES 0x3c
+
+/* 0x40: 64 bytes */
+#define YT921X_MIB_DATA_RX_BAD_BYTES 0x44
+/* 0x48: 64 bytes */
+#define YT921X_MIB_DATA_RX_OVERSIZE_ERR 0x4c
+
+#define YT921X_MIB_DATA_RX_DROPPED 0x50
+#define YT921X_MIB_DATA_TX_BROADCAST 0x54
+#define YT921X_MIB_DATA_TX_PAUSE 0x58
+#define YT921X_MIB_DATA_TX_MULTICAST 0x5c
+
+#define YT921X_MIB_DATA_TX_UNDERSIZE_ERR 0x60
+#define YT921X_MIB_DATA_TX_PKT_SZ_64 0x64
+#define YT921X_MIB_DATA_TX_PKT_SZ_65_TO_127 0x68
+#define YT921X_MIB_DATA_TX_PKT_SZ_128_TO_255 0x6c
+
+#define YT921X_MIB_DATA_TX_PKT_SZ_256_TO_511 0x70
+#define YT921X_MIB_DATA_TX_PKT_SZ_512_TO_1023 0x74
+#define YT921X_MIB_DATA_TX_PKT_SZ_1024_TO_1518 0x78
+#define YT921X_MIB_DATA_TX_PKT_SZ_1519_TO_MAX 0x7c
+
+/* 0x80: unused */
+#define YT921X_MIB_DATA_TX_GOOD_BYTES 0x84
+/* 0x88: 64 bytes */
+#define YT921X_MIB_DATA_TX_COLLISION 0x8c
+
+#define YT921X_MIB_DATA_TX_EXCESSIVE_COLLISION 0x90
+#define YT921X_MIB_DATA_TX_MULTIPLE_COLLISION 0x94
+#define YT921X_MIB_DATA_TX_SINGLE_COLLISION 0x98
+#define YT921X_MIB_DATA_TX_PKT 0x9c
+
+#define YT921X_MIB_DATA_TX_DEFERRED 0xa0
+#define YT921X_MIB_DATA_TX_LATE_COLLISION 0xa4
+#define YT921X_MIB_DATA_RX_OAM 0xa8
+#define YT921X_MIB_DATA_TX_OAM 0xac
#define YT921X_EDATA_CTRL 0xe0000
#define YT921X_EDATA_CTRL_ADDR_M GENMASK(15, 8)
--
2.51.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH net-next v2 0/2] net: dsa: yt921x: Fix parsing MIB attributes
2025-11-26 8:40 [PATCH net-next v2 0/2] net: dsa: yt921x: Fix parsing MIB attributes David Yang
2025-11-26 8:40 ` [PATCH net-next v2 1/2] " David Yang
2025-11-26 8:40 ` [PATCH net-next v2 2/2] net: dsa: yt921x: Use macros for MIB locations David Yang
@ 2025-11-28 2:20 ` patchwork-bot+netdevbpf
2 siblings, 0 replies; 4+ messages in thread
From: patchwork-bot+netdevbpf @ 2025-11-28 2:20 UTC (permalink / raw)
To: David Yang
Cc: netdev, andrew, olteanv, davem, edumazet, kuba, pabeni,
linux-kernel
Hello:
This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Wed, 26 Nov 2025 16:40:18 +0800 you wrote:
> v1: https://lore.kernel.org/r/20251118091237.2208994-1-mmyangfl@gmail.com
> - reword commit message and add a fixes tag
> - add #defines for each MIB location
>
> David Yang (2):
> net: dsa: yt921x: Fix parsing MIB attributes
> net: dsa: yt921x: Use macros for MIB locations
>
> [...]
Here is the summary with links:
- [net-next,v2,1/2] net: dsa: yt921x: Fix parsing MIB attributes
https://git.kernel.org/netdev/net-next/c/510026a39849
- [net-next,v2,2/2] net: dsa: yt921x: Use macros for MIB locations
https://git.kernel.org/netdev/net-next/c/fbce7b36c8c6
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-11-28 2:23 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-26 8:40 [PATCH net-next v2 0/2] net: dsa: yt921x: Fix parsing MIB attributes David Yang
2025-11-26 8:40 ` [PATCH net-next v2 1/2] " David Yang
2025-11-26 8:40 ` [PATCH net-next v2 2/2] net: dsa: yt921x: Use macros for MIB locations David Yang
2025-11-28 2:20 ` [PATCH net-next v2 0/2] net: dsa: yt921x: Fix parsing MIB attributes patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox