usb2 iscochronous transfer

Peter B pb at ludd.ltu.se
Thu Mar 23 00:56:08 UTC 2006


>> >Maybe you want to try out the new USB API when designing the driver. Don't
>> >forget that high-speed isoc have 8 frames per millisecond!

http://en.wikipedia.org/wiki/USB
  "In addition to this some operating systems take a conservative approach
   to scheduling transactions and limit the number of transfers per frame.
   Reducing the maximum transfers from say the theoretical 13 per frame
   to 10 or 9."

Does this apply?

>> >PS: My USB driver in SVN is now also compiling and working on NetBSD 3.X.

Where can I find instructions for this?

>if that works better during the transition phase. But the patches are not 
>ready yet. Really it is just to follow the Makefile.

Anything in particular that makes them "not ready" in you opinion?

>> How is uaudio and umass working with this driver?
>
>uaudio and umass works fine, but they need to be rewritten, hence they are 
>still under the compatibility layer of my driver, and can sleep when they 
>should not sleep.

I tested the new usb driver with:
  FreeBSD 6.0-RELEASE #0: Tue Mar 21 15:17:11 UTC 2006
  CPU: Pentium Pro (199.74-MHz 686-class CPU)  (yes a slave machine for i/o :)
  real memory  = 83881984 (79 MB)

  http://www.pcidatabase.com/vendor_details.php?id=648
  ehci0 at pci0:6:2: class=0x0c0320 card=0x31041106 chip=0x31041106
                  rev=0x63 hdr=0x00
  4xUsb 2xFw
  uaudio0: Creative Technology SB Live! 24-bit External, rev 1.10/1.00, addr 2

uaudio plays without any audioable distortion over the toslink interface.
However syslog is full of:
  usbd_transfer_done: short transfer actlen(3528) < len (3600)

What's the cause .. ?
  /usr/src/sys/dev/usb2/_usb_transfer.c
    usbd_transfer_done()
      error==FALSE                         (why set?)
      xfer->actlen < xfer->length
      xfer->flags & USBD_SHORT_XFER_OK == FALSE



More information about the freebsd-hackers mailing list