diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/recv.c')
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/recv.c | 10 | 
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c index 9a4850154fb..4c21f8cbdeb 100644 --- a/drivers/net/wireless/ath/ath9k/recv.c +++ b/drivers/net/wireless/ath/ath9k/recv.c @@ -205,14 +205,22 @@ static void ath_rx_remove_buffer(struct ath_softc *sc,  static void ath_rx_edma_cleanup(struct ath_softc *sc)  { +	struct ath_hw *ah = sc->sc_ah; +	struct ath_common *common = ath9k_hw_common(ah);  	struct ath_buf *bf;  	ath_rx_remove_buffer(sc, ATH9K_RX_QUEUE_LP);  	ath_rx_remove_buffer(sc, ATH9K_RX_QUEUE_HP);  	list_for_each_entry(bf, &sc->rx.rxbuf, list) { -		if (bf->bf_mpdu) +		if (bf->bf_mpdu) { +			dma_unmap_single(sc->dev, bf->bf_buf_addr, +					common->rx_bufsize, +					DMA_BIDIRECTIONAL);  			dev_kfree_skb_any(bf->bf_mpdu); +			bf->bf_buf_addr = 0; +			bf->bf_mpdu = NULL; +		}  	}  	INIT_LIST_HEAD(&sc->rx.rxbuf);  |