[oi-dev] Drivers & USB 3 [Was: Resignation as OI Lead]

garrett.damore at dey-sys.com garrett.damore at dey-sys.com
Fri Aug 31 21:24:16 UTC 2012


>> 
>> USB3 at least is not solely desktop relevant.  I have a backburnered plan to work on this.
>> 
>> Unfortunately, I don't believe that getting good USB3 type performance is possible with our current USB stack.  (Furthermore, our USB stack is a convoluted mess -- owing largely to the way it was designed using STREAMs -- which actually makes writing USB drivers very unlike any other kind of driver.)
>> 
>> My long running plan (probably won't get to this until 2013, if I'm honest) is to try to rewrite (perhaps a parallel stack) the USB stack to support USB 3 devices.  It should be implemented to be much more of a typical nexus/leaf driver model.  (Let's be honest, nobody really benefits from the STREAMs architecture that underpins the current stack.  I've never heard of anyone pushing other kinds of modules between USB controllers and leaf devices, for example.)
>> 
>> The end result will also make it *much* easier to port drivers from other platforms.  (Right now, the USBA is alien enough to all other platform implementations that its almost impossible to borrow any significant logic from any other implementations.)
> 
> Would it be possible to lift most of the USB stack from FreeBSD? I mean,
> if they are further along, why not partake of their superior features?
> Like FreeBSD pulls in ZFS. Open-source means everybody wins.

I'm not sure about *most*, but certainly we ought to be able to suck in substantial portions of the host controller and device drivers.  I guess maybe 50-60% of that code may be usable for us, and I am completely happy to leverage that. ;-)  In fact, I'd say that facilitating this kind of sharing should be a goal, although not a prime directive.   (I wouldn't throw away the rest of the DDI or try to build a glue layer, for example.  But having a design that is basically more familiar than the STREAMs weirdness will go a long way in the right direction.)

I think it will be *very* hard to get more than that though, even with a design that is much friendlier to that type of sharing than we have in the current USBA stack.  (Under the current USBA stuff, I think about 10% of the code might be shareable.)

(Btw, we do already lift a lot of things from FreeBSD, and they lift from us too.  We get pieces of libc, a number of userland components, and various device drivers from them.  From us they get some of our userland enhancements (e.g. localedef, some of my collation improvements), DTrace, ZFS.  Its win-win for everyone. :-)

	- Garrett






More information about the oi-dev mailing list