summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/ath/ath9k/rng.c
diff options
context:
space:
mode:
authorKalle Valo <kvalo@codeaurora.org>2017-06-28 22:10:48 +0300
committerKalle Valo <kvalo@codeaurora.org>2017-06-28 22:10:48 +0300
commitfdcbe65d618af080ee23229f0137ffd37f2de36b (patch)
treed94ef2e9b7eab0d1272df38dc0649d53163029fd /drivers/net/wireless/ath/ath9k/rng.c
parent3334c28ec56cfaa7c25931711eb2bda4a92d0712 (diff)
parent6788a3832c706c541d8a8227076eddde47446c8a (diff)
downloadlinux-fdcbe65d618af080ee23229f0137ffd37f2de36b.tar.xz
Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
ath.git patches for 4.13. Major changes: Only bugfixes or cleanups, no new features.
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/rng.c')
-rw-r--r--drivers/net/wireless/ath/ath9k/rng.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath9k/rng.c b/drivers/net/wireless/ath/ath9k/rng.c
index 568b1c6c2b2b..f9d3d6eedd3c 100644
--- a/drivers/net/wireless/ath/ath9k/rng.c
+++ b/drivers/net/wireless/ath/ath9k/rng.c
@@ -24,6 +24,8 @@
#define ATH9K_RNG_BUF_SIZE 320
#define ATH9K_RNG_ENTROPY(x) (((x) * 8 * 10) >> 5) /* quality: 10/32 */
+static DECLARE_WAIT_QUEUE_HEAD(rng_queue);
+
static int ath9k_rng_data_read(struct ath_softc *sc, u32 *buf, u32 buf_size)
{
int i, j;
@@ -85,7 +87,9 @@ static int ath9k_rng_kthread(void *data)
ATH9K_RNG_BUF_SIZE);
if (unlikely(!bytes_read)) {
delay = ath9k_rng_delay_get(++fail_stats);
- msleep_interruptible(delay);
+ wait_event_interruptible_timeout(rng_queue,
+ kthread_should_stop(),
+ msecs_to_jiffies(delay));
continue;
}
@@ -120,6 +124,8 @@ void ath9k_rng_start(struct ath_softc *sc)
void ath9k_rng_stop(struct ath_softc *sc)
{
- if (sc->rng_task)
+ if (sc->rng_task) {
kthread_stop(sc->rng_task);
+ sc->rng_task = NULL;
+ }
}