On Wed, Sep 28, 2016 at 11:05:30AM +0300, Felipe Balbi wrote: > > Hi, > > yfw <nh26223@xxxxxxxxx> writes: > >>> Bin Liu <b-liu@xxxxxx> writes: > >>>>>>>>> Does this mean the issue of isoc high bandwidth transfer was fixed by > >>>>>>>>> this patchset per your test? > >>>>>>>> > >>>>>>>> No, I couldn't get g_webcam to work yet. > >>>>>>> > >>>>>>> In mainline, g_webcam is broken with DWC3. Also these two patches don't > >>>>>>> fix the issue on v4.4.21. > >>>>>> > >>>>>> care to send tracepoint output? Best if you could cherry pick my latest > >>>>>> tracepoint changes so we have the best output possible. > >>>>>> > >>>>>> I have also built a branch with v4.4.21 + all dwc3 patches (except for > >>>>>> device properties and PCI stuff) which you could use for testing. If you > >>>>>> run with that, then I can get proper trace output and I can try to > >>>>>> figure out what's missing. > >>>>>> > >>>>>> Branch is here: > >>>>>> > >>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git usb/v4.4.21+dwc3 > >>>>> > >>>>> This branch does not generate the isoch traffic (on ep2in). ftrace > >>>>> attached (dwc3-g_webcam-v4.4.21+tp.ftrace). > >>>>> > >>>>> I also attached the ftrace log for v4.4.21 tag > >>>>> (dwc3-g_webcam-v4.4.21.ftrace) for comparison, which has ep2in isoch > >>>>> traffic, but only one transaction per SOF. > >>>> > >>>> Sorry, I didn't realize the ftrace file size is huge. Attached the > >>>> tarball here. > >>> > >>> looking at webcam.c, it'll set wMaxPacket correctly (to 0x1400) if you > >>> pass streaming_maxpacket=3072. So that's one thing. > >>> > >>> I'll look at this log with more detail tomorrow, though. > >> > >> here's a bug in composite.c because of a bug in usb_endpoint_maxp(). > >> > >> diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c > >> index 32176f779861..f6a7583ab6d1 100644 > >> --- a/drivers/usb/gadget/composite.c > >> +++ b/drivers/usb/gadget/composite.c > >> @@ -197,7 +197,7 @@ int config_ep_by_speed(struct usb_gadget *g, > >> > >> ep_found: > >> /* commit results */ > >> - _ep->maxpacket = usb_endpoint_maxp(chosen_desc); > >> + _ep->maxpacket = usb_endpoint_maxp(chosen_desc) & 0x7ff; > > > > uvc_video set the each request size (you could check function > > uvc_video_alloc_requests()) for uvc: > > req_size = video->ep->maxpacket > > * max_t(unsigned int, video->ep->maxburst, 1) > > * (video->ep->mult + 1); > > > > > > If we change the ep->maxpacket like this, uvc layer will only set the > > req size to 1024 (while it should be 3072 if we want to use high > > bindwidth isoc transfer). > > it'll be 1024 * (mult + 1). Hmm, mult isn't set for highspeed isoc > endpoints. So here you go: Great! all the 4 patches you sent so far fix the issue on v4.4.21 tag! Now I see 3 1024-bytes transactions in each SOF. Thanks, -Bin. -- 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