Thanks Florian. I was waiting for after the 3.12 merge window to close to send Greg bug fixes. I'm queuing this up for test today, and will send it out once it passes. Sarah Sharp On Sun, Sep 22, 2013 at 09:09:54PM +0200, Florian Wolter wrote: > Hi Sarah, > > the described Problem also exisits on actual Linux Kernel 3.12-rc so I > rebased my patch to this. > ------ > > > The halted state of a endpoint cannot be cleared over CLEAR_HALT from a > user process, because the stopped_td variable was overwritten in the > handle_stopped_endpoint() function. So the xhci_endpoint_reset() function will > refuse the reset and communication with device can not run over this endpoint. > https://bugzilla.kernel.org/show_bug.cgi?id=60699 > > > Signed-off-by: Florian Wolter <wolly84@xxxxxx> > --- > drivers/usb/host/xhci-ring.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c > index c47f90e..411da1f 100644 > --- a/drivers/usb/host/xhci-ring.c > +++ b/drivers/usb/host/xhci-ring.c > @@ -859,8 +859,12 @@ remove_finished_td: > /* Otherwise ring the doorbell(s) to restart queued transfers */ > ring_doorbell_for_active_rings(xhci, slot_id, ep_index); > } > - ep->stopped_td = NULL; > - ep->stopped_trb = NULL; > + > + /* Clear stopped_td and stopped_trb if endpoint is not halted */ > + if (!(ep->ep_state & EP_HALTED)) { > + ep->stopped_td = NULL; > + ep->stopped_trb = NULL; > + } > > /* > * Drop the lock and complete the URBs in the cancelled TD list. > -- > 1.7.10.4 > -- 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