summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c
index ea1252730f6c..7a7c3c91fc52 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c
@@ -572,11 +572,15 @@ static void dwxgmac2_set_filter(struct mac_device_info *hw,
struct net_device *dev)
{
void __iomem *ioaddr = (void __iomem *)dev->base_addr;
- u32 value = readl(ioaddr + XGMAC_PACKET_FILTER);
int mcbitslog2 = hw->mcast_bits_log2;
- u32 mc_filter[8];
+ u32 value, mc_filter[8];
+
+ value = readl(ioaddr + XGMAC_PACKET_FILTER);
+ value &= ~XGMAC_FILTER_PCF;
+ value &= ~XGMAC_FILTER_PM;
+ value &= ~XGMAC_FILTER_HMC;
+ value &= ~XGMAC_FILTER_PR;
- value &= ~(XGMAC_FILTER_PR | XGMAC_FILTER_HMC | XGMAC_FILTER_PM);
value |= XGMAC_FILTER_HPF;
memset(mc_filter, 0, sizeof(mc_filter));