New USB stack - update

Hans Petter Selasky hselasky at c2i.net
Fri Jul 6 06:53:38 UTC 2007


Hi,

I've just committed a bunch of improvements to my new USB stack. The changes 
will be committed to P4 later today. They are currently only available 
through my SVN repo.

Could the ones that reported problems with memory sticks and my new stack, try 
again?

And there was also someone that was not able to load the firmware on the 
printer.

List of changes between revision 512 and 513:

        1) Added a completely new FULL speed over HIGH speed USB HUB
        bandwidth allocator. See the "usbd_fs_isoc_xxx()" functions in
        usb_subr.c. Finally it should be possible to connect several
        FULL speed isochronous devices to a HIGH speed USB HUB at the
        same time, without problems. NOTE: The sum of the isochronous
        bandwidth must not exceed 6.0Mbit/s per HS USB HUB!  This is
        because I have make a simple hack and reserved 3.0 Mbit/s for
        interrupt endpoints so that the scheduling becomes extremely
        fast.

        2) Fixed a data-toggle error in the EHCI driver. Now the
        hardware/DMA data toggle value is used as reference for the next
        transfer.

        3) Fixed a possible control transfer problem when using the
        Linux emulation layer with the UHCI driver. Part of this fix
        is to always use a fixup buffer independent of transfer type.
        This way it will also be easier to make virtual kernel
        mappings from the allocated memory pages.

        4) Instead of comparing memory pointers with "less than",
        compute the end-pointer and use the "not equal to" comparison
        instead. This is safer and faster.

        5) Removed interrupt counting in the interrupt handlers.

        6) ISOCHRONOUS transfers will always have a timeout. If the
        driver does not specify a timeout, 250ms will be used.

        7) Make sure that LOW speed devices cannot specify FULL speed
        ISOCHRONOUS transfers. The check is done in the host
        controller "pipe_init" callbacks.

        8) EHCI-driver: Lower EHCI NAK-reload count to 1 for
        non-HIGH-speed devices.

        9) New mechanism: If the "pipe_init" callback wants to say
        that it does not support a certain transfer type, it can do so
        by not setting "pipe->methods".

        10) Added maximum string length arguments to
        "usbd_devinfo_vp()" and "usbd_printBCD()", instead of
        depending on some old assumptions.

        11) Replaced the remaining "strcpy()" with "strlcpy()". This
        does not fix anything.

        12) "usbd_page_fit_obj()" does no longer clobber the
        "page->length" variable, which turned out to not be
        a good idea.

        13) Some optimizations and nits.

--HPS

http://www.turbocat.net/~hselasky/usb4bsd


More information about the freebsd-usb mailing list