[PATCH net-next v2 09/13] net: renesas: rswitch: update port HW init

From: Michael Dege

Date: Fri Mar 27 2026 - 04:36:59 EST


Certain Ethernet and cpu port settings need to be updated for vlan
support.

Signed-off-by: Michael Dege <michael.dege@xxxxxxxxxxx>
---
drivers/net/ethernet/renesas/rswitch.h | 4 ----
drivers/net/ethernet/renesas/rswitch_main.c | 15 ++++++++++++---
2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/renesas/rswitch.h b/drivers/net/ethernet/renesas/rswitch.h
index ff2a84057f01..42c8bbafa27d 100644
--- a/drivers/net/ethernet/renesas/rswitch.h
+++ b/drivers/net/ethernet/renesas/rswitch.h
@@ -766,8 +766,6 @@ enum vlan_egress_mode {
HW_SC_TAG_VLAN,
};

-#define EAVCC_VEM_SC_TAG (0x3 << 16)
-
#define MPIC_PIS GENMASK(2, 0)
#define MPIC_PIS_GMII 2
#define MPIC_PIS_XGMII 4
@@ -806,8 +804,6 @@ enum rswitch_gwca_mode {
#define GWMTIRM_MTIOG BIT(0)
#define GWMTIRM_MTR BIT(1)

-#define GWVCC_VEM_SC_TAG (0x3 << 16)
-
#define GWARIRM_ARIOG BIT(0)
#define GWARIRM_ARR BIT(1)

diff --git a/drivers/net/ethernet/renesas/rswitch_main.c b/drivers/net/ethernet/renesas/rswitch_main.c
index ac87175b918e..d1be588fb625 100644
--- a/drivers/net/ethernet/renesas/rswitch_main.c
+++ b/drivers/net/ethernet/renesas/rswitch_main.c
@@ -735,8 +735,11 @@ static int rswitch_gwca_hw_init(struct rswitch_private *priv)
if (err < 0)
return err;

- iowrite32(GWVCC_VEM_SC_TAG, priv->addr + GWVCC);
- iowrite32(0, priv->addr + GWTTFC);
+ iowrite32(0, priv->addr + GWIRC);
+ iowrite32(FIELD_PREP(DQD, DES_RAM_DP), priv->addr + GWRDQDC0);
+ /* Drop frames with unknown tags */
+ iowrite32(UT, priv->addr + GWTTFC);
+
iowrite32(lower_32_bits(priv->gwca.linkfix_table_dma), priv->addr + GWDCBAC1);
iowrite32(upper_32_bits(priv->gwca.linkfix_table_dma), priv->addr + GWDCBAC0);
iowrite32(lower_32_bits(priv->gwca.ts_queue.ring_dma), priv->addr + GWTDCAC10);
@@ -878,6 +881,7 @@ static bool rswitch_rx(struct net_device *ndev, int *quota)
limit = boguscnt;

desc = &gq->rx_ring[gq->cur];
+
while ((desc->desc.die_dt & DT_MASK) != DT_FEMPTY) {
dma_rmb();
skb = rswitch_rx_handle_desc(ndev, gq, desc);
@@ -1267,7 +1271,12 @@ static int rswitch_etha_hw_init(struct rswitch_etha *etha, const u8 *mac)
if (err < 0)
return err;

- iowrite32(EAVCC_VEM_SC_TAG, etha->addr + EAVCC);
+ iowrite32(0, etha->addr + EAIRC);
+ iowrite32(FIELD_PREP(DQD, DES_RAM_DP), etha->addr + EATDQDC0);
+
+ /* Drop frames with unknown tags */
+ iowrite32(UT, etha->addr + EARTFC);
+
rswitch_rmac_setting(etha, mac);
rswitch_etha_enable_mii(etha);


--
2.43.0