ath9k: Add support FIF_OTHER_BSS filtering mode.
authorJavier Cardona <javier@cozybit.com>
Fri, 21 Aug 2009 02:12:07 +0000 (19:12 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 28 Aug 2009 18:40:24 +0000 (14:40 -0400)
Support for FIF_OTHER_BSS was missing.  This patch adds support for this
filtering mode which in turn resolves a problem where mesh interfaces would not
receive broadcast traffic.

Signed-off-by: Javier Cardona <javier@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/recv.c

index 7b62c220d5fd49823d95c4ac981221d79dc48176..52e62daad3ce41b31b096d7f9f5d16010e62d69e 100644 (file)
@@ -423,11 +423,12 @@ u32 ath_calcrxfilter(struct ath_softc *sc)
        if (sc->rx.rxfilter & FIF_PSPOLL)
                rfilt |= ATH9K_RX_FILTER_PSPOLL;
 
-       if (sc->sec_wiphy) {
+       if (sc->sec_wiphy || (sc->rx.rxfilter & FIF_OTHER_BSS)) {
                /* TODO: only needed if more than one BSSID is in use in
                 * station/adhoc mode */
-               /* TODO: for older chips, may need to add ATH9K_RX_FILTER_PROM
-                */
+               /* The following may also be needed for other older chips */
+               if (sc->sc_ah->hw_version.macVersion == AR_SREV_VERSION_9160)
+                       rfilt |= ATH9K_RX_FILTER_PROM;
                rfilt |= ATH9K_RX_FILTER_MCAST_BCAST_ALL;
        }