aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJouni Malinen <jouni.malinen@atheros.com>2009-03-10 04:55:50 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-03-16 18:09:42 -0400
commit217ba9da8ea6bb270a1f463367083cc5d99f2493 (patch)
tree6a308c15727664695428cd28c224ee7be0f8f019 /drivers
parenteeee1320b768a18822691126becc802c706aab5a (diff)
ath9k: Fix FIF_PROMISC_IN_BSS processing in station mode
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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/ath9k/recv.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/net/wireless/ath9k/recv.c b/drivers/net/wireless/ath9k/recv.c
index 9439cb351118..0bba17662a1f 100644
--- a/drivers/net/wireless/ath9k/recv.c
+++ b/drivers/net/wireless/ath9k/recv.c
@@ -385,14 +385,15 @@ u32 ath_calcrxfilter(struct ath_softc *sc)
385 if (sc->sc_ah->opmode != NL80211_IFTYPE_STATION) 385 if (sc->sc_ah->opmode != NL80211_IFTYPE_STATION)
386 rfilt |= ATH9K_RX_FILTER_PROBEREQ; 386 rfilt |= ATH9K_RX_FILTER_PROBEREQ;
387 387
388 /* Can't set HOSTAP into promiscous mode */ 388 /*
389 * Set promiscuous mode when FIF_PROMISC_IN_BSS is enabled for station
390 * mode interface or when in monitor mode. AP mode does not need this
391 * since it receives all in-BSS frames anyway.
392 */
389 if (((sc->sc_ah->opmode != NL80211_IFTYPE_AP) && 393 if (((sc->sc_ah->opmode != NL80211_IFTYPE_AP) &&
390 (sc->rx.rxfilter & FIF_PROMISC_IN_BSS)) || 394 (sc->rx.rxfilter & FIF_PROMISC_IN_BSS)) ||
391 (sc->sc_ah->opmode == NL80211_IFTYPE_MONITOR)) { 395 (sc->sc_ah->opmode == NL80211_IFTYPE_MONITOR))
392 rfilt |= ATH9K_RX_FILTER_PROM; 396 rfilt |= ATH9K_RX_FILTER_PROM;
393 /* ??? To prevent from sending ACK */
394 rfilt &= ~ATH9K_RX_FILTER_UCAST;
395 }
396 397
397 if (sc->rx.rxfilter & FIF_CONTROL) 398 if (sc->rx.rxfilter & FIF_CONTROL)
398 rfilt |= ATH9K_RX_FILTER_CONTROL; 399 rfilt |= ATH9K_RX_FILTER_CONTROL;