aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArend van Spriel <arend@broadcom.com>2014-03-20 05:18:01 -0400
committerJohn W. Linville <linville@tuxdriver.com>2014-03-20 11:55:40 -0400
commit58e9df462fd70a1862378beb46b312f1f6bca94f (patch)
tree981379ee331ebbcdcc47fddb790f60d0d7a94394
parentd23536796011cbeeb93fc866446800c52deb5603 (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.c1
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 }