ath9k: Fix FIF_PROMISC_IN_BSS processing in station mode
authorJouni Malinen <jouni.malinen@atheros.com>
Tue, 10 Mar 2009 08:55:50 +0000 (10:55 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 16 Mar 2009 22:09:42 +0000 (18:09 -0400)
We must not disable ACK sending in this case since it would break
normal station operations. In addition, clarify the comment about AP
mode to make more sense.

Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath9k/recv.c

index 9439cb3..0bba176 100644 (file)
@@ -385,14 +385,15 @@ u32 ath_calcrxfilter(struct ath_softc *sc)
        if (sc->sc_ah->opmode != NL80211_IFTYPE_STATION)
                rfilt |= ATH9K_RX_FILTER_PROBEREQ;
 
-       /* Can't set HOSTAP into promiscous mode */
+       /*
+        * Set promiscuous mode when FIF_PROMISC_IN_BSS is enabled for station
+        * mode interface or when in monitor mode. AP mode does not need this
+        * since it receives all in-BSS frames anyway.
+        */
        if (((sc->sc_ah->opmode != NL80211_IFTYPE_AP) &&
             (sc->rx.rxfilter & FIF_PROMISC_IN_BSS)) ||
-           (sc->sc_ah->opmode == NL80211_IFTYPE_MONITOR)) {
+           (sc->sc_ah->opmode == NL80211_IFTYPE_MONITOR))
                rfilt |= ATH9K_RX_FILTER_PROM;
-               /* ??? To prevent from sending ACK */
-               rfilt &= ~ATH9K_RX_FILTER_UCAST;
-       }
 
        if (sc->rx.rxfilter & FIF_CONTROL)
                rfilt |= ATH9K_RX_FILTER_CONTROL;