Some things that need to be done in no particular order: -------------------------------------------------------- Add lots of bus_dmamap_sync(). Do bandwidth accounting. Use lock manager locks. Use the pool allocator for TDs et al. Throw out more USBDI gunk. Make hub driver notice transition between self and bus powered state. Handle overcurrent conditions. Add an event mechanism to find out about attach and detach. Make it possible to open any device in a "generic" way, i.e., like ugen. Rewrite mouse and keyboard driver to handle devices which use the report ID. One way would be to attach ums and ukbd to uhid. Rotate the QHs for bulk transport to get fairer scheduling. Change HC drivers to queue multiple request for an endpoint to get better performance. Add generic ucom layer for serial adapters. Add isoc to OHCI driver. Do memory deallocation when HC driver is deactivated. uaudio problems: mixer names are awful, use some heuristics. implement selector units implement input test with more devices Stylistic changes: use NULL not 0 declare all local definitions static rename s/request/xfer/ use usb_ and usbd_ consistently rename s/r/err/ use implicit test for no err indent continuation lines according to KNF rearrange the contents and names of some files (Nick) Document device driver API. Document HC driver API.