Module Name:    src
Committed By:   matt
Date:           Sun Nov 23 22:42:14 UTC 2014

Modified Files:
        src/sys/dev/ic: dwc_gmac.c

Log Message:
Fix bus_dmamap_sync usage.


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/sys/dev/ic/dwc_gmac.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/ic/dwc_gmac.c
diff -u src/sys/dev/ic/dwc_gmac.c:1.26 src/sys/dev/ic/dwc_gmac.c:1.27
--- src/sys/dev/ic/dwc_gmac.c:1.26	Sun Nov 23 11:08:16 2014
+++ src/sys/dev/ic/dwc_gmac.c	Sun Nov 23 22:42:14 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: dwc_gmac.c,v 1.26 2014/11/23 11:08:16 martin Exp $ */
+/* $NetBSD: dwc_gmac.c,v 1.27 2014/11/23 22:42:14 matt Exp $ */
 
 /*-
  * Copyright (c) 2013, 2014 The NetBSD Foundation, Inc.
@@ -41,7 +41,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(1, "$NetBSD: dwc_gmac.c,v 1.26 2014/11/23 11:08:16 martin Exp $");
+__KERNEL_RCSID(1, "$NetBSD: dwc_gmac.c,v 1.27 2014/11/23 22:42:14 matt Exp $");
 
 /* #define	DWC_GMAC_DEBUG	1 */
 
@@ -415,7 +415,7 @@ dwc_gmac_alloc_rx_ring(struct dwc_gmac_s
 
 	bus_dmamap_sync(sc->sc_dmat, sc->sc_dma_ring_map, 0,
 	    AWGE_RX_RING_COUNT*sizeof(struct dwc_gmac_dev_dmadesc),
-	    BUS_DMASYNC_PREREAD);
+	    BUS_DMASYNC_PREWRITE|BUS_DMASYNC_PREREAD);
 	bus_space_write_4(sc->sc_bst, sc->sc_bsh, AWIN_GMAC_DMA_RX_ADDR,
 	    ring->r_physaddr);
 
@@ -443,7 +443,7 @@ dwc_gmac_reset_rx_ring(struct dwc_gmac_s
 
 	bus_dmamap_sync(sc->sc_dmat, sc->sc_dma_ring_map, 0,
 	    AWGE_RX_RING_COUNT*sizeof(struct dwc_gmac_dev_dmadesc),
-	    BUS_DMASYNC_PREWRITE);
+	    BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE);
 
 	ring->r_cur = ring->r_next = 0;
 	/* reset DMA address to start of ring */
@@ -628,7 +628,7 @@ dwc_gmac_reset_tx_ring(struct dwc_gmac_s
 	bus_dmamap_sync(sc->sc_dmat, sc->sc_dma_ring_map,
 	    TX_DESC_OFFSET(0),
 	    AWGE_TX_RING_COUNT*sizeof(struct dwc_gmac_dev_dmadesc),
-	    BUS_DMASYNC_PREWRITE);
+	    BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE);
 	bus_space_write_4(sc->sc_bst, sc->sc_bsh, AWIN_GMAC_DMA_TX_ADDR,
 	    sc->sc_txq.t_physaddr);
 
@@ -911,7 +911,7 @@ dwc_gmac_queue(struct dwc_gmac_softc *sc
 	data->td_active = map;
 
 	bus_dmamap_sync(sc->sc_dmat, map, 0, map->dm_mapsize,
-	    BUS_DMASYNC_PREWRITE);
+	    BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE);
 
 	return 0;
 }
@@ -1117,6 +1117,8 @@ dwc_gmac_rx_intr(struct dwc_gmac_softc *
 		(*ifp->if_input)(ifp, m);
 
 skip:
+		bus_dmamap_sync(sc->sc_dmat, data->rd_map, 0,
+		    data->rd_map->dm_mapsize, BUS_DMASYNC_PREREAD);
 		desc->ddesc_cntl = htole32(
 		    __SHIFTIN(AWGE_MAX_PACKET,DDESC_CNTL_SIZE1MASK) |
 		    DDESC_CNTL_RXCHAIN);

Reply via email to