ixp4xx: Support the all multicast flag on the NPE devices.
[pandora-kernel.git] / drivers / net / arm / ixp4xx_eth.c
index 24df032..ee2f842 100644 (file)
@@ -738,6 +738,17 @@ static void eth_set_mcast_list(struct net_device *dev)
        struct netdev_hw_addr *ha;
        u8 diffs[ETH_ALEN], *addr;
        int i;
+       static const u8 allmulti[] = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 };
+
+       if (dev->flags & IFF_ALLMULTI) {
+               for (i = 0; i < ETH_ALEN; i++) {
+                       __raw_writel(allmulti[i], &port->regs->mcast_addr[i]);
+                       __raw_writel(allmulti[i], &port->regs->mcast_mask[i]);
+               }
+               __raw_writel(DEFAULT_RX_CNTRL0 | RX_CNTRL0_ADDR_FLTR_EN,
+                       &port->regs->rx_control[0]);
+               return;
+       }
 
        if ((dev->flags & IFF_PROMISC) || netdev_mc_empty(dev)) {
                __raw_writel(DEFAULT_RX_CNTRL0 & ~RX_CNTRL0_ADDR_FLTR_EN,