[PATCH 3/4] net: ll_temac: Cleanup multicast filter on change

From: Esben Haabendal
Date: Thu May 23 2019 - 08:05:32 EST


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 <esben@xxxxxxxxxx>
---
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