summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland Vossen <rvossen@broadcom.com>2011-02-23 12:48:52 +0100
committerGreg Kroah-Hartman <gregkh@suse.de>2011-02-23 14:08:05 -0800
commite34870f828f8d9b7e2205c632cbc135a76f7dde6 (patch)
tree045271c983378a0dbf9241bc430e285f76ff404e
parent55182a10063c40eda4dc5afecff712e5c3617ffc (diff)
staging: brcm80211: removed locks around Mac80211 calls
A spinlock was acquired prior to calling the Mac80211 functions ieee80211_wake_queues() and ieee80211_stop_queues() and Cfg80211 functions wiphy_rfkill_set_hw_state() and wiphy_rfkill_start_polling(). This is not required and could even lead to instability. Therefore the locks were removed. Signed-off-by: Roland Vossen <rvossen@broadcom.com> Reviewed-by: Arend van Spriel <arend@broadcom.com> Reviewed-by: Brett Rudley <brudley@broadcom.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/staging/brcm80211/brcmsmac/wl_mac80211.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c b/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
index 3109e3da31d1..791329cbc8a6 100644
--- a/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
+++ b/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
@@ -171,9 +171,7 @@ static int wl_ops_start(struct ieee80211_hw *hw)
WL_NONE("%s : Initial channel: %d\n", __func__, curchan->hw_value);
*/
- WL_LOCK(wl);
ieee80211_wake_queues(hw);
- WL_UNLOCK(wl);
blocked = wl_rfkill_set_hw_state(wl);
if (!blocked)
wiphy_rfkill_stop_polling(wl->pub->ieee_hw->wiphy);
@@ -185,9 +183,8 @@ static void wl_ops_stop(struct ieee80211_hw *hw)
{
struct wl_info *wl = hw->priv;
ASSERT(wl);
- WL_LOCK(wl);
ieee80211_stop_queues(hw);
- WL_UNLOCK(wl);
+ return;
}
static int
@@ -1988,8 +1985,10 @@ bool wl_rfkill_set_hw_state(struct wl_info *wl)
WL_NONE("%s: update hw state: blocked=%s\n", __func__,
blocked ? "true" : "false");
+ WL_UNLOCK(wl);
wiphy_rfkill_set_hw_state(wl->pub->ieee_hw->wiphy, blocked);
if (blocked)
wiphy_rfkill_start_polling(wl->pub->ieee_hw->wiphy);
+ WL_LOCK(wl);
return blocked;
}