summaryrefslogtreecommitdiff
path: root/sys/dev/ic/lemac.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/ic/lemac.c')
-rw-r--r--sys/dev/ic/lemac.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/sys/dev/ic/lemac.c b/sys/dev/ic/lemac.c
index 76d5470547d..30908ff4604 100644
--- a/sys/dev/ic/lemac.c
+++ b/sys/dev/ic/lemac.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: lemac.c,v 1.14 2013/08/07 01:06:30 bluhm Exp $ */
+/* $OpenBSD: lemac.c,v 1.15 2013/11/26 09:50:33 mpi Exp $ */
/* $NetBSD: lemac.c,v 1.20 2001/06/13 10:46:02 wiz Exp $ */
/*-
@@ -490,6 +490,7 @@ void
lemac_multicast_filter(struct lemac_softc *sc)
{
#if 0
+ struct arpcom *ac = &sc->sc_ec;
struct ether_multistep step;
struct ether_multi *enm;
#endif
@@ -499,13 +500,14 @@ lemac_multicast_filter(struct lemac_softc *sc)
lemac_multicast_op(sc->sc_mctbl, etherbroadcastaddr, 1);
#if 0
- ETHER_FIRST_MULTI(step, &sc->sc_ec, enm);
+ if (ac->ac_multirangecnt > 0) {
+ sc->sc_flags |= LEMAC_ALLMULTI;
+ sc->sc_if.if_flags |= IFF_ALLMULTI;
+ return;
+ }
+
+ ETHER_FIRST_MULTI(step, ac, enm);
while (enm != NULL) {
- if (!LEMAC_ADDREQUAL(enm->enm_addrlo, enm->enm_addrhi)) {
- sc->sc_flags |= LEMAC_ALLMULTI;
- sc->sc_if.if_flags |= IFF_ALLMULTI;
- return;
- }
lemac_multicast_op(sc->sc_mctbl, enm->enm_addrlo, TRUE);
ETHER_NEXT_MULTI(step, enm);
}