Message ID | 20081111160344.GF24699@oksana.dev.rtsoft.ru (mailing list archive) |
---|---|
State | Superseded, archived |
Delegated to: | Kumar Gala |
Headers | show |
On Tuesday 11 November 2008, Anton Vorontsov wrote: > While disabling an endpoint the driver nuking any pending requests, > thus completing them with -ESHUTDOWN status. But the driver doesn't > clear the tx_req, which means that a next TX request (after > ep_enable), might get stalled, since the driver won't queue the new > reqests. > > This fixes a bug I'm observing with ethernet gadget while playing > with ifconfig usb0 up/down (the up/down sequence disables and > enables `in' and `out' endpoints). > > Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> Acked-by: David Brownell <dbrownell@users.sourceforge.net> > --- > drivers/usb/gadget/fsl_qe_udc.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/drivers/usb/gadget/fsl_qe_udc.c b/drivers/usb/gadget/fsl_qe_udc.c > index cb47337..37c8575 100644 > --- a/drivers/usb/gadget/fsl_qe_udc.c > +++ b/drivers/usb/gadget/fsl_qe_udc.c > @@ -1622,6 +1622,7 @@ static int qe_ep_disable(struct usb_ep *_ep) > nuke(ep, -ESHUTDOWN); > ep->desc = NULL; > ep->stopped = 1; > + ep->tx_req = NULL; > qe_ep_reset(udc, ep->epnum); > spin_unlock_irqrestore(&udc->lock, flags); > > -- > 1.5.6.3 > -- > To unsubscribe from this list: send the line "unsubscribe linux-usb" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > >
diff --git a/drivers/usb/gadget/fsl_qe_udc.c b/drivers/usb/gadget/fsl_qe_udc.c index cb47337..37c8575 100644 --- a/drivers/usb/gadget/fsl_qe_udc.c +++ b/drivers/usb/gadget/fsl_qe_udc.c @@ -1622,6 +1622,7 @@ static int qe_ep_disable(struct usb_ep *_ep) nuke(ep, -ESHUTDOWN); ep->desc = NULL; ep->stopped = 1; + ep->tx_req = NULL; qe_ep_reset(udc, ep->epnum); spin_unlock_irqrestore(&udc->lock, flags);
While disabling an endpoint the driver nuking any pending requests, thus completing them with -ESHUTDOWN status. But the driver doesn't clear the tx_req, which means that a next TX request (after ep_enable), might get stalled, since the driver won't queue the new reqests. This fixes a bug I'm observing with ethernet gadget while playing with ifconfig usb0 up/down (the up/down sequence disables and enables `in' and `out' endpoints). Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> --- drivers/usb/gadget/fsl_qe_udc.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)