diff options
Diffstat (limited to 'sys/dev/ic/lemac.c')
-rw-r--r-- | sys/dev/ic/lemac.c | 16 |
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); } |