aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Harvey <tharvey@gateworks.com>2014-04-21 19:14:56 -0400
committerJohn W. Linville <linville@tuxdriver.com>2014-04-22 14:09:37 -0400
commit3a758134e66ca74a9df792616b5288b2fa2cfd7f (patch)
tree368a5ae3ebd1dfbf016aff9934ee61fc0dc43c84
parent328e203fc35f0b4f6df1c4943f74cf553bcc04f8 (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>
-rw-r--r--drivers/net/wireless/ath/ath9k/recv.c5
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 6c9accdb52e4..e77a2536b818 100644
--- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -1113,14 +1113,13 @@ requeue_drop_frag:
1113 } 1113 }
1114requeue: 1114requeue:
1115 list_add_tail(&bf->list, &sc->rx.rxbuf); 1115 list_add_tail(&bf->list, &sc->rx.rxbuf);
1116 if (flush)
1117 continue;
1118 1116
1119 if (edma) { 1117 if (edma) {
1120 ath_rx_edma_buf_link(sc, qtype); 1118 ath_rx_edma_buf_link(sc, qtype);
1121 } else { 1119 } else {
1122 ath_rx_buf_relink(sc, bf); 1120 ath_rx_buf_relink(sc, bf);
1123 ath9k_hw_rxena(ah); 1121 if (!flush)
1122 ath9k_hw_rxena(ah);
1124 } 1123 }
1125 } while (1); 1124 } while (1);
1126 1125