Module Name: src
Committed By: cegger
Date: Tue Aug 18 06:02:36 UTC 2009
Modified Files:
src/sys/dev/pci: if_ale.c
Log Message:
fix multicast.
To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/dev/pci/if_ale.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/pci/if_ale.c
diff -u src/sys/dev/pci/if_ale.c:1.6 src/sys/dev/pci/if_ale.c:1.7
--- src/sys/dev/pci/if_ale.c:1.6 Tue Aug 18 05:50:55 2009
+++ src/sys/dev/pci/if_ale.c Tue Aug 18 06:02:36 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: if_ale.c,v 1.6 2009/08/18 05:50:55 cegger Exp $ */
+/* $NetBSD: if_ale.c,v 1.7 2009/08/18 06:02:36 cegger Exp $ */
/*-
* Copyright (c) 2008, Pyun YongHyeon <[email protected]>
@@ -32,7 +32,7 @@
/* Driver for Atheros AR8121/AR8113/AR8114 PCIe Ethernet. */
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_ale.c,v 1.6 2009/08/18 05:50:55 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_ale.c,v 1.7 2009/08/18 06:02:36 cegger Exp $");
#include "bpfilter.h"
#include "vlan.h"
@@ -2026,15 +2026,15 @@
rxcfg = CSR_READ_4(sc, ALE_MAC_CFG);
rxcfg &= ~(MAC_CFG_ALLMULTI | MAC_CFG_BCAST | MAC_CFG_PROMISC);
+ ifp->if_flags &= ~IFF_ALLMULTI;
/*
* Always accept broadcast frames.
*/
rxcfg |= MAC_CFG_BCAST;
- if (ifp->if_flags & IFF_ALLMULTI || ifp->if_flags & IFF_PROMISC ||
- ec->ec_multicnt > 0) {
-allmulti:
+ if (ifp->if_flags & IFF_PROMISC || ec->ec_multicnt > 0) {
+ ifp->if_flags |= IFF_ALLMULTI;
if (ifp->if_flags & IFF_PROMISC)
rxcfg |= MAC_CFG_PROMISC;
else
@@ -2046,13 +2046,7 @@
ETHER_FIRST_MULTI(step, ec, enm);
while (enm != NULL) {
- if (memcmp(enm->enm_addrlo, enm->enm_addrhi,
- ETHER_ADDR_LEN)) {
- ifp->if_flags |= IFF_ALLMULTI;
- goto allmulti;
- }
crc = ether_crc32_le(enm->enm_addrlo, ETHER_ADDR_LEN);
-
mchash[crc >> 31] |= 1 << ((crc >> 26) & 0x1f);
ETHER_NEXT_MULTI(step, enm);
}