Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 315194
b: refs/heads/master
c: 870d37f
h: refs/heads/master
v: v3
  • Loading branch information
Michal Kazior authored and Johannes Berg committed Jun 29, 2012
1 parent 12c9889 commit 562d36a
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 15 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: dbbae26afa81320b3315fb4ad755b20f1ff256b4
refs/heads/master: 870d37fc22f3e40f9f23e06c581c8538fc16a2f0
11 changes: 11 additions & 0 deletions trunk/net/mac80211/cfg.c
Original file line number Diff line number Diff line change
Expand Up @@ -2990,6 +2990,16 @@ ieee80211_wiphy_get_channel(struct wiphy *wiphy,
return local->oper_channel;
}

static void ieee80211_set_monitor_enabled(struct wiphy *wiphy, bool enabled)
{
struct ieee80211_local *local = wiphy_priv(wiphy);

if (enabled)
WARN_ON(ieee80211_add_virtual_monitor(local));
else
ieee80211_del_virtual_monitor(local);
}

#ifdef CONFIG_PM
static void ieee80211_set_wakeup(struct wiphy *wiphy, bool enabled)
{
Expand Down Expand Up @@ -3065,6 +3075,7 @@ struct cfg80211_ops mac80211_config_ops = {
.probe_client = ieee80211_probe_client,
.get_channel = ieee80211_wiphy_get_channel,
.set_noack_map = ieee80211_set_noack_map,
.set_monitor_enabled = ieee80211_set_monitor_enabled,
#ifdef CONFIG_PM
.set_wakeup = ieee80211_set_wakeup,
#endif
Expand Down
4 changes: 4 additions & 0 deletions trunk/net/mac80211/ieee80211_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -1485,6 +1485,10 @@ int ieee80211_add_srates_ie(struct ieee80211_sub_if_data *sdata,
int ieee80211_add_ext_srates_ie(struct ieee80211_sub_if_data *sdata,
struct sk_buff *skb, bool need_basic);

/* virtual monitor */
int ieee80211_add_virtual_monitor(struct ieee80211_local *local);
void ieee80211_del_virtual_monitor(struct ieee80211_local *local);

/* channel management */
enum ieee80211_chan_mode {
CHAN_MODE_UNDEFINED,
Expand Down
16 changes: 2 additions & 14 deletions trunk/net/mac80211/iface.c
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ static void ieee80211_set_default_queues(struct ieee80211_sub_if_data *sdata)
sdata->vif.cab_queue = IEEE80211_INVAL_HW_QUEUE;
}

static int ieee80211_add_virtual_monitor(struct ieee80211_local *local)
int ieee80211_add_virtual_monitor(struct ieee80211_local *local)
{
struct ieee80211_sub_if_data *sdata;
int ret;
Expand Down Expand Up @@ -371,7 +371,7 @@ static int ieee80211_add_virtual_monitor(struct ieee80211_local *local)
return 0;
}

static void ieee80211_del_virtual_monitor(struct ieee80211_local *local)
void ieee80211_del_virtual_monitor(struct ieee80211_local *local)
{
struct ieee80211_sub_if_data *sdata;

Expand Down Expand Up @@ -487,12 +487,6 @@ static int ieee80211_do_open(struct net_device *dev, bool coming_up)
break;
}

if (local->monitors == 0 && local->open_count == 0) {
res = ieee80211_add_virtual_monitor(local);
if (res)
goto err_stop;
}

/* must be before the call to ieee80211_configure_filter */
local->monitors++;
if (local->monitors == 1) {
Expand All @@ -507,8 +501,6 @@ static int ieee80211_do_open(struct net_device *dev, bool coming_up)
break;
default:
if (coming_up) {
ieee80211_del_virtual_monitor(local);

res = drv_add_interface(local, sdata);
if (res)
goto err_stop;
Expand Down Expand Up @@ -743,7 +735,6 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
if (local->monitors == 0) {
local->hw.conf.flags &= ~IEEE80211_CONF_MONITOR;
hw_reconf_flags |= IEEE80211_CONF_CHANGE_MONITOR;
ieee80211_del_virtual_monitor(local);
}

ieee80211_adjust_monitor_flags(sdata, -1);
Expand Down Expand Up @@ -817,9 +808,6 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
}
}
spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags);

if (local->monitors == local->open_count && local->monitors > 0)
ieee80211_add_virtual_monitor(local);
}

static int ieee80211_stop(struct net_device *dev)
Expand Down

0 comments on commit 562d36a

Please sign in to comment.