diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-05-28 07:01:53 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-05-29 03:11:56 -0400 |
commit | 31eba5bc56a9324f056d28569a4f89f39c1c3f70 (patch) | |
tree | b070a7f1871763d66562678ff23daa4613a3eab9 /net/mac80211/cfg.c | |
parent | e057d3c31bdf87616b415c4b2cbf7310f54b9219 (diff) |
mac80211: support active monitor interfaces
Support them only if the driver advertises support for them via
IEEE80211_HW_SUPPORTS_ACTIVE_MONITOR. Unlike normal monitor interfaces,
they are added to the driver, along with their MAC address.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/cfg.c')
-rw-r--r-- | net/mac80211/cfg.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index 232edf78d5a9..9034da16cf1b 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c | |||
@@ -73,16 +73,19 @@ static int ieee80211_change_iface(struct wiphy *wiphy, | |||
73 | struct ieee80211_local *local = sdata->local; | 73 | struct ieee80211_local *local = sdata->local; |
74 | 74 | ||
75 | if (ieee80211_sdata_running(sdata)) { | 75 | if (ieee80211_sdata_running(sdata)) { |
76 | u32 mask = MONITOR_FLAG_COOK_FRAMES | | ||
77 | MONITOR_FLAG_ACTIVE; | ||
78 | |||
76 | /* | 79 | /* |
77 | * Prohibit MONITOR_FLAG_COOK_FRAMES to be | 80 | * Prohibit MONITOR_FLAG_COOK_FRAMES and |
78 | * changed while the interface is up. | 81 | * MONITOR_FLAG_ACTIVE to be changed while the |
82 | * interface is up. | ||
79 | * Else we would need to add a lot of cruft | 83 | * Else we would need to add a lot of cruft |
80 | * to update everything: | 84 | * to update everything: |
81 | * cooked_mntrs, monitor and all fif_* counters | 85 | * cooked_mntrs, monitor and all fif_* counters |
82 | * reconfigure hardware | 86 | * reconfigure hardware |
83 | */ | 87 | */ |
84 | if ((*flags & MONITOR_FLAG_COOK_FRAMES) != | 88 | if ((*flags & mask) != (sdata->u.mntr_flags & mask)) |
85 | (sdata->u.mntr_flags & MONITOR_FLAG_COOK_FRAMES)) | ||
86 | return -EBUSY; | 89 | return -EBUSY; |
87 | 90 | ||
88 | ieee80211_adjust_monitor_flags(sdata, -1); | 91 | ieee80211_adjust_monitor_flags(sdata, -1); |