> > See here: > > daec765da767e4a6a30e1298862b28f2cae9a73f > > usb: gadget: mv_udc: fix dtd dma confusion > > > > So hereby I'm CC-ing all *udc.c maintainers to point out that this > > issue maybe affects you too. > > > > > > --- > > Subject: [PATCH] usb: gadget: fsl_udc: fix dtd dma confusion > > > > The controller will hang when doing testings with g_ether and iperf > > (tool for measuring maximum TCP and UDP bandwidth). This patch adds a > > delay to wait for controller to release dtd dma before freeing it. > > > > Signed-off-by: Christoph Fritz <chf.fritz@xxxxxxxxxxxxxx> > > --- > > drivers/usb/gadget/fsl_udc_core.c | 9 +++++++++ > > 1 files changed, 9 insertions(+), 0 deletions(-) > > > > diff --git a/drivers/usb/gadget/fsl_udc_core.c > b/drivers/usb/gadget/fsl_udc_core.c > > index 55abfb6..fc86108 100644 > > --- a/drivers/usb/gadget/fsl_udc_core.c > > +++ b/drivers/usb/gadget/fsl_udc_core.c > > @@ -1638,6 +1638,15 @@ static int process_ep_req(struct fsl_udc *udc, > int pipe, > > status = REQ_UNCOMPLETE; > > return status; > > } else if (remaining_length) { > > + /* wait controller release dtd dma */ > > + while ((curr_qh->curr_dtd_ptr == curr_td->td_dma)) { > > + if (curr_td->next_td_ptr == > > + EP_QUEUE_HEAD_NEXT_TERMINATE) { > > + udelay(100); > > + break; > > + } > > + udelay(1); > > + } > > if (direction) { > > VDBG("Transmit dTD remaining length not zero"); > > status = -EPROTO; > > -- > > 1.7.2.5 > > ping - what about this patch? Will it be applied? > Christoph, it is better use errata suggests workaround (postpone free dtd memory), and you can find related code at: http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/tree/ drivers/usb/gadget/arcotg_udc.c?h=imx_3.0.15 The code is defined with POSTPONE_FREE_LAST_DTD > Thanks, > -- Christoph > -- 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