Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Nov 2006 17:56:36 +0000 (UTC)
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/dev/usb usbdi.c
Message-ID:  <200611221756.kAMHuapt020379@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200611221756.kAMHuapt020379>