#define XAE_UAW0_OFFSET                0x00000700 /* Unicast address word 0 */
 #define XAE_UAW1_OFFSET                0x00000704 /* Unicast address word 1 */
 #define XAE_FMI_OFFSET         0x00000708 /* Frame Filter Control */
+#define XAE_FFE_OFFSET         0x0000070C /* Frame Filter Enable */
 #define XAE_AF0_OFFSET         0x00000710 /* Address Filter 0 */
 #define XAE_AF1_OFFSET         0x00000714 /* Address Filter 1 */
 
 
  */
 static void axienet_set_multicast_list(struct net_device *ndev)
 {
-       int i;
+       int i = 0;
        u32 reg, af0reg, af1reg;
        struct axienet_local *lp = netdev_priv(ndev);
 
                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)
                                break;
                        axienet_iow(lp, XAE_FMI_OFFSET, reg);
                        axienet_iow(lp, XAE_AF0_OFFSET, af0reg);
                        axienet_iow(lp, XAE_AF1_OFFSET, af1reg);
+                       axienet_iow(lp, XAE_FFE_OFFSET, 1);
                        i++;
                }
        } else {
                reg &= ~XAE_FMI_PM_MASK;
 
                axienet_iow(lp, XAE_FMI_OFFSET, reg);
-
-               for (i = 0; i < XAE_MULTICAST_CAM_TABLE_NUM; i++) {
-                       reg = axienet_ior(lp, XAE_FMI_OFFSET) & 0xFFFFFF00;
-                       reg |= i;
-
-                       axienet_iow(lp, XAE_FMI_OFFSET, reg);
-                       axienet_iow(lp, XAE_AF0_OFFSET, 0);
-                       axienet_iow(lp, XAE_AF1_OFFSET, 0);
-               }
-
                dev_info(&ndev->dev, "Promiscuous mode disabled.\n");
        }
+
+       for (; i < XAE_MULTICAST_CAM_TABLE_NUM; i++) {
+               reg = axienet_ior(lp, XAE_FMI_OFFSET) & 0xFFFFFF00;
+               reg |= i;
+               axienet_iow(lp, XAE_FMI_OFFSET, reg);
+               axienet_iow(lp, XAE_FFE_OFFSET, 0);
+       }
 }
 
 /**