On Wed, Jun 25, 2003, Alan Stern <[EMAIL PROTECTED]> wrote: > On Wed, 25 Jun 2003, Johannes Erdfelt wrote: > > > I think your analysis is right on target. > > > > I think your proposed fix is correct, but the implementation will be > > tricky. We store TDs in the URB because the TDs for Interrupt and > > Isochronous URBs don't have a QH. There's no reason we can't use a QH > > for those cases howeever and it might be a good idea to do that so we > > can make the code generic. > > > > That will require some rework of the code. > > > > I'll spend some more time thinking about it and see if there is an > > easier way. > > Maybe have another list, of urb_priv structures waiting to be destroyed. > (You could even re-use the complete_list field for this.) Then have a > subroutine called from uhci_irq() do the equivalent of > uhci_destory_urb_priv() for each urb_priv on the list during the next > interrupt, instead of doing it within uhci_finish_urb(). > > That should involve many fewer changes.
One other option may be to add a list to the QH structure and use that if the URB needs a QH. If there are any TDs linked to the URB priv list head, we free them when we destroy the URB priv. If they are linked to the QH list head, we free them when we destroy the QH. That would be really easy to do. I'll have to double check the code to make sure it would work. JE ------------------------------------------------------- This SF.Net email is sponsored by: INetU Attention Web Developers & Consultants: Become An INetU Hosting Partner. Refer Dedicated Servers. We Manage Them. You Get 10% Monthly Commission! INetU Dedicated Managed Hosting http://www.inetu.net/partner/index.php _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel