On Wed, Apr 11, 2012 at 10:15:49AM -0300, Fabio Estevam wrote: > On Wed, Apr 11, 2012 at 4:39 AM, Christoph Fritz > <chf.fritz@xxxxxxxxxxxxxx> wrote: > > > Can you approve this behaviour of g_ether/usbnet when using iperf? > > I am not very familiar with iperf, so I will let others comment. Hi to All, after a while of testing and searching I can come up with a patch that fixes g_ether <-> iperf for fsl_udc on ARM i.MX35. The sad part is that this kind of fix is already implemented for marvell mv_udc driver since last year but still _not_ in the ~15 other *udc.c drivers. 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. And maybe someone can explain if this: + if (curr_td->next_td_ptr == EP_QUEUE_HEAD_NEXT_TERMINATE) { is necessary and why (please see below). Thanks, -- Christoph --- 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 -- 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