Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Apr 2013 20:11:20 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r248984 - head/sys/dev/ath
Message-ID:  <201304012011.r31KBKxX095913@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Mon Apr  1 20:11:19 2013
New Revision: 248984
URL: http://svnweb.freebsd.org/changeset/base/248984

Log:
  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.

Modified:
  head/sys/dev/ath/if_ath_rx_edma.c

Modified: head/sys/dev/ath/if_ath_rx_edma.c
==============================================================================
--- head/sys/dev/ath/if_ath_rx_edma.c	Mon Apr  1 19:13:46 2013	(r248983)
+++ head/sys/dev/ath/if_ath_rx_edma.c	Mon Apr  1 20:11:19 2013	(r248984)
@@ -680,10 +680,12 @@ ath_edma_rxbuf_free(struct ath_softc *sc
 
 	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;
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201304012011.r31KBKxX095913>