On Tue, 22 May 2012, Sarah Sharp wrote: > On Tue, May 22, 2012 at 09:45:46AM +0530, Aman Bansal wrote: > > Dear Alan and Sarah, > > > > We have USB 2.0 embedded device as well as embedded USB 2.0 host. > > We have implemented a gadget driver on the device as well as USB client > > driver on host which uses interrupt endpoints for IN and OUT transfer. > > > > We are facing a problem with usb_submit_urb time taken for completion on > > the interrupt end-point. > > > > In our implementation with EHCI controller and linux-3.0.20: > > The time interval on USB host between calling usb_submit_urb and its > > completion callback invocation on interrupt endpoints > > takes around 636 microseconds as compared to 28 microseconds for bulk > > endpoint. Why is that a problem? > What was the interval set to on the interrupt URB? Also, what speed does the embedded device run at: low, full, or high? > > Is there any timing issue with interrupt transfer in ehci host controller > > or some other aspect related to interrupt transfers? Not as far as I know. > > Is there any way I can improve interrupt transfer latency between my host > > and device ? Why do you want to decrease the latency? By definition, interrupt transfers have _bounded_ latency, not _small_ latency. In any case, if you are doing multiple transfers then it helps always to keep the pipeline non-empty: Submit multiple interrupt URBs, and each time one of them completes, submit a new one (or resubmit the one that just completed). That will minimize latency overall. > Have you looked at a bus trace of your host controller to see when it > actually sends the interrupt transfer and compared to the USB mon trace > of when it was submitted and completed? They might be difficult to compare, because a bus trace wouldn't have any timing information in common with a usbmon trace. Alan Stern -- 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