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

Warner Losh imp at FreeBSD.org
Wed Nov 22 17:56:37 UTC 2006


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@
  
  Revision  Changes    Path
  1.98      +7 -0      src/sys/dev/usb/usbdi.c


More information about the cvs-src mailing list