Certain Ethernet and cpu port settings need to be updated for vlan support. Signed-off-by: Michael Dege --- 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 160b70997924..60bfa22cc412 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