aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/tx.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2012-04-03 08:35:57 -0400
committerJohn W. Linville <linville@tuxdriver.com>2012-04-11 16:23:49 -0400
commit4b6f1dd6a6faf4ed8d209bbd548e78b15e55aee8 (patch)
tree7d79667ca414d70b99cb82a646d1a3c2cc466670 /net/mac80211/tx.c
parent3edaf3e61fda3aa9ff8d38445bf92f2bec23bf63 (diff)
mac80211: add explicit monitor interface if needed
The queue mapping redesign that I'm planning to do will break pure injection unless we handle monitor interfaces explicitly. One possible option would be to have the driver tell mac80211 about monitor mode queues etc., but that would duplicate the API since we already need to have queue assignments handled per virtual interface. So in order to solve this, have a virtual monitor interface that is added whenever all active vifs are monitors. We could also use the state of one of the monitor interfaces, but managing that would be complicated, so allocate separate state. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/tx.c')
-rw-r--r--net/mac80211/tx.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 4109ec7999a3..a8d0188ab408 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1283,8 +1283,11 @@ static bool __ieee80211_tx(struct ieee80211_local *local,
1283 1283
1284 switch (sdata->vif.type) { 1284 switch (sdata->vif.type) {
1285 case NL80211_IFTYPE_MONITOR: 1285 case NL80211_IFTYPE_MONITOR:
1286 sdata = NULL; 1286 sdata = rcu_dereference(local->monitor_sdata);
1287 vif = NULL; 1287 if (sdata)
1288 vif = &sdata->vif;
1289 else
1290 vif = NULL;
1288 break; 1291 break;
1289 case NL80211_IFTYPE_AP_VLAN: 1292 case NL80211_IFTYPE_AP_VLAN:
1290 sdata = container_of(sdata->bss, 1293 sdata = container_of(sdata->bss,