Enable MAC address filtering in Rswitch HW. Signed-off-by: Nikita Yushchenko Signed-off-by: Michael Dege --- drivers/net/ethernet/renesas/rswitch.h | 23 +++++++++++++++++++++++ drivers/net/ethernet/renesas/rswitch_main.c | 8 ++++++++ 2 files changed, 31 insertions(+) diff --git a/drivers/net/ethernet/renesas/rswitch.h b/drivers/net/ethernet/renesas/rswitch.h index a65ba10ae435..ac32091b7991 100644 --- a/drivers/net/ethernet/renesas/rswitch.h +++ b/drivers/net/ethernet/renesas/rswitch.h @@ -767,6 +767,29 @@ enum link_speed_conf { #define MLVC_PLV BIT(16) +#define MRAFC_MSRAREP BIT(26) +#define MRAFC_NSAREP BIT(25) +#define MRAFC_SDSFREP BIT(24) +#define MRAFC_NDAREP BIT(23) +#define MRAFC_BCACP BIT(22) +#define MRAFC_MCACP BIT(21) +#define MRAFC_BSTENP BIT(20) +#define MRAFC_MSTENP BIT(19) +#define MRAFC_BCENP BIT(18) +#define MRAFC_MCENP BIT(17) +#define MRAFC_UCENP BIT(16) +#define MRAFC_MSAREE BIT(10) +#define MRAFC_NSAREE BIT(9) +#define MRAFC_SDSFREE BIT(8) +#define MRAFC_NDAREE BIT(7) +#define MRAFC_BCADE BIT(6) +#define MRAFC_MCADE BIT(5) +#define MRAFC_BSTENE BIT(4) +#define MRAFC_MSTENE BIT(3) +#define MRAFC_BCENE BIT(2) +#define MRAFC_MCENE BIT(1) +#define MRAFC_UCENE BIT(0) + /* GWCA */ enum rswitch_gwca_mode { GWMC_OPC_RESET, diff --git a/drivers/net/ethernet/renesas/rswitch_main.c b/drivers/net/ethernet/renesas/rswitch_main.c index dd9a0e7a9d74..d32d4d18606d 100644 --- a/drivers/net/ethernet/renesas/rswitch_main.c +++ b/drivers/net/ethernet/renesas/rswitch_main.c @@ -1203,6 +1203,13 @@ static void rswitch_etha_enable_mii(struct rswitch_etha *etha) FIELD_PREP(MPIC_PLSPP, etha->link_pin)); } +static void rswitch_etha_set_MAC_addr_filter(struct rswitch_etha *etha) +{ + /* Enable broad-/multi-/uni-cast reception of eMAC and pMAC frames */ + iowrite32(MRAFC_BCENE | MRAFC_MCENE | MRAFC_UCENE | MRAFC_BCENP | + MRAFC_MCENP | MRAFC_UCENP, etha->addr + MRAFC); +} + static int rswitch_etha_hw_init(struct rswitch_etha *etha, const u8 *mac) { int err; @@ -1217,6 +1224,7 @@ static int rswitch_etha_hw_init(struct rswitch_etha *etha, const u8 *mac) iowrite32(EAVCC_VEM_SC_TAG, etha->addr + EAVCC); rswitch_rmac_setting(etha, mac); rswitch_etha_enable_mii(etha); + rswitch_etha_set_MAC_addr_filter(etha); err = rswitch_etha_wait_link_verification(etha); if (err < 0) -- 2.43.0