Hi Gerd, Thanks for catching this! I have a UAS device now, but won't have time to test it for a week or so. Can you please Cc me on patches to the xHCI driver in the future? Otherwise it gets lost in the other linux-usb mailing list traffic. One nit-picky comment below, but everything else looks good. On Mon, Aug 26, 2013 at 02:31:10PM +0200, Gerd Hoffmann wrote: > + > +int xhci_update_stream_ring(struct xhci_ring *ring, bool insert) > +{ > + struct xhci_segment *seg; > + unsigned long key; > + bool present; > + int ret; > + > + BUG_ON(ring->trb_address_map == NULL); > + seg = ring->first_seg; > + do { > + key = (unsigned long)(seg->dma >> TRB_SEGMENT_SHIFT); > + present = radix_tree_lookup(ring->trb_address_map, key) != NULL; > + if (!present && insert) { > + ret = radix_tree_insert(ring->trb_address_map, key, ring); > + if (ret) > + return ret; > + } > + if (present && !insert) { > + radix_tree_delete(ring->trb_address_map, key); > + } > + seg = seg->next; > + } while (seg != ring->first_seg); > + > + return 0; > +} > + > @@ -663,6 +697,7 @@ struct xhci_stream_info *xhci_alloc_stream_info(struct xhci_hcd *xhci, > if (!cur_ring) > goto cleanup_rings; > cur_ring->stream_id = cur_stream; > + cur_ring->trb_address_map = &stream_info->trb_address_map; > /* Set deq ptr, cycle bit, and stream context type */ > addr = cur_ring->first_seg->dma | > SCT_FOR_CTX(SCT_PRI_TR) | > @@ -672,10 +707,7 @@ struct xhci_stream_info *xhci_alloc_stream_info(struct xhci_hcd *xhci, > xhci_dbg(xhci, "Setting stream %d ring ptr to 0x%08llx\n", > cur_stream, (unsigned long long) addr); > > - key = (unsigned long) > - (cur_ring->first_seg->dma >> TRB_SEGMENT_SHIFT); > - ret = radix_tree_insert(&stream_info->trb_address_map, > - key, cur_ring); > + ret = xhci_update_stream_ring(cur_ring, 1); Could you use true instead of 1 here? 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