Date: Fri, 6 Jul 2007 08:53:38 +0200 From: Hans Petter Selasky <hselasky@c2i.net> To: freebsd-usb@freebsd.org Subject: New USB stack - update Message-ID: <200707060853.38198.hselasky@c2i.net>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200707060853.38198.hselasky>