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

Reply via email to