public inbox for linux-usb@vger.kernel.org
 help / color / mirror / Atom feed
From: Peter Chen <peter.chen@kernel.org>
To: "Chow, Watson" <Watson.Chow@Avnet.com>
Cc: Felipe Balbi <balbi@kernel.org>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>
Subject: Re: [BUG REPORT] usb: dwc3: Bug while setting the USB transfer bandwidth on UVC gadget driver
Date: Mon, 7 Jun 2021 14:11:16 +0800	[thread overview]
Message-ID: <20210607061116.GA25386@nchen> (raw)
In-Reply-To: <c64f050b25d445ec8342ac25f7a563a4@Avnet.com>

On 21-06-04 02:53:19, Chow, Watson wrote:
> 
> Upgraded the kernel version to 5.9, I can set the g_webcam module pararmeters
> as follow (for max bandwidth):
> 
> streaming_maxpacket=3072
> streaming_maxburst=15
> streaming_interval=1

According the spec:
Maximum number of packet within one SoF:
(bMaxBurst + 1) * (Mult + 1) = (15  + 1) * (2 + 1)= 48
Maximum bandwidth = 48 * 1024 * 8 (B/bit) * 8 (125us/1ms) = 3.072Gbps
USB 3.0 is 8/10b coding, the theory maximum bandwidth is 5 * 0.8 = 4.096Gbps
So, your setting tells host that your have the capabilities to get the
maximum bandwidth,but you may can't get it due to the FIFO depth for endpoint
and system bus latency.

Peter

> 
> Data transfer with above setting is working now - tested with dummy data
> generator in the uvc-gadget app.
> 
> This concludes that kernel 5.4 is too old for DWC3 and UVC gadget driver
> in high bandwidth usage
> 
> 
> >>>> 4. I read through the procedures to capture debug info by debugfs. However,
> >>>> in my test with "streaming_maxburst" set to 10 or above, my system would 
> >>>> crash and I can't pick the log from that point. Any suggestion?
> >>>
> >>>have a look at ftrace_dump_on_oops.
> >>
> >> I will explore how to enable this
> >>
> >>>
> >>
> >> Btw, do you know which SoC platform can run the UVC gadget in max throughput.
> >> Raspberry Pi/TI Beaglebone/i.MX ???
> >
> >Raspberry Pi uses dwc2
> >Beaglebone uses musb
> >i.MX, I think some of them use dwc3 at least.
> >
> 
> Watson
> 
> -----Original Message-----
> From: Felipe Balbi <balbi@kernel.org> 
> Sent: Monday, May 17, 2021 1:32 PM
> To: Chow, Watson <Watson.Chow@Avnet.com>; linux-usb@vger.kernel.org
> Subject: RE: [BUG REPORT] usb: dwc3: Bug while setting the USB transfer bandwidth on UVC gadget driver
> 
> 
> Hi,
> 
> "Chow, Watson" <Watson.Chow@Avnet.com> writes:
> > Hi,
> >
> >>Hi,
> >>
> >>(please don't top-post :-)
> > I have tried my best to meet the format requirement
> 
> Thanks
> 
> >>"Chow, Watson" <Watson.Chow@Avnet.com> writes:
> >>> Balbi,
> >>>
> >>> Thanks for your quick reply.
> >>>
> >>> Some questions
> >>>
> >>> 1. You mentioned that the max bandwidth in isoc mode (USB3.0) should be 
> >>> around 4Gbps.  
> >>>
> >>> I have the below calcuation on bandwidth:
> >>> In USB3.0, 1 micro frame would take 125us and can transfer max 45000 bytes
> >>> So, in 1 sec, we will have 8000 micro frames
> >>>
> >>> Max bandwidth = 8000 x 4500 x 8 = 2.88Gbps
> >>>
> >>> Is my understanding correct?
> >>
> >>probably, It's been a while since I've dug through the spec, to be frank
> >>
> >>> 2. To achieve the max throughput, I need to configure the uvc gadget driver 
> >>> with below parameters. Am I right?
> >>>
> >>> # modprobe g_webcam streaming_maxpacket=3072 streaming_maxburst=15 
> >>> streaming_interval=1
> >>
> >>right, but there's an assumption here that the gadget will be able to
> >>feed data in a timely manner.
> >
> > How does the DWC3 driver or the gadget driver handle the case with intermittent
> > drop of the input video streaming?
> >
> > Any recover mechanism?
> 
> yeah, the missed ISOC is reported to the gadget driver and that has to
> queue new requests.
> 
> >>> 3. You suggest me to try on kernel v5.12 or the latest v5.13-rc. It looks not
> >>> easy in my side to upgrade the kernel version. It would affect those other 
> >>> device drivers I'm currently using. So, do you think there's any short cut 
> >>> to fix this problem under my current kernel version - v5.4?
> >>
> >>In that case, you need to ask for support from whoever forces you to
> >>stay with such an old kernel. I believe that would be Xilinx.
> >
> > I have a thought to back port those changes around the dwc3 and gadget driver
> > from the latest kernel version to my kernel (v5.4). Do you think this is 
> > feasible?
> 
> should be, but it's likely quite a bit of work:
> 
> $ git rev-list --count v5.4..linus/master -- drivers/usb/dwc3/
> 257
> 
> >>> 4. I read through the procedures to capture debug info by debugfs. However,
> >>> in my test with "streaming_maxburst" set to 10 or above, my system would 
> >>> crash and I can't pick the log from that point. Any suggestion?
> >>
> >>have a look at ftrace_dump_on_oops.
> >
> > I will explore how to enable this
> >
> >>
> >
> > Btw, do you know which SoC platform can run the UVC gadget in max throughput.
> > Raspberry Pi/TI Beaglebone/i.MX ???
> 
> Raspberry Pi uses dwc2
> Beaglebone uses musb
> i.MX, I think some of them use dwc3 at least.
> 
> -- 
> balbi

-- 

Thanks,
Peter Chen


  parent reply	other threads:[~2021-06-07  6:11 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-14  3:20 [BUG REPORT] usb: dwc3: Bug while setting the USB transfer bandwidth on UVC gadget driver Chow, Watson
2021-05-14  7:16 ` Felipe Balbi
2021-05-14  8:59   ` Chow, Watson
2021-05-14 10:31     ` Felipe Balbi
2021-05-17  3:58       ` Chow, Watson
2021-05-17  5:32         ` Felipe Balbi
2021-06-04  2:53           ` Chow, Watson
2021-06-04  5:15             ` Felipe Balbi
2021-06-07  6:11             ` Peter Chen [this message]
2021-06-07 11:26               ` Chow, Watson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210607061116.GA25386@nchen \
    --to=peter.chen@kernel.org \
    --cc=Watson.Chow@Avnet.com \
    --cc=balbi@kernel.org \
    --cc=linux-usb@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox