Skip to content

Commit

Permalink
Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/…
Browse files Browse the repository at this point in the history
…git/jberg/mac80211
  • Loading branch information
John W. Linville committed Apr 8, 2013
2 parents 69a2bac + 62a40a1 commit 8cab24f
Showing 1 changed file with 19 additions and 8 deletions.
27 changes: 19 additions & 8 deletions net/mac80211/iface.c
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ void ieee80211_recalc_txpower(struct ieee80211_sub_if_data *sdata)
ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_TXPOWER);
}

u32 ieee80211_idle_off(struct ieee80211_local *local)
static u32 __ieee80211_idle_off(struct ieee80211_local *local)
{
if (!(local->hw.conf.flags & IEEE80211_CONF_IDLE))
return 0;
Expand All @@ -87,7 +87,7 @@ u32 ieee80211_idle_off(struct ieee80211_local *local)
return IEEE80211_CONF_CHANGE_IDLE;
}

static u32 ieee80211_idle_on(struct ieee80211_local *local)
static u32 __ieee80211_idle_on(struct ieee80211_local *local)
{
if (local->hw.conf.flags & IEEE80211_CONF_IDLE)
return 0;
Expand All @@ -98,16 +98,18 @@ static u32 ieee80211_idle_on(struct ieee80211_local *local)
return IEEE80211_CONF_CHANGE_IDLE;
}

void ieee80211_recalc_idle(struct ieee80211_local *local)
static u32 __ieee80211_recalc_idle(struct ieee80211_local *local,
bool force_active)
{
bool working = false, scanning, active;
unsigned int led_trig_start = 0, led_trig_stop = 0;
struct ieee80211_roc_work *roc;
u32 change;

lockdep_assert_held(&local->mtx);

active = !list_empty(&local->chanctx_list) || local->monitors;
active = force_active ||
!list_empty(&local->chanctx_list) ||
local->monitors;

if (!local->ops->remain_on_channel) {
list_for_each_entry(roc, &local->roc_list, list) {
Expand All @@ -132,9 +134,18 @@ void ieee80211_recalc_idle(struct ieee80211_local *local)
ieee80211_mod_tpt_led_trig(local, led_trig_start, led_trig_stop);

if (working || scanning || active)
change = ieee80211_idle_off(local);
else
change = ieee80211_idle_on(local);
return __ieee80211_idle_off(local);
return __ieee80211_idle_on(local);
}

u32 ieee80211_idle_off(struct ieee80211_local *local)
{
return __ieee80211_recalc_idle(local, true);
}

void ieee80211_recalc_idle(struct ieee80211_local *local)
{
u32 change = __ieee80211_recalc_idle(local, false);
if (change)
ieee80211_hw_config(local, change);
}
Expand Down

0 comments on commit 8cab24f

Please sign in to comment.