Module Name: src
Committed By: snj
Date: Tue Nov 25 07:58:08 UTC 2014
Modified Files:
src/sys/dev/ic [netbsd-7]: dwc_gmac.c
Log Message:
Pull up following revision(s) (requested by jmcneill in ticket #259):
sys/dev/ic/dwc_gmac.c: revision 1.27
Fix bus_dmamap_sync usage.
To generate a diff of this commit:
cvs rdiff -u -r1.24.2.2 -r1.24.2.3 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.24.2.2 src/sys/dev/ic/dwc_gmac.c:1.24.2.3
--- src/sys/dev/ic/dwc_gmac.c:1.24.2.2 Sun Nov 9 19:06:57 2014
+++ src/sys/dev/ic/dwc_gmac.c Tue Nov 25 07:58:07 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: dwc_gmac.c,v 1.24.2.2 2014/11/09 19:06:57 snj Exp $ */
+/* $NetBSD: dwc_gmac.c,v 1.24.2.3 2014/11/25 07:58:07 snj 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.24.2.2 2014/11/09 19:06:57 snj Exp $");
+__KERNEL_RCSID(1, "$NetBSD: dwc_gmac.c,v 1.24.2.3 2014/11/25 07:58:07 snj Exp $");
/* #define DWC_GMAC_DEBUG 1 */
@@ -414,7 +414,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);
@@ -442,7 +442,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 */
@@ -627,7 +627,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);
@@ -896,7 +896,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;
}
@@ -1097,6 +1097,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);