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 <yong...@freebsd.org> @@ -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); }