diff options
author | Sujith Manoharan <c_manoha@qca.qualcomm.com> | 2014-09-05 06:33:18 +0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-09-09 23:27:21 +0400 |
commit | fce344309944c61d748eeef530b49764f90b05bb (patch) | |
tree | c99df545910371ef1458fd0dbe978f02f8094562 /drivers/net/wireless/ath/ath9k/main.c | |
parent | 3d1132d008e635c770d625f3908f201892634afe (diff) | |
download | linux-fce344309944c61d748eeef530b49764f90b05bb.tar.xz |
ath9k: Fix RX filters in channel contexts
Maintain the RX filter on a per-channel-context
basis and not globally. Not doing so was resulting
in incorrect filter calculation.
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/main.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/main.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index 18e5e91cf7c9..a2028590cf24 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c @@ -1427,7 +1427,10 @@ static void ath9k_configure_filter(struct ieee80211_hw *hw, changed_flags &= SUPPORTED_FILTERS; *total_flags &= SUPPORTED_FILTERS; - sc->rx.rxfilter = *total_flags; + spin_lock_bh(&sc->chan_lock); + sc->cur_chan->rxfilter = *total_flags; + spin_unlock_bh(&sc->chan_lock); + ath9k_ps_wakeup(sc); rfilt = ath_calcrxfilter(sc); ath9k_hw_setrxfilter(sc->sc_ah, rfilt); |