summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/xilinx
diff options
context:
space:
mode:
authorEsben Haabendal <esben@geanix.com>2019-05-23 15:02:21 +0300
committerDavid S. Miller <davem@davemloft.net>2019-05-23 19:33:57 +0300
commit1b3fa5cf859bce7094ac18d32f54af8a7148ad51 (patch)
treefedc5f6a4bddab70b21e33c5fe47c95185ec4586 /drivers/net/ethernet/xilinx
parent1bd33bf0fe6d3012410db0302187199871b510a0 (diff)
downloadlinux-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.c7
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 */