aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath9k
diff options
context:
space:
mode:
authorVasanthakumar Thiagarajan <vasanth@atheros.com>2009-02-19 05:11:52 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-02-27 14:52:47 -0500
commitdbaaa147d6396c41d8f31156a777dfdaae2335a4 (patch)
treef45301a6f6b2ca0e25437abbe3a252174ab3d981 /drivers/net/wireless/ath9k
parent96891ceedaeaac95aa5b9dba5e68a8e77d541e78 (diff)
ath9k: Filter out beacons from other BSS in STA mode
Passing beacons received from other BSS to s/w in non-scanning state is unnecessary in STA mode. This patch filters them out in h/w. Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath9k')
-rw-r--r--drivers/net/wireless/ath9k/mac.h3
-rw-r--r--drivers/net/wireless/ath9k/recv.c11
2 files changed, 8 insertions, 6 deletions
diff --git a/drivers/net/wireless/ath9k/mac.h b/drivers/net/wireless/ath9k/mac.h
index 74b660ae8add..862a63f7634b 100644
--- a/drivers/net/wireless/ath9k/mac.h
+++ b/drivers/net/wireless/ath9k/mac.h
@@ -566,8 +566,9 @@ enum ath9k_rx_filter {
566 ATH9K_RX_FILTER_BEACON = 0x00000010, 566 ATH9K_RX_FILTER_BEACON = 0x00000010,
567 ATH9K_RX_FILTER_PROM = 0x00000020, 567 ATH9K_RX_FILTER_PROM = 0x00000020,
568 ATH9K_RX_FILTER_PROBEREQ = 0x00000080, 568 ATH9K_RX_FILTER_PROBEREQ = 0x00000080,
569 ATH9K_RX_FILTER_PSPOLL = 0x00004000,
570 ATH9K_RX_FILTER_PHYERR = 0x00000100, 569 ATH9K_RX_FILTER_PHYERR = 0x00000100,
570 ATH9K_RX_FILTER_MYBEACON = 0x00000200,
571 ATH9K_RX_FILTER_PSPOLL = 0x00004000,
571 ATH9K_RX_FILTER_PHYRADAR = 0x00002000, 572 ATH9K_RX_FILTER_PHYRADAR = 0x00002000,
572}; 573};
573 574
diff --git a/drivers/net/wireless/ath9k/recv.c b/drivers/net/wireless/ath9k/recv.c
index 28ad1d5af129..23b6f54cde5c 100644
--- a/drivers/net/wireless/ath9k/recv.c
+++ b/drivers/net/wireless/ath9k/recv.c
@@ -375,14 +375,15 @@ u32 ath_calcrxfilter(struct ath_softc *sc)
375 if (sc->rx.rxfilter & FIF_CONTROL) 375 if (sc->rx.rxfilter & FIF_CONTROL)
376 rfilt |= ATH9K_RX_FILTER_CONTROL; 376 rfilt |= ATH9K_RX_FILTER_CONTROL;
377 377
378 if (sc->sc_ah->opmode == NL80211_IFTYPE_STATION || 378 if ((sc->sc_ah->opmode == NL80211_IFTYPE_STATION) &&
379 sc->sc_ah->opmode == NL80211_IFTYPE_ADHOC) 379 !(sc->rx.rxfilter & FIF_BCN_PRBRESP_PROMISC))
380 rfilt |= ATH9K_RX_FILTER_MYBEACON;
381 else
380 rfilt |= ATH9K_RX_FILTER_BEACON; 382 rfilt |= ATH9K_RX_FILTER_BEACON;
381 383
382 /* If in HOSTAP mode, want to enable reception of PSPOLL frames 384 /* If in HOSTAP mode, want to enable reception of PSPOLL frames */
383 & beacon frames */
384 if (sc->sc_ah->opmode == NL80211_IFTYPE_AP) 385 if (sc->sc_ah->opmode == NL80211_IFTYPE_AP)
385 rfilt |= (ATH9K_RX_FILTER_BEACON | ATH9K_RX_FILTER_PSPOLL); 386 rfilt |= ATH9K_RX_FILTER_PSPOLL;
386 387
387 return rfilt; 388 return rfilt;
388 389