diff options
author | sam <sam@FreeBSD.org> | 2008-03-20 16:04:13 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2008-03-20 16:04:13 +0000 |
commit | c8f58c14c0a0d193084549ee0a04e3049c6a3463 (patch) | |
tree | 0b8e38ea0c2736d0501ec95b3e8d84f6fc4bf841 | |
parent | 70faf3fbc18f5e02b9e75736aa47e33a83af3bdf (diff) | |
download | FreeBSD-src-c8f58c14c0a0d193084549ee0a04e3049c6a3463.zip FreeBSD-src-c8f58c14c0a0d193084549ee0a04e3049c6a3463.tar.gz |
Correct cache handling for xfer requests marked URQ_REQUEST: many (if not
all uses) involve a read but usbd_start_transfer only does a PREWRITE; change
this to BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE as I'm not sure if any
users do write+read.
Reviewed by: cognet, imp
MFC after: 1 month
-rw-r--r-- | sys/dev/usb/usbdi.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/dev/usb/usbdi.c b/sys/dev/usb/usbdi.c index 684d604..d299966 100644 --- a/sys/dev/usb/usbdi.c +++ b/sys/dev/usb/usbdi.c @@ -384,7 +384,8 @@ usbd_start_transfer(void *arg, bus_dma_segment_t *segs, int nseg, int error) * sync the dmamap for the request data in the SETUP * packet. */ - bus_dmamap_sync(tag, dmap->map, BUS_DMASYNC_PREWRITE); + bus_dmamap_sync(tag, dmap->map, + BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); } else bus_dmamap_sync(tag, dmap->map, BUS_DMASYNC_PREREAD); } |