Hi Andiry, I dug the original branch out of my tree from when I started the dynamic ring expansion code. I've stuck it up on github, since kernel.org is still down: https://github.com/sarahsharp/xhci/tree/xhci-ring-expansion-simplified You might find something helpful in there. I'm not too attached to that code in particular over anything new you create, but I was trying to remember the pitfalls I ran into when I started coding the dynamic ring expansion. Looking at the patches I started out with (`git diff 7d6d62f^..e109a04), I notice a couple things: 1. My patchset is pretty careful about what it does with the toggle cycle bit. Does your patchset handle that properly when you concatenate the two rings, or does it leave the toggle cycle bit set in the last link TRB of the original ring, so you have the toggle cycle bit set twice in a ring? 2. You need to let drivers know how many scatter-gather list entries they can post in one URB. The USB storage driver in particular uses this to queue larger data phases of SCSI commands. You can do that by setting hcd->self.sg_tablesize to 0 (meaning "unlimited" entries). 3. Apparently I also needed to increase the .max_sectors variable in the USB storage driver to get bigger scatter-gather transfers. I think that would have to be a separate patch to the usb-storage list, but it might help you test your patchset with a non-isochronous device (and one that might use different sized transfers and exercise ring expansion at different times). Let me know if you have any other questions. Thanks for looking into writing the code for dynamic ring expansion. :) Sarah Sharp -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html