aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/xmit.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/xmit.c')
-rw-r--r--drivers/net/wireless/ath/ath9k/xmit.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index 20221b8c04fd..edbeffb14a1c 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -1644,6 +1644,8 @@ static int ath_tx_setup_buffer(struct ieee80211_hw *hw, struct ath_buf *bf,
1644 } 1644 }
1645 1645
1646 bf->bf_state.bfs_paprd = txctl->paprd; 1646 bf->bf_state.bfs_paprd = txctl->paprd;
1647 if (txctl->paprd)
1648 bf->bf_state.bfs_paprd_timestamp = jiffies;
1647 bf->bf_flags = setup_tx_flags(skb, use_ldpc); 1649 bf->bf_flags = setup_tx_flags(skb, use_ldpc);
1648 1650
1649 bf->bf_keytype = get_hw_crypto_keytype(skb); 1651 bf->bf_keytype = get_hw_crypto_keytype(skb);
@@ -1944,8 +1946,14 @@ static void ath_tx_complete_buf(struct ath_softc *sc, struct ath_buf *bf,
1944 dma_unmap_single(sc->dev, bf->bf_dmacontext, skb->len, DMA_TO_DEVICE); 1946 dma_unmap_single(sc->dev, bf->bf_dmacontext, skb->len, DMA_TO_DEVICE);
1945 1947
1946 if (bf->bf_state.bfs_paprd) { 1948 if (bf->bf_state.bfs_paprd) {
1947 sc->paprd_txok = txok; 1949 if (time_after(jiffies,
1948 complete(&sc->paprd_complete); 1950 bf->bf_state.bfs_paprd_timestamp +
1951 msecs_to_jiffies(ATH_PAPRD_TIMEOUT))) {
1952 dev_kfree_skb_any(skb);
1953 } else {
1954 sc->paprd_txok = txok;
1955 complete(&sc->paprd_complete);
1956 }
1949 } else { 1957 } else {
1950 ath_tx_complete(sc, skb, bf->aphy, tx_flags); 1958 ath_tx_complete(sc, skb, bf->aphy, tx_flags);
1951 ath_debug_stat_tx(sc, txq, bf, ts); 1959 ath_debug_stat_tx(sc, txq, bf, ts);