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>
This commit is contained in:

committed by
John W. Linville

parent
328e203fc3
commit
3a758134e6
@@ -1113,14 +1113,13 @@ requeue_drop_frag:
|
|||||||
}
|
}
|
||||||
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);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user