diff options
author | Arend van Spriel <arend@broadcom.com> | 2014-03-20 05:18:01 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-03-20 11:55:40 -0400 |
commit | 58e9df462fd70a1862378beb46b312f1f6bca94f (patch) | |
tree | 981379ee331ebbcdcc47fddb790f60d0d7a94394 | |
parent | d23536796011cbeeb93fc866446800c52deb5603 (diff) |
brcmfmac: reinit watchdog completion after handling watchdog
The watchdog thread waits on completion that is set from a timer. As
the completion is count based this could mean that on a busy system
the watchdog is handled multiple times with a very short interval.
This is not the intended behaviour. After handling the watchdog it
should wait for the next timer expiry. This is accomplished by
reinitializing the completion.
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c index 859eddd526ef..47a6f3957b7f 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | |||
@@ -3994,6 +3994,7 @@ brcmf_sdio_watchdog_thread(void *data) | |||
3994 | brcmf_sdio_bus_watchdog(bus); | 3994 | brcmf_sdio_bus_watchdog(bus); |
3995 | /* Count the tick for reference */ | 3995 | /* Count the tick for reference */ |
3996 | bus->sdcnt.tickcnt++; | 3996 | bus->sdcnt.tickcnt++; |
3997 | reinit_completion(&bus->watchdog_wait); | ||
3997 | } else | 3998 | } else |
3998 | break; | 3999 | break; |
3999 | } | 4000 | } |