aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Cochran <richard.cochran@omicron.at>2010-06-01 03:16:53 -0400
committerDavid S. Miller <davem@davemloft.net>2010-06-01 03:16:53 -0400
commit95e3bb7aff59d3b6c73d55d1a386ee53b8363fb5 (patch)
tree43cebda9b7e84ef3b5dd03923a7dd92e4a7ecaa2
parent5d55354f147bcf82b7a330bf9617b82a692b7d49 (diff)
ixp4xx: Support the all multicast flag on the NPE devices.
This patch adds support for the IFF_ALLMULTI flag. Previously only the IFF_PROMISC flag was supported. Signed-off-by: Richard Cochran <richard.cochran@omicron.at> Acked-By: Krzysztof Halasa <khc@pm.waw.pl> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/arm/ixp4xx_eth.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/arm/ixp4xx_eth.c b/drivers/net/arm/ixp4xx_eth.c
index 24df0325090c..ee2f8425dbe7 100644
--- a/drivers/net/arm/ixp4xx_eth.c
+++ b/drivers/net/arm/ixp4xx_eth.c
@@ -738,6 +738,17 @@ static void eth_set_mcast_list(struct net_device *dev)
738 struct netdev_hw_addr *ha; 738 struct netdev_hw_addr *ha;
739 u8 diffs[ETH_ALEN], *addr; 739 u8 diffs[ETH_ALEN], *addr;
740 int i; 740 int i;
741 static const u8 allmulti[] = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 };
742
743 if (dev->flags & IFF_ALLMULTI) {
744 for (i = 0; i < ETH_ALEN; i++) {
745 __raw_writel(allmulti[i], &port->regs->mcast_addr[i]);
746 __raw_writel(allmulti[i], &port->regs->mcast_mask[i]);
747 }
748 __raw_writel(DEFAULT_RX_CNTRL0 | RX_CNTRL0_ADDR_FLTR_EN,
749 &port->regs->rx_control[0]);
750 return;
751 }
741 752
742 if ((dev->flags & IFF_PROMISC) || netdev_mc_empty(dev)) { 753 if ((dev->flags & IFF_PROMISC) || netdev_mc_empty(dev)) {
743 __raw_writel(DEFAULT_RX_CNTRL0 & ~RX_CNTRL0_ADDR_FLTR_EN, 754 __raw_writel(DEFAULT_RX_CNTRL0 & ~RX_CNTRL0_ADDR_FLTR_EN,