From: Esben Haabendal Date: Thu, 23 May 2019 12:02:21 +0000 (+0200) Subject: net: ll_temac: Cleanup multicast filter on change X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=1b3fa5cf859bce7094ac18d32f54af8a7148ad51;p=openwrt%2Fstaging%2Fblogic.git net: ll_temac: Cleanup multicast filter on change Avoid leaving old address table entries when using multicast. If more than one multicast address were removed, only the first removed address would actually be cleared. Signed-off-by: Esben Haabendal Signed-off-by: David S. Miller --- diff --git a/drivers/net/ethernet/xilinx/ll_temac_main.c b/drivers/net/ethernet/xilinx/ll_temac_main.c index cc58bd8c12f6..ef13fa904ee4 100644 --- a/drivers/net/ethernet/xilinx/ll_temac_main.c +++ b/drivers/net/ethernet/xilinx/ll_temac_main.c @@ -485,10 +485,13 @@ static void temac_set_multicast_list(struct net_device *ndev) multi_addr_lsw); i++; } - } else { + } + + /* Clear all or remaining/unused address table entries */ + while (i < MULTICAST_CAM_TABLE_NUM) { temac_indirect_out32_locked(lp, XTE_MAW0_OFFSET, 0); temac_indirect_out32_locked(lp, XTE_MAW1_OFFSET, i << 16); - } + i++; } /* Enable address filter block if currently disabled */