diff options
author | onoe <onoe@FreeBSD.org> | 2004-04-18 01:05:02 +0000 |
---|---|---|
committer | onoe <onoe@FreeBSD.org> | 2004-04-18 01:05:02 +0000 |
commit | 9ce8f42312f1416345b36e1c4d8464c2c8da5e50 (patch) | |
tree | c946c8369276dc2b6e2ac0078da2468499161c94 /sys/dev/awi | |
parent | 04f5fa02169597aeead7667889dcbbe3d90c0d5b (diff) | |
download | FreeBSD-src-9ce8f42312f1416345b36e1c4d8464c2c8da5e50.zip FreeBSD-src-9ce8f42312f1416345b36e1c4d8464c2c8da5e50.tar.gz |
Use IFF_ALLMULTI instead of if_amcount to decide if all multicast should
be received. Pointed out by Luigi Rizzo.
Diffstat (limited to 'sys/dev/awi')
-rw-r--r-- | sys/dev/awi/awi.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/sys/dev/awi/awi.c b/sys/dev/awi/awi.c index eec1d30..db72716 100644 --- a/sys/dev/awi/awi.c +++ b/sys/dev/awi/awi.c @@ -1,4 +1,4 @@ -/* $NetBSD: awi.c,v 1.61 2004/01/15 13:29:05 onoe Exp $ */ +/* $NetBSD: awi.c,v 1.62 2004/01/16 14:13:15 onoe Exp $ */ /*- * Copyright (c) 1999,2000,2001 The NetBSD Foundation, Inc. @@ -86,7 +86,7 @@ #include <sys/cdefs.h> #ifdef __NetBSD__ -__KERNEL_RCSID(0, "$NetBSD: awi.c,v 1.61 2004/01/15 13:29:05 onoe Exp $"); +__KERNEL_RCSID(0, "$NetBSD: awi.c,v 1.62 2004/01/16 14:13:15 onoe Exp $"); #endif #ifdef __FreeBSD__ __FBSDID("$FreeBSD$"); @@ -1112,7 +1112,7 @@ awi_mode_init(struct awi_softc *sc) } sc->sc_mib_mac.aPromiscuous_Enable = 0; #ifdef __FreeBSD__ - if (ifp->if_amcount != 0) + if (ifp->if_flags & IFF_ALLMULTI) goto set_mib; TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { if (ifma->ifma_addr->sa_family != AF_LINK) @@ -1141,10 +1141,12 @@ awi_mode_init(struct awi_softc *sc) sc->sc_mib_local.Accept_All_Multicast_Dis = 1; set_mib: +#ifndef __FreeBSD__ if (sc->sc_mib_local.Accept_All_Multicast_Dis) ifp->if_flags &= ~IFF_ALLMULTI; else ifp->if_flags |= IFF_ALLMULTI; +#endif sc->sc_mib_mgt.Wep_Required = (sc->sc_ic.ic_flags & IEEE80211_F_WEPON) ? AWI_WEP_ON : AWI_WEP_OFF; @@ -1926,7 +1928,7 @@ awi_newstate(struct ieee80211com *ic, enum ieee80211_state nstate, int arg) case IEEE80211_S_ASSOC: case IEEE80211_S_INIT: ieee80211_begin_scan(ifp); - /* FALLTHRU */ + break; case IEEE80211_S_SCAN: /* scan next */ break; @@ -2084,8 +2086,11 @@ awi_newstate(struct ieee80211com *ic, enum ieee80211_state nstate, int arg) return (*sc->sc_newstate)(ic, nstate, arg); out: - if (error != 0) + if (error != 0) { + if (error == EINPROGRESS) + error = 0; return error; + } return (*sc->sc_newstate)(ic, nstate, arg); } |