]> www.infradead.org Git - users/hch/configfs.git/commitdiff
net: xilinx: axienet: Always disable promiscuous mode
authorSean Anderson <sean.anderson@linux.dev>
Thu, 22 Aug 2024 15:40:55 +0000 (11:40 -0400)
committerJakub Kicinski <kuba@kernel.org>
Thu, 22 Aug 2024 20:03:56 +0000 (13:03 -0700)
If promiscuous mode is disabled when there are fewer than four multicast
addresses, then it will not be reflected in the hardware. Fix this by
always clearing the promiscuous mode flag even when we program multicast
addresses.

Fixes: 8a3b7a252dca ("drivers/net/ethernet/xilinx: added Xilinx AXI Ethernet driver")
Signed-off-by: Sean Anderson <sean.anderson@linux.dev>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20240822154059.1066595-2-sean.anderson@linux.dev
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/xilinx/xilinx_axienet_main.c

index 02fdf66e07faa33887f361c699ded2360b9cae5d..163d052480071d626cd39939f999f53181c2a860 100644 (file)
@@ -450,6 +450,10 @@ static void axienet_set_multicast_list(struct net_device *ndev)
        } else if (!netdev_mc_empty(ndev)) {
                struct netdev_hw_addr *ha;
 
+               reg = axienet_ior(lp, XAE_FMI_OFFSET);
+               reg &= ~XAE_FMI_PM_MASK;
+               axienet_iow(lp, XAE_FMI_OFFSET, reg);
+
                i = 0;
                netdev_for_each_mc_addr(ha, ndev) {
                        if (i >= XAE_MULTICAST_CAM_TABLE_NUM)