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 <esben@geanix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Esben Haabendal 2019-05-23 14:02:21 +02:00 committed by David S. Miller
parent 1bd33bf0fe
commit 1b3fa5cf85
1 changed files with 5 additions and 2 deletions

View File

@ -485,10 +485,13 @@ static void temac_set_multicast_list(struct net_device *ndev)
multi_addr_lsw); multi_addr_lsw);
i++; 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_MAW0_OFFSET, 0);
temac_indirect_out32_locked(lp, XTE_MAW1_OFFSET, i << 16); temac_indirect_out32_locked(lp, XTE_MAW1_OFFSET, i << 16);
} i++;
} }
/* Enable address filter block if currently disabled */ /* Enable address filter block if currently disabled */