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 <[email protected]> --- drivers/net/ethernet/xilinx/ll_temac_main.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/xilinx/ll_temac_main.c b/drivers/net/ethernet/xilinx/ll_temac_main.c index 9d43be3..75da604 100644 --- a/drivers/net/ethernet/xilinx/ll_temac_main.c +++ b/drivers/net/ethernet/xilinx/ll_temac_main.c @@ -484,10 +484,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 */ -- 2.4.11

