On Wed, Jun 09, 2010 at 03:01:51PM -0700, Sarah Sharp wrote: > On Wed, Jun 09, 2010 at 02:26:00PM -0700, John Youn wrote: > > Ok, I'll take a look. > > John, > > I think the issue is that the patch assumes that between calls to > prepare_ring(), there will be only one TD queued to the ring. But control > transfers involve 2-3 TDs, and isochronous transfers may involve even > more TDs. So the code in inc_enq() sees a chain bit cleared on the > control TX data TRB and does not give the link TRB back yet, which > allows queue_trb() to write over it. > > Since the link TRB activation is only an issue on bulk streams > endpoints, can you make the patch revert to the old behavior on non-bulk > endpoints? Thinking about that suggestion further, it doesn't work well with my plans for ring expansion. If the xHCI driver unconditionally gives back the link TRB for control, interrupt, and isochronous rings, I can't know when the hardware is finished with the link TRB so I can modify it and expand the ring. Maybe some flag can be given to inc_enq() to let it know more TDs are coming? What do you think? 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