43 lines
1.7 KiB
Diff
43 lines
1.7 KiB
Diff
From: =?UTF-8?q?Ar=C4=B1n=C3=A7=20=C3=9CNAL?= <arinc.unal@arinc9.com>
|
||
Date: Sat, 28 Jan 2023 12:42:32 +0300
|
||
Subject: [PATCH] net: ethernet: mtk_eth_soc: disable hardware DSA untagging
|
||
for second MAC
|
||
MIME-Version: 1.0
|
||
Content-Type: text/plain; charset=UTF-8
|
||
Content-Transfer-Encoding: 8bit
|
||
|
||
According to my tests on MT7621AT and MT7623NI SoCs, hardware DSA untagging
|
||
won't work on the second MAC. Therefore, disable this feature when the
|
||
second MAC of the MT7621 and MT7623 SoCs is being used.
|
||
|
||
Fixes: 2d7605a72906 ("net: ethernet: mtk_eth_soc: enable hardware DSA untagging")
|
||
Link: https://lore.kernel.org/netdev/6249fc14-b38a-c770-36b4-5af6d41c21d3@arinc9.com/
|
||
Tested-by: Arınç ÜNAL <arinc.unal@arinc9.com>
|
||
Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
|
||
Link: https://lore.kernel.org/r/20230128094232.2451947-1-arinc.unal@arinc9.com
|
||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||
---
|
||
|
||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||
@@ -3201,7 +3201,8 @@ static int mtk_open(struct net_device *d
|
||
struct mtk_eth *eth = mac->hw;
|
||
int i, err;
|
||
|
||
- if (mtk_uses_dsa(dev) && !eth->prog) {
|
||
+ if ((mtk_uses_dsa(dev) && !eth->prog) &&
|
||
+ !(mac->id == 1 && MTK_HAS_CAPS(eth->soc->caps, MTK_GMAC1_TRGMII))) {
|
||
for (i = 0; i < ARRAY_SIZE(eth->dsa_meta); i++) {
|
||
struct metadata_dst *md_dst = eth->dsa_meta[i];
|
||
|
||
@@ -3218,7 +3219,8 @@ static int mtk_open(struct net_device *d
|
||
}
|
||
} else {
|
||
/* Hardware special tag parsing needs to be disabled if at least
|
||
- * one MAC does not use DSA.
|
||
+ * one MAC does not use DSA, or the second MAC of the MT7621 and
|
||
+ * MT7623 SoCs is being used.
|
||
*/
|
||
u32 val = mtk_r32(eth, MTK_CDMP_IG_CTRL);
|
||
val &= ~MTK_CDMP_STAG_EN;
|