aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath9k
diff options
context:
space:
mode:
authorJouni Malinen <jouni.malinen@atheros.com>2009-03-03 12:23:30 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-03-05 14:39:45 -0500
commitb93bce2a5e8fd5c9f5d8c982efd6bca71a9b83f3 (patch)
tree939c17bf0c6c9741aa078611b9ae610d6f36fe29 /drivers/net/wireless/ath9k
parentc52f33d05e5f8d59f02722fbc308f5f391575ca5 (diff)
ath9k: Configure RX filter for multi-BSSID broadcast
Allow RX filter to pass through all broadcast/multicast frames (i.e., no BSSID filtering) if virtual interfaces are used. Software filtering will be used in this case to drop broadcast/multicast frames for foreign BSSIDs. Signed-off-by: Jouni Malinen <jouni.malinen@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.h1
-rw-r--r--drivers/net/wireless/ath9k/recv.c8
2 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath9k/mac.h b/drivers/net/wireless/ath9k/mac.h
index fbd2d6ad2a5..37e3948ddc2 100644
--- a/drivers/net/wireless/ath9k/mac.h
+++ b/drivers/net/wireless/ath9k/mac.h
@@ -570,6 +570,7 @@ enum ath9k_rx_filter {
570 ATH9K_RX_FILTER_MYBEACON = 0x00000200, 570 ATH9K_RX_FILTER_MYBEACON = 0x00000200,
571 ATH9K_RX_FILTER_PSPOLL = 0x00004000, 571 ATH9K_RX_FILTER_PSPOLL = 0x00004000,
572 ATH9K_RX_FILTER_PHYRADAR = 0x00002000, 572 ATH9K_RX_FILTER_PHYRADAR = 0x00002000,
573 ATH9K_RX_FILTER_MCAST_BCAST_ALL = 0x00008000,
573}; 574};
574 575
575#define ATH9K_RATESERIES_RTS_CTS 0x0001 576#define ATH9K_RATESERIES_RTS_CTS 0x0001
diff --git a/drivers/net/wireless/ath9k/recv.c b/drivers/net/wireless/ath9k/recv.c
index a9a55df500a..3df5c782436 100644
--- a/drivers/net/wireless/ath9k/recv.c
+++ b/drivers/net/wireless/ath9k/recv.c
@@ -407,6 +407,14 @@ u32 ath_calcrxfilter(struct ath_softc *sc)
407 if (sc->sc_ah->opmode == NL80211_IFTYPE_AP) 407 if (sc->sc_ah->opmode == NL80211_IFTYPE_AP)
408 rfilt |= ATH9K_RX_FILTER_PSPOLL; 408 rfilt |= ATH9K_RX_FILTER_PSPOLL;
409 409
410 if (sc->sec_wiphy) {
411 /* TODO: only needed if more than one BSSID is in use in
412 * station/adhoc mode */
413 /* TODO: for older chips, may need to add ATH9K_RX_FILTER_PROM
414 */
415 rfilt |= ATH9K_RX_FILTER_MCAST_BCAST_ALL;
416 }
417
410 return rfilt; 418 return rfilt;
411 419
412#undef RX_FILTER_PRESERVE 420#undef RX_FILTER_PRESERVE