svn commit: r220704 - head/sys/dev/iwn
Bernhard Schmidt
bschmidt at FreeBSD.org
Sat Apr 16 10:52:11 UTC 2011
Author: bschmidt
Date: Sat Apr 16 10:52:11 2011
New Revision: 220704
URL: http://svn.freebsd.org/changeset/base/220704
Log:
Add missing bus_dmamap_sync calls as well as remove two duplicate ones.
Obtained from: OpenBSD
Modified:
head/sys/dev/iwn/if_iwn.c
Modified: head/sys/dev/iwn/if_iwn.c
==============================================================================
--- head/sys/dev/iwn/if_iwn.c Sat Apr 16 10:42:22 2011 (r220703)
+++ head/sys/dev/iwn/if_iwn.c Sat Apr 16 10:52:11 2011 (r220704)
@@ -1148,6 +1148,8 @@ iwn_dma_contig_alloc(struct iwn_softc *s
goto fail;
}
+ bus_dmamap_sync(dma->tag, dma->map, BUS_DMASYNC_PREWRITE);
+
if (kvap != NULL)
*kvap = dma->vaddr;
return 0;
@@ -1307,8 +1309,6 @@ iwn_alloc_rx_ring(struct iwn_softc *sc,
error = ENOMEM; /* XXX unique code */
goto fail;
}
- bus_dmamap_sync(ring->data_dmat, data->map,
- BUS_DMASYNC_PREWRITE);
/* Set physical address of RX buffer (256-byte aligned). */
ring->desc[i] = htole32(paddr >> 8);
@@ -1436,8 +1436,6 @@ iwn_alloc_tx_ring(struct iwn_softc *sc,
__func__, error);
goto fail;
}
- bus_dmamap_sync(ring->data_dmat, data->map,
- BUS_DMASYNC_PREWRITE);
}
return 0;
fail:
@@ -1454,6 +1452,8 @@ iwn_reset_tx_ring(struct iwn_softc *sc,
struct iwn_tx_data *data = &ring->data[i];
if (data->m != NULL) {
+ bus_dmamap_sync(ring->data_dmat, data->map,
+ BUS_DMASYNC_POSTWRITE);
bus_dmamap_unload(ring->data_dmat, data->map);
m_freem(data->m);
data->m = NULL;
@@ -2208,6 +2208,8 @@ iwn_rx_compressed_ba(struct iwn_softc *s
struct iwn_compressed_ba *ba = (struct iwn_compressed_ba *)(desc + 1);
struct iwn_tx_ring *txq;
+ bus_dmamap_sync(sc->rxq.data_dmat, data->map, BUS_DMASYNC_POSTREAD);
+
txq = &sc->txq[letoh16(ba->qid)];
/* XXX TBD */
}
@@ -2458,6 +2460,8 @@ iwn_cmd_done(struct iwn_softc *sc, struc
/* If the command was mapped in an mbuf, free it. */
if (data->m != NULL) {
+ bus_dmamap_sync(ring->data_dmat, data->map,
+ BUS_DMASYNC_POSTWRITE);
bus_dmamap_unload(ring->data_dmat, data->map);
m_freem(data->m);
data->m = NULL;
More information about the svn-src-all
mailing list