Date: Wed, 20 Feb 2008 18:56:03 GMT From: Sam Leffler <sam@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 135827 for review Message-ID: <200802201856.m1KIu30n082716@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=135827 Change 135827 by sam@sam_ebb on 2008/02/20 18:56:03 er, let's get it right this time Affected files ... .. //depot/projects/vap/sys/dev/ath/if_ath.c#33 edit Differences ... ==== //depot/projects/vap/sys/dev/ath/if_ath.c#33 (text+ko) ==== @@ -689,16 +689,15 @@ if (clone && sc->sc_hasbmask) { /* NB: we only do this if h/w supports multiple bssid */ - for (i = 0; i < 32; i++) + for (i = 0; i < 8; i++) if ((sc->sc_bssidmask & (1<<i)) == 0) break; - if (i != 0) { + if (i != 0) mac[0] |= (i << 2)|0x2; - sc->sc_hwbssidmask[0] &= ~mac[0]; - } } else i = 0; sc->sc_bssidmask |= 1<<i; + sc->sc_hwbssidmask[0] &= ~mac[0]; if (i == 0) sc->sc_nbssid0++; } @@ -707,12 +706,16 @@ reclaim_address(struct ath_softc *sc, const uint8_t mac[IEEE80211_ADDR_LEN]) { int i = mac[0] >> 2; + uint8_t mask; + if (i != 0 || --sc->sc_nbssid0 == 0) { sc->sc_bssidmask &= ~(1<<i); - sc->sc_hwbssidmask[0] |= mac[0]; - /* put back U/L bit if any other vaps need it */ - if (sc->sc_bssidmask & ~1) - sc->sc_hwbssidmask[0] &= ~0x2; + /* recalculate bssid mask from remaining addresses */ + mask = 0xff; + for (i = 1; i < 8; i++) + if (sc->sc_bssidmask & (1<<i)) + mask &= ~((i<<2)|0x2); + sc->sc_hwbssidmask[0] |= mask; } }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200802201856.m1KIu30n082716>