diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/xmit.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/xmit.c | 12 |
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); |