aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/xilinx
diff options
context:
space:
mode:
authorEsben Haabendal <esben@geanix.com>2019-05-23 14:02:21 +0200
committerDavid S. Miller <davem@davemloft.net>2019-05-23 09:33:57 -0700
commit1b3fa5cf859bce7094ac18d32f54af8a7148ad51 (patch)
treefedc5f6a4bddab70b21e33c5fe47c95185ec4586 /drivers/net/ethernet/xilinx
parentnet: ll_temac: Prepare indirect register access for multicast support (diff)
downloadlinux-dev-1b3fa5cf859bce7094ac18d32f54af8a7148ad51.tar.xz
linux-dev-1b3fa5cf859bce7094ac18d32f54af8a7148ad51.zip
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 */