summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorIdo Yariv <ido@wizery.com>2014-03-24 08:55:45 +0100
committerJohannes Berg <johannes.berg@intel.com>2014-04-09 10:47:58 +0200
commit7b8a9cdd1f959c7166611fcc58ac91e8409c10ab (patch)
treeb9c05950f518f47bcfc62421bce7a899b093f82b /net
parentmac80211: fix software remain-on-channel implementation (diff)
downloadlinux-7b8a9cdd1f959c7166611fcc58ac91e8409c10ab.tar.xz
linux-7b8a9cdd1f959c7166611fcc58ac91e8409c10ab.zip
mac80211: Disable SMPS for the monitor interface
All antennas should be operational when monitoring to maximize reception. Signed-off-by: Ido Yariv <idox.yariv@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net')
-rw-r--r--net/mac80211/chan.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/net/mac80211/chan.c b/net/mac80211/chan.c
index bd1fd8ea5105..68bee813dfad 100644
--- a/net/mac80211/chan.c
+++ b/net/mac80211/chan.c
@@ -492,6 +492,13 @@ void ieee80211_recalc_smps_chanctx(struct ieee80211_local *local,
rx_chains_static = max(rx_chains_static, needed_static);
rx_chains_dynamic = max(rx_chains_dynamic, needed_dynamic);
}
+
+ /* Disable SMPS for the monitor interface */
+ sdata = rcu_dereference(local->monitor_sdata);
+ if (sdata &&
+ rcu_access_pointer(sdata->vif.chanctx_conf) == &chanctx->conf)
+ rx_chains_dynamic = rx_chains_static = local->rx_chains;
+
rcu_read_unlock();
if (!local->use_chanctx) {