提交 3a758134 编写于 作者: T Tim Harvey 提交者: John W. Linville

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: NTim Harvey <tharvey@gateworks.com>
Acked-by: NFelix Fietkau <nbd@openwrt.org>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 328e203f
...@@ -1113,14 +1113,13 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp) ...@@ -1113,14 +1113,13 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
} }
requeue: requeue:
list_add_tail(&bf->list, &sc->rx.rxbuf); list_add_tail(&bf->list, &sc->rx.rxbuf);
if (flush)
continue;
if (edma) { if (edma) {
ath_rx_edma_buf_link(sc, qtype); ath_rx_edma_buf_link(sc, qtype);
} else { } else {
ath_rx_buf_relink(sc, bf); ath_rx_buf_relink(sc, bf);
ath9k_hw_rxena(ah); if (!flush)
ath9k_hw_rxena(ah);
} }
} while (1); } while (1);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册
新手
引导
客服 返回
顶部