Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f81edc6a authored by Derrick Pallas's avatar Derrick Pallas Committed by David S. Miller
Browse files

ethernet/ixp4xx: prevent allmulti from clobbering promisc



If both promisc and allmulti are set, promisc should trump allmulti and
disable the MAC filter; otherwise, the interface is not really promisc.

Previously, this code checked IFF_ALLMULTI prior to and without regard for
IFF_PROMISC; if both were set, only multicast and direct unicast traffic
would make it through the filter.

Signed-off-by: default avatarDerrick Pallas <pallas@meraki.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7b4577a9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -938,7 +938,7 @@ static void eth_set_mcast_list(struct net_device *dev)
	int i;
	static const u8 allmulti[] = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 };

	if (dev->flags & IFF_ALLMULTI) {
	if ((dev->flags & IFF_ALLMULTI) && !(dev->flags & IFF_PROMISC)) {
		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]);