cvs commit: src/sys/dev/usb usbdi.c

Daan Vreeken [PA4DAN] Danovitsch at vitsch.net
Wed Nov 22 19:46:10 UTC 2006


On Wednesday 22 November 2006 18:56, Warner Losh wrote:
> imp         2006-11-22 17:56:36 UTC
>
>   FreeBSD src repository
>
>   Modified files:
>     sys/dev/usb          usbdi.c
>   Log:
>   Fix coherency issue.  From submitter:
>
>           I have been debugging the usb problems some more. Your were
>           right in your assumption (thanks for the pointer) about lack
>           of calls to bus_dmamap_sync().  In usbdi.c bus_dmamap_sync()
>           does get used for transfers that move data from PC to USB and
>           it is used for transfers that move data from USB to PC. But
>           someone forgot that control transfers consist of possibly two
>           data chunks : the request itself and optionally a buffer of
>           data that should be transfered to or from the USB device.  On
>           requests to the control endpoint without additional data
>           bus_dmamap_sync() didn't get called. For some reason my first
>           tests with umass worked (due to enough cache poisening I
>           guess).  The attached patch adds a call to bus_dmamap_sync()
>           to usbdi.c and now all devices I have tried work out of the
>           box.  I have successfully transfered large files using the
>           if_axe driver and I have mounted several different umass
>           devices.
>
>   submitted by: Daan Vreeken
>   sponsored by: Vitsch Electronics
>   reviewed by: cognet@

Thanks!

--
Daan


More information about the cvs-src mailing list