summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2011-07-11 10:45:33 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:38:48 -0800
commita56ed73c01102a78e15ca88a8771bc86b3fde8e3 (patch)
tree6d26e800275a675665e03b23644215921b0be65e
parentb3a70c4c20fd23f1e1a5d808c9bc94c58539ef33 (diff)
net: wireless: bcmdhd: Fix CFG80211 suspend/resume if interface is down
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
-rw-r--r--drivers/net/wireless/bcmdhd/wl_cfg80211.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/net/wireless/bcmdhd/wl_cfg80211.c b/drivers/net/wireless/bcmdhd/wl_cfg80211.c
index 3196da3559b0..d9c7e6587698 100644
--- a/drivers/net/wireless/bcmdhd/wl_cfg80211.c
+++ b/drivers/net/wireless/bcmdhd/wl_cfg80211.c
@@ -2594,10 +2594,16 @@ wl_cfg80211_set_bitrate_mask(struct wiphy *wiphy, struct net_device *dev,
static s32 wl_cfg80211_resume(struct wiphy *wiphy)
{
+ struct wl_priv *wl = WL_PRIV_GET();
s32 err = 0;
- CHECK_SYS_UP();
- wl_invoke_iscan(WL_PRIV_GET());
+ if (unlikely(!test_bit(WL_STATUS_READY, &wl->status))) {
+ WL_INFO(("device is not ready : status (%d)\n",
+ (int)wl->status));
+ return 0;
+ }
+
+ wl_invoke_iscan(wl);
return err;
}
@@ -2611,7 +2617,11 @@ static s32 wl_cfg80211_suspend(struct wiphy *wiphy)
struct wl_priv *wl = WL_PRIV_GET();
s32 err = 0;
- CHECK_SYS_UP();
+ if (unlikely(!test_bit(WL_STATUS_READY, &wl->status))) {
+ WL_INFO(("device is not ready : status (%d)\n",
+ (int)wl->status));
+ return 0;
+ }
set_bit(WL_STATUS_SCAN_ABORTING, &wl->status);
wl_term_iscan(wl);