diff options
author | Malcolm Priestley <tvboxspy@gmail.com> | 2015-06-21 11:05:55 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-07-14 19:26:35 -0700 |
commit | 3e7921a09407743c52498c188adfa56156d60fc3 (patch) | |
tree | 43e88bc3e77e2e31f8efad73e9d54a5892463b84 /drivers | |
parent | 4fdae0d9fee32c1cbffffb1a246fcc10ed5b1085 (diff) | |
download | op-kernel-dev-3e7921a09407743c52498c188adfa56156d60fc3.zip op-kernel-dev-3e7921a09407743c52498c188adfa56156d60fc3.tar.gz |
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')
-rw-r--r-- | drivers/staging/vt6655/device.h | 1 | ||||
-rw-r--r-- | drivers/staging/vt6655/power.c | 16 |
2 files changed, 13 insertions, 4 deletions
diff --git a/drivers/staging/vt6655/device.h b/drivers/staging/vt6655/device.h index 5cf1b33..6aebb49 100644 --- a/drivers/staging/vt6655/device.h +++ b/drivers/staging/vt6655/device.h @@ -403,6 +403,7 @@ struct vnt_private { unsigned char abyEEPROM[EEP_MAX_CONTEXT_SIZE]; /* unsigned long alignment */ unsigned short wBeaconInterval; + u16 wake_up_count; struct work_struct interrupt_work; diff --git a/drivers/staging/vt6655/power.c b/drivers/staging/vt6655/power.c index be3c4e9..06e6b9d 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; |