From 80b87f1814997633d1116b756bfeb815b3091da9 Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Mon, 1 Apr 2013 20:11:19 +0000 Subject: [PATCH] Only unmap the RX mbuf DMA map if there's a buffer here. The normal RX path (ath_rx_pkt()) will sync and unmap the buffer before passing it up the stack. We only need to do this if we're flushing the FIFO during reset/shutdown. --- sys/dev/ath/if_ath_rx_edma.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sys/dev/ath/if_ath_rx_edma.c b/sys/dev/ath/if_ath_rx_edma.c index ec7fa770b61..7dd697439fc 100644 --- a/sys/dev/ath/if_ath_rx_edma.c +++ b/sys/dev/ath/if_ath_rx_edma.c @@ -680,10 +680,12 @@ ath_edma_rxbuf_free(struct ath_softc *sc, struct ath_buf *bf) ATH_RX_LOCK_ASSERT(sc); - /* We're doing this multiple times? */ - bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); - + /* + * Only unload the frame if we haven't consumed + * the mbuf via ath_rx_pkt(). + */ if (bf->bf_m) { + bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); m_freem(bf->bf_m); bf->bf_m = NULL; }