summaryrefslogtreecommitdiff
path: root/drivers/staging/vt6655/power.c
diff options
context:
space:
mode:
authorMalcolm Priestley <tvboxspy@gmail.com>2015-06-21 13:05:55 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-07-15 05:26:35 +0300
commit3e7921a09407743c52498c188adfa56156d60fc3 (patch)
tree43e88bc3e77e2e31f8efad73e9d54a5892463b84 /drivers/staging/vt6655/power.c
parent4fdae0d9fee32c1cbffffb1a246fcc10ed5b1085 (diff)
downloadlinux-3e7921a09407743c52498c188adfa56156d60fc3.tar.xz
staging: vt6655: Correct listen interval TBTT wake up
PSbIsNextTBTTWakeUp is called at beacon intervals. The should listen to next beacon on count down of wake_up_count == 1. This restores this back to vendors code but modified for mac80211. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/vt6655/power.c')
-rw-r--r--drivers/staging/vt6655/power.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/staging/vt6655/power.c b/drivers/staging/vt6655/power.c
index be3c4e949b6a..06e6b9d871c4 100644
--- a/drivers/staging/vt6655/power.c
+++ b/drivers/staging/vt6655/power.c
@@ -157,10 +157,18 @@ PSbIsNextTBTTWakeUp(
struct ieee80211_conf *conf = &hw->conf;
bool bWakeUp = false;
- if (conf->listen_interval == 1) {
- /* Turn on wake up to listen next beacon */
- MACvRegBitsOn(pDevice->PortOffset, MAC_REG_PSCTL, PSCTL_LNBCN);
- bWakeUp = true;
+ if (conf->listen_interval > 1) {
+ if (!pDevice->wake_up_count)
+ pDevice->wake_up_count = conf->listen_interval;
+
+ --pDevice->wake_up_count;
+
+ if (pDevice->wake_up_count == 1) {
+ /* Turn on wake up to listen next beacon */
+ MACvRegBitsOn(pDevice->PortOffset,
+ MAC_REG_PSCTL, PSCTL_LNBCN);
+ bWakeUp = true;
+ }
}
return bWakeUp;