forked from Minki/linux
ath9k: calcrxfilter should take multiple VIFs into account.
When there is more than one VIF, listen for all beacons and ensure ATH9K_RX_FILTER_MCAST_BCAST_ALL is set. Signed-off-by: Ben Greear <greearb@candelatech.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
040e539e8e
commit
cfda669519
@ -448,6 +448,7 @@ u32 ath_calcrxfilter(struct ath_softc *sc)
|
|||||||
rfilt |= ATH9K_RX_FILTER_CONTROL;
|
rfilt |= ATH9K_RX_FILTER_CONTROL;
|
||||||
|
|
||||||
if ((sc->sc_ah->opmode == NL80211_IFTYPE_STATION) &&
|
if ((sc->sc_ah->opmode == NL80211_IFTYPE_STATION) &&
|
||||||
|
(sc->nvifs <= 1) &&
|
||||||
!(sc->rx.rxfilter & FIF_BCN_PRBRESP_PROMISC))
|
!(sc->rx.rxfilter & FIF_BCN_PRBRESP_PROMISC))
|
||||||
rfilt |= ATH9K_RX_FILTER_MYBEACON;
|
rfilt |= ATH9K_RX_FILTER_MYBEACON;
|
||||||
else
|
else
|
||||||
@ -462,9 +463,8 @@ u32 ath_calcrxfilter(struct ath_softc *sc)
|
|||||||
if (conf_is_ht(&sc->hw->conf))
|
if (conf_is_ht(&sc->hw->conf))
|
||||||
rfilt |= ATH9K_RX_FILTER_COMP_BAR;
|
rfilt |= ATH9K_RX_FILTER_COMP_BAR;
|
||||||
|
|
||||||
if (sc->sec_wiphy || (sc->rx.rxfilter & FIF_OTHER_BSS)) {
|
if (sc->sec_wiphy || (sc->nvifs > 1) ||
|
||||||
/* TODO: only needed if more than one BSSID is in use in
|
(sc->rx.rxfilter & FIF_OTHER_BSS)) {
|
||||||
* station/adhoc mode */
|
|
||||||
/* The following may also be needed for other older chips */
|
/* The following may also be needed for other older chips */
|
||||||
if (sc->sc_ah->hw_version.macVersion == AR_SREV_VERSION_9160)
|
if (sc->sc_ah->hw_version.macVersion == AR_SREV_VERSION_9160)
|
||||||
rfilt |= ATH9K_RX_FILTER_PROM;
|
rfilt |= ATH9K_RX_FILTER_PROM;
|
||||||
|
Loading…
Reference in New Issue
Block a user