summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Kemnade <andreas@kemnade.info>2016-01-30 18:01:53 +0100
committerKalle Valo <kvalo@codeaurora.org>2016-02-06 14:02:11 +0200
commit57954b94cad77c3253beca805cf493861c7d92b5 (patch)
tree2c2acb2c091944ed3ada5aeaa105a04a415d8b91
parentfae4f9f78ab11937bc45b0f3625efe2e35aed510 (diff)
downloadlwn-57954b94cad77c3253beca805cf493861c7d92b5.tar.gz
lwn-57954b94cad77c3253beca805cf493861c7d92b5.zip
libertas: do not confirm sleep if commands are pending
If the main thread gets one PS AWAKE event and one PS SLEEP event in one iteration over event_fifo there will never be checks for commands to be processed, since psstate will always be PS_STATE_SLEEP or PS_STATE_PRE_SLEEP Signed-off-by: Andreas Kemnade <andreas@kemnade.info> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-rw-r--r--drivers/net/wireless/marvell/libertas/cmdresp.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/wireless/marvell/libertas/cmdresp.c b/drivers/net/wireless/marvell/libertas/cmdresp.c
index 701125f9b060..c95bf6dc9522 100644
--- a/drivers/net/wireless/marvell/libertas/cmdresp.c
+++ b/drivers/net/wireless/marvell/libertas/cmdresp.c
@@ -257,6 +257,10 @@ int lbs_process_event(struct lbs_private *priv, u32 event)
"EVENT: in FULL POWER mode, ignoring PS_SLEEP\n");
break;
}
+ if (!list_empty(&priv->cmdpendingq)) {
+ lbs_deb_cmd("EVENT: commands in queue, do not sleep\n");
+ break;
+ }
priv->psstate = PS_STATE_PRE_SLEEP;
lbs_ps_confirm_sleep(priv);