diff options
author | Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com> | 2011-08-18 23:32:14 +0200 |
---|---|---|
committer | Philippe LANGLAIS <philippe.langlais@stericsson.com> | 2011-10-13 10:04:43 +0200 |
commit | 31a59450487a189e6b148364c5965ad7f1982b41 (patch) | |
tree | 0f5003aa1a04652600a8869af81603ebbc32f4bd /drivers/staging/cw1200/ap.c | |
parent | 5b48061fc3276dadaceeff6c152e8f5b0f250c2e (diff) |
cw1200: do not allow suspend when it is useless.
Do not allow entering suspend state if firmware is polling
for multicasts and when scanning.
+ bugfix: remove blocking calls from wow_suspend() callback
to reduce suspend time and make sure watchdog is not triggered.
Change-Id: I69196fda25b56d01b90311582705ba586759ae35
Signed-off-by: Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/29079
Reviewed-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/33511
Reviewed-by: Philippe LANGLAIS <philippe.langlais@stericsson.com>
Diffstat (limited to 'drivers/staging/cw1200/ap.c')
-rwxr-xr-x | drivers/staging/cw1200/ap.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/staging/cw1200/ap.c b/drivers/staging/cw1200/ap.c index 39c11172544..e4bf98d46ed 100755 --- a/drivers/staging/cw1200/ap.c +++ b/drivers/staging/cw1200/ap.c @@ -539,6 +539,13 @@ void cw1200_suspend_resume(struct cw1200_common *priv, if (arg->stop) { priv->tx_multicast = false; } else { + /* Firmware sends this indication every DTIM if there + * is a STA in powersave connected. There is no reason + * to suspend, following wakeup will consume much more + * power than could be saved. */ + cw1200_pm_stay_awake(&priv->pm_state, + priv->join_dtim_period * + (priv->beacon_int + 20) * HZ / 1024); priv->tx_multicast = priv->aid0_bit_set && priv->buffered_multicasts; if (priv->tx_multicast) @@ -652,6 +659,7 @@ static int cw1200_start_ap(struct cw1200_common *priv) .ssidLength = priv->ssid_length, }; priv->beacon_int = conf->beacon_int; + priv->join_dtim_period = conf->dtim_period; memcpy(&start.ssid[0], priv->ssid, start.ssidLength); |