Commit ebb2eaeb authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge branch 'net-dsa-yt921x-fix-parsing-mib-attributes'

David Yang says:

====================
net: dsa: yt921x: Fix parsing MIB attributes
====================

Link: https://patch.msgid.link/20251126084024.2843851-1-mmyangfl@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 17e9f841 fbce7b36
Loading
Loading
Loading
Loading
+50 −55
Original line number Diff line number Diff line
@@ -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 */
	MIB_DESC(2, 0x38, NULL),	/* RxGoodBytes */
	/* 0x3c */

	MIB_DESC(2, 0x40, "RxBadBytes"),
	/* 0x44 */
	MIB_DESC(2, 0x48, NULL),	/* RxOverSzErr */
	/* 0x4c */

	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 */

	MIB_DESC(2, 0x80, NULL),	/* TxGoodBytes */
	/* 0x84 */
	MIB_DESC(2, 0x88, NULL),	/* TxCollision */
	/* 0x8c */

	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 {
@@ -705,7 +700,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);
+54 −0
Original line number Diff line number Diff line
@@ -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)