Skip to content

Commit

Permalink
ath9k: Configure RX filter for multi-BSSID broadcast
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jouni Malinen authored and John W. Linville committed Mar 5, 2009
1 parent c52f33d commit b93bce2
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 0 deletions.
1 change: 1 addition & 0 deletions drivers/net/wireless/ath9k/mac.h
Original file line number Diff line number Diff line change
Expand Up @@ -570,6 +570,7 @@ enum ath9k_rx_filter {
ATH9K_RX_FILTER_MYBEACON = 0x00000200,
ATH9K_RX_FILTER_PSPOLL = 0x00004000,
ATH9K_RX_FILTER_PHYRADAR = 0x00002000,
ATH9K_RX_FILTER_MCAST_BCAST_ALL = 0x00008000,
};

#define ATH9K_RATESERIES_RTS_CTS 0x0001
Expand Down
8 changes: 8 additions & 0 deletions drivers/net/wireless/ath9k/recv.c
Original file line number Diff line number Diff line change
Expand Up @@ -407,6 +407,14 @@ u32 ath_calcrxfilter(struct ath_softc *sc)
if (sc->sc_ah->opmode == NL80211_IFTYPE_AP)
rfilt |= ATH9K_RX_FILTER_PSPOLL;

if (sc->sec_wiphy) {
/* 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
*/
rfilt |= ATH9K_RX_FILTER_MCAST_BCAST_ALL;
}

return rfilt;

#undef RX_FILTER_PRESERVE
Expand Down

0 comments on commit b93bce2

Please sign in to comment.