diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/recv.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/recv.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c index c5e7af4f51ab..9c166f3804ab 100644 --- a/drivers/net/wireless/ath/ath9k/recv.c +++ b/drivers/net/wireless/ath/ath9k/recv.c | |||
@@ -454,8 +454,8 @@ u32 ath_calcrxfilter(struct ath_softc *sc) | |||
454 | else | 454 | else |
455 | rfilt |= ATH9K_RX_FILTER_BEACON; | 455 | rfilt |= ATH9K_RX_FILTER_BEACON; |
456 | 456 | ||
457 | if ((AR_SREV_9280_10_OR_LATER(sc->sc_ah) || | 457 | if ((AR_SREV_9280_20_OR_LATER(sc->sc_ah) || |
458 | AR_SREV_9285_10_OR_LATER(sc->sc_ah)) && | 458 | AR_SREV_9285_12_OR_LATER(sc->sc_ah)) && |
459 | (sc->sc_ah->opmode == NL80211_IFTYPE_AP) && | 459 | (sc->sc_ah->opmode == NL80211_IFTYPE_AP) && |
460 | (sc->rx.rxfilter & FIF_PSPOLL)) | 460 | (sc->rx.rxfilter & FIF_PSPOLL)) |
461 | rfilt |= ATH9K_RX_FILTER_PSPOLL; | 461 | rfilt |= ATH9K_RX_FILTER_PSPOLL; |
@@ -977,7 +977,11 @@ static void ath9k_process_rssi(struct ath_common *common, | |||
977 | * at least one sdata of a wiphy on mac80211 but with ath9k virtual | 977 | * at least one sdata of a wiphy on mac80211 but with ath9k virtual |
978 | * wiphy you'd have to iterate over every wiphy and each sdata. | 978 | * wiphy you'd have to iterate over every wiphy and each sdata. |
979 | */ | 979 | */ |
980 | sta = ieee80211_find_sta_by_hw(hw, hdr->addr2); | 980 | if (is_multicast_ether_addr(hdr->addr1)) |
981 | sta = ieee80211_find_sta_by_ifaddr(hw, hdr->addr2, NULL); | ||
982 | else | ||
983 | sta = ieee80211_find_sta_by_ifaddr(hw, hdr->addr2, hdr->addr1); | ||
984 | |||
981 | if (sta) { | 985 | if (sta) { |
982 | an = (struct ath_node *) sta->drv_priv; | 986 | an = (struct ath_node *) sta->drv_priv; |
983 | if (rx_stats->rs_rssi != ATH9K_RSSI_BAD && | 987 | if (rx_stats->rs_rssi != ATH9K_RSSI_BAD && |