55 lines
2.1 KiB
Diff
55 lines
2.1 KiB
Diff
From: =?UTF-8?q?Ar=C4=B1n=C3=A7=20=C3=9CNAL?= <arinc.unal@arinc9.com>
|
||
Date: Sun, 5 Feb 2023 20:53:31 +0300
|
||
Subject: [PATCH] net: ethernet: mtk_eth_soc: enable special tag when any MAC
|
||
uses DSA
|
||
MIME-Version: 1.0
|
||
Content-Type: text/plain; charset=UTF-8
|
||
Content-Transfer-Encoding: 8bit
|
||
|
||
The special tag is only enabled when the first MAC uses DSA. However, it
|
||
must be enabled when any MAC uses DSA. Change the check accordingly.
|
||
|
||
This fixes hardware DSA untagging not working on the second MAC of the
|
||
MT7621 and MT7623 SoCs, and likely other SoCs too. Therefore, remove the
|
||
check that disables hardware DSA untagging for the second MAC of the MT7621
|
||
and MT7623 SoCs.
|
||
|
||
Fixes: a1f47752fd62 ("net: ethernet: mtk_eth_soc: disable hardware DSA untagging for second MAC")
|
||
Co-developed-by: Richard van Schagen <richard@routerhints.com>
|
||
Signed-off-by: Richard van Schagen <richard@routerhints.com>
|
||
Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
|
||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||
---
|
||
|
||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||
@@ -3136,7 +3136,7 @@ static void mtk_gdm_config(struct mtk_et
|
||
|
||
val |= config;
|
||
|
||
- if (!i && eth->netdev[0] && netdev_uses_dsa(eth->netdev[0]))
|
||
+ if (eth->netdev[i] && netdev_uses_dsa(eth->netdev[i]))
|
||
val |= MTK_GDMA_SPECIAL_TAG;
|
||
|
||
mtk_w32(eth, val, MTK_GDMA_FWD_CFG(i));
|
||
@@ -3201,8 +3201,7 @@ static int mtk_open(struct net_device *d
|
||
struct mtk_eth *eth = mac->hw;
|
||
int i, err;
|
||
|
||
- if ((mtk_uses_dsa(dev) && !eth->prog) &&
|
||
- !(mac->id == 1 && MTK_HAS_CAPS(eth->soc->caps, MTK_GMAC1_TRGMII))) {
|
||
+ if (mtk_uses_dsa(dev) && !eth->prog) {
|
||
for (i = 0; i < ARRAY_SIZE(eth->dsa_meta); i++) {
|
||
struct metadata_dst *md_dst = eth->dsa_meta[i];
|
||
|
||
@@ -3219,8 +3218,7 @@ 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, or the second MAC of the MT7621 and
|
||
- * MT7623 SoCs is being used.
|
||
+ * one MAC does not use DSA.
|
||
*/
|
||
u32 val = mtk_r32(eth, MTK_CDMP_IG_CTRL);
|
||
val &= ~MTK_CDMP_STAG_EN;
|