diff options
author | Esben Haabendal <esben@geanix.com> | 2019-05-23 15:02:21 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-05-23 19:33:57 +0300 |
commit | 1b3fa5cf859bce7094ac18d32f54af8a7148ad51 (patch) | |
tree | fedc5f6a4bddab70b21e33c5fe47c95185ec4586 /drivers/net/ethernet/xilinx | |
parent | 1bd33bf0fe6d3012410db0302187199871b510a0 (diff) | |
download | linux-1b3fa5cf859bce7094ac18d32f54af8a7148ad51.tar.xz |
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>
Diffstat (limited to 'drivers/net/ethernet/xilinx')
-rw-r--r-- | drivers/net/ethernet/xilinx/ll_temac_main.c | 7 |
1 files 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 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 */ |