Skip to content

Commit

Permalink
mac80211: use spin_lock_bh() for tim_lock
Browse files Browse the repository at this point in the history
There's no need to use _irqsave() as the lock
is never used in interrupt context.

This also fixes a problem in the iwlwifi MVM
driver that calls spin_unlock_bh() within its
set_tim() callback.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
  • Loading branch information
Johannes Berg committed Feb 15, 2013
1 parent 441a33b commit 65f704a
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 7 deletions.
5 changes: 2 additions & 3 deletions net/mac80211/sta_info.c
Original file line number Diff line number Diff line change
Expand Up @@ -571,7 +571,6 @@ void sta_info_recalc_tim(struct sta_info *sta)
{
struct ieee80211_local *local = sta->local;
struct ps_data *ps;
unsigned long flags;
bool indicate_tim = false;
u8 ignore_for_tim = sta->sta.uapsd_queues;
int ac;
Expand Down Expand Up @@ -628,7 +627,7 @@ void sta_info_recalc_tim(struct sta_info *sta)
}

done:
spin_lock_irqsave(&local->tim_lock, flags);
spin_lock_bh(&local->tim_lock);

if (indicate_tim)
__bss_tim_set(ps->tim, id);
Expand All @@ -641,7 +640,7 @@ void sta_info_recalc_tim(struct sta_info *sta)
local->tim_in_locked_section = false;
}

spin_unlock_irqrestore(&local->tim_lock, flags);
spin_unlock_bh(&local->tim_lock);
}

static bool sta_info_buffer_expired(struct sta_info *sta, struct sk_buff *skb)
Expand Down
6 changes: 2 additions & 4 deletions net/mac80211/tx.c
Original file line number Diff line number Diff line change
Expand Up @@ -2364,11 +2364,9 @@ static int ieee80211_beacon_add_tim(struct ieee80211_sub_if_data *sdata,
if (local->tim_in_locked_section) {
__ieee80211_beacon_add_tim(sdata, ps, skb);
} else {
unsigned long flags;

spin_lock_irqsave(&local->tim_lock, flags);
spin_lock(&local->tim_lock);
__ieee80211_beacon_add_tim(sdata, ps, skb);
spin_unlock_irqrestore(&local->tim_lock, flags);
spin_unlock(&local->tim_lock);
}

return 0;
Expand Down

0 comments on commit 65f704a

Please sign in to comment.