Russell King wrote:
> 
> I've dropped the linux-kernel list off this.  If someone thinks it should
> still be on that list, appologies.
> 
> Alan Cox writes:
> > Even if not you can hash by page number not low bits so the hash is way
> > smaller. You (in most cases) can also write the entry number in the relevant
> > tables onto the end of the object in spare space (or in front of it)
> >
> > Something as trivial as
> >
> >       struct usb_thingy
> >       {
> >               u32 thing_id;
> >               u32 flags;
> >               struct usb_thingy *next;
> > #ifndef __LP64__
> >               u32 pad
> > #endif
> >               struct usb_controller_goo goo;
> >       }
> 
> The following is from memory since I lost my partially converted OHCI
> driver ;(  Note also that my understanding of OHCI may be flawed.
> Appologies in advance if the following has already been mentioned.
> 
> When I looked at the OHCI driver stuff, this is exactly what I did, and
> it worked generally fine for tracking the CPU + DMA addresses of items
> which the CPU has control over.
> 
> When we hand certain `thingy's over to the USB controller (as a linked
> list of `thingy's), the USB controller uses the DMA pointers to manipulate
> the list.  Once it has processed the list, then you get back another
> list of `thingy's.  My understanding is that the USB controller doesn't
> have to complete the requests in any particular order (is that true?),
> and therefore your `goo' will be wrong once the USB controller has
> processed the `thingy'.  IIRC, the USB controllers idea of the "head" of
> the processed `thingy's is a DMA address as well.
> 
> Therefore the only thing that you have to go on is a DMA address and
> nothing else.  You can't maintain your own lists.
> 
> Again, this is from memory of 2 months ago.  Things may have moved on and
> this problem doesn't exist, but I doubt that from the discussions that
> have been made recently about hash tables.
> 
You are perfectly right here. The main problem is the done-list which is 
constructed by the HC and of 'random' order.

- Roman


> --
> Russell King ([EMAIL PROTECTED])                The developer of ARM Linux
>              http://www.arm.linux.org.uk/personal/aboutme.html
> 
> _______________________________________________
> [EMAIL PROTECTED]
> To unsubscribe, use the last form field at:
> http://lists.sourceforge.net/lists/listinfo/linux-usb-devel

_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
http://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to