On Thu, 3 May 2001, Johannes Erdfelt wrote: > On Thu, May 03, 2001, Georg Acher <[EMAIL PROTECTED]> wrote: > > > > This is exactly the cause, why usb-uhci is always using a "bottom QH" (bqh) > > as the last element in the vertical TD list when queuing bulks. With this > > last QH, UHCI enters a new context and doesn't update the element pointer of > > the old "top" QH. So there's no race when appending new TDs, the old bqh is > > recycled as the top QH of the new TD list. Of course, there's a slight > > memory cost, but absolutely no race window. > > > > Ahh, so that's what the code was doing. I looked at your driver to see > what you were doing but couldn't figure it out. That makes perfect sense > and is definately a better solution. Thanks for the explanation. My patch > makes uhci.c operate like that. Tested as before. Nothing breaks. All transfers rock solid even under heavy interrupt activity. I would say this is the clean way to remove this HC/HCD race. However, now uhci looses in performance compared to usb-uhci: With my usual 2 queued bulk transfers, len=2112, both to same endpoint, usb-uhci provides >1MB/sec av. throughput - for uhci this number was the same without this patch (until the race happened) and has now dropped to about 700KB/sec. Martin _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: http://lists.sourceforge.net/lists/listinfo/linux-usb-devel