Index: sys/dev/pci/if_iwn.c =================================================================== RCS file: /cvsroot/src/sys/dev/pci/if_iwn.c,v retrieving revision 1.18 diff -u -p -u -r1.18 if_iwn.c --- sys/dev/pci/if_iwn.c 14 Sep 2008 10:09:39 -0000 1.18 +++ sys/dev/pci/if_iwn.c 23 Sep 2008 12:57:46 -0000 @@ -536,6 +536,8 @@ iwn_setup_beacon(struct iwn_softc *sc, s IWN_SET_DESC_SEG(desc, 1, data->map->dm_segs[0].ds_addr, data->map->dm_segs[1].ds_len); + bus_dmamap_sync(sc->sc_dmat, data->map, 0, + data->map->dm_mapsize /* calc? */, BUS_DMASYNC_PREWRITE); /* kick cmd ring */ ring->cur = (ring->cur + 1) % IWN_TX_RING_COUNT; @@ -2125,6 +2127,9 @@ iwn_tx_data(struct iwn_softc *sc, struct ring->queued++; + bus_dmamap_sync(sc->sc_dmat, data->map, 0, + data->map->dm_mapsize /* calc? */, BUS_DMASYNC_PREWRITE); + /* kick ring */ ring->cur = (ring->cur + 1) % IWN_TX_RING_COUNT; IWN_WRITE(sc, IWN_TX_WIDX, ring->qid << 8 | ring->cur); @@ -2480,6 +2485,9 @@ iwn_cmd(struct iwn_softc *sc, int code, htole16(8); } + bus_dmamap_sync(sc->sc_dmat, ring->cmd_dma.map, 0, + 4 + size, BUS_DMASYNC_PREWRITE); + /* kick cmd ring */ ring->cur = (ring->cur + 1) % IWN_TX_RING_COUNT; IWN_WRITE(sc, IWN_TX_WIDX, ring->qid << 8 | ring->cur); @@ -3485,6 +3493,9 @@ iwn_scan(struct iwn_softc *sc, uint16_t htole16(8); } + bus_dmamap_sync(sc->sc_dmat, data->map, 0, + data->map->dm_mapsize /* pktlen? */, BUS_DMASYNC_PREWRITE); + /* kick cmd ring */ ring->cur = (ring->cur + 1) % IWN_TX_RING_COUNT; IWN_WRITE(sc, IWN_TX_WIDX, ring->qid << 8 | ring->cur);