|
@@ -1725,6 +1725,9 @@ static void ath_tx_start_dma(struct ath_softc *sc, struct ath_buf *bf,
|
|
|
ar9003_hw_set_paprd_txdesc(sc->sc_ah, bf->bf_desc,
|
|
|
bf->bf_state.bfs_paprd);
|
|
|
|
|
|
+ if (txctl->paprd)
|
|
|
+ bf->bf_state.bfs_paprd_timestamp = jiffies;
|
|
|
+
|
|
|
ath_tx_send_normal(sc, txctl->txq, tid, &bf_head);
|
|
|
}
|
|
|
|
|
@@ -1886,7 +1889,9 @@ static void ath_tx_complete_buf(struct ath_softc *sc, struct ath_buf *bf,
|
|
|
bf->bf_buf_addr = 0;
|
|
|
|
|
|
if (bf->bf_state.bfs_paprd) {
|
|
|
- if (!sc->paprd_pending)
|
|
|
+ if (time_after(jiffies,
|
|
|
+ bf->bf_state.bfs_paprd_timestamp +
|
|
|
+ msecs_to_jiffies(ATH_PAPRD_TIMEOUT)))
|
|
|
dev_kfree_skb_any(skb);
|
|
|
else
|
|
|
complete(&sc->paprd_complete);
|