[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Re: dispatch_usb_reset & more usb 2.6 status



On Wed, 2005-03-16 at 16:32 +0000, M.A. Williamson wrote:
> Incidentally, are you chucking all the ring interfacing code from the 2.4 
> driver? That should all be reusable and mostly complete, so you should be 
> able to reuse it and concentrate on the really hard stuff - the Linux USB 
> layer.

I started from scratch by building the device framework for 2.6 and then
imported bits of your code into it bit by bit, testing each bit as I
went along.  The ring interfacing code is mostly there but rearranged
and I've been fixing the bugs that I've been pointing out to you
including the problem where you were failing to check if the ring was
full when queueing probes which required some restructuring to get the
resource management right.

I have done some bits differently, for example: I don't think the reset
should be synchronous.  I think the correct implementation is for the
reset request to clear the port enable bit and set the port reset bit
and then for the reset to complete asynchronously by setting the port
enable bit, clearing the reset bit and setting the c_reset bit.

I think this is the behaviour specified by the USB spec, it seems to
work and it avoids a busy wait in the front-end code.

I have structured the 2.6 code as follows:

usbfront_module:

   provides init and exit routines to init/exit components below

usbfront_bus:

   implements a virtual bus device representing the control plane to
which the USB driver domains are attached.

usbfront_discovery:

    finds USB driver domains and creates a usbfront_device for each
driver domain.

usbfront_device:

    represents a USB driver domain. Encapsulates the ring mechanism.
Provides a software interface to the usbfront_driver which looks like a
USB host controller.

usbfront_driver:

    a driver to drive the usbfront_device.

The idea here is that when the device discovery and interdomain
communication APIs change, the code in the usbfront_driver component
will not need to be modified.

The module, bus, discovery and device code is mostly done with the
exception that the module shutdown doesn't work because of the protocol
issues (missing functionality in xend?) also, the discovery can only
cope with a single driver domain since the domain controller protocol is
lacking the required IDs for more.

The driver code is done to the extent that Linux finds a USB device
attached and tries to submit an URB.

The next step is to forward port your urb to usbif_request mangling
code.

I'm hoping it's going to be possible to back-port the new 2.6 code to
2.4 to re-common up the code.  At least I ought to understand it all
pretty well by then.

Once the 2.6 code is working and the code is commoned up again I can
start working on fixing the limitations in the protocol and shutdown
etc.

Harry.



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.