diff options
author | Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com> | 2012-02-29 15:15:42 +0100 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2012-05-22 11:06:51 +0200 |
commit | ddf179a33044c1b6b9dabce1fc166335f7a53a75 (patch) | |
tree | 02fb0c50073eb5cd556dad474266ee7b8faf3b28 | |
parent | b85ef3fd664e8c73e9979e56af72ae13b44eadd6 (diff) |
cw1200: Fix for false negatives in suspend decision.
There was a race between PM and BH code which sometimes leaded to false
negatives in system suspend decision. This race is fixed by this patch.
ST-Ericsoon ID: 419543
Change-ID: I607a37c1046ea9737b625da65e04be0f42901aaa
Signed-off-by: Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/50440
Reviewed-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com>
Tested-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com>
-rw-r--r-- | drivers/staging/cw1200/pm.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/staging/cw1200/pm.c b/drivers/staging/cw1200/pm.c index f542e7d51f6..d95e5d3dc9e 100644 --- a/drivers/staging/cw1200/pm.c +++ b/drivers/staging/cw1200/pm.c @@ -297,7 +297,11 @@ int cw1200_wow_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) /* Lock TX. */ wsm_lock_tx_async(priv); - if (priv->hw_bufs_used) + + /* Wait to avoid possible race with bh code. + * But do not wait too long... */ + if (wait_event_timeout(priv->bh_evt_wq, + !priv->hw_bufs_used, HZ / 10) <= 0) goto revert2; /* Set UDP filter */ |