diff options
author | Tim Harvey <tharvey@gateworks.com> | 2014-04-21 16:14:56 -0700 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-04-22 14:09:37 -0400 |
commit | 3a758134e66ca74a9df792616b5288b2fa2cfd7f (patch) | |
tree | 368a5ae3ebd1dfbf016aff9934ee61fc0dc43c84 /drivers/net/wireless | |
parent | 328e203fc35f0b4f6df1c4943f74cf553bcc04f8 (diff) |
ath9k: fix possible hang on flush
If a flush is requested, make sure to clear the descriptor once we've
processed it.
This resolves a hang that will occur if all RX descriptors are full when a
flush is requested.
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Acked-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/recv.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c index 6c9accdb52e..e77a2536b81 100644 --- a/drivers/net/wireless/ath/ath9k/recv.c +++ b/drivers/net/wireless/ath/ath9k/recv.c @@ -1113,14 +1113,13 @@ requeue_drop_frag: } requeue: list_add_tail(&bf->list, &sc->rx.rxbuf); - if (flush) - continue; if (edma) { ath_rx_edma_buf_link(sc, qtype); } else { ath_rx_buf_relink(sc, bf); - ath9k_hw_rxena(ah); + if (!flush) + ath9k_hw_rxena(ah); } } while (1); |