RE: [BUG REPORT] usb: dwc3: Bug while setting the USB transfer bandwidth on UVC gadget driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

>Hi,
>
>(please don't top-post :-)
I have tried my best to meet the format requirement

>
>"Chow, Watson" <Watson.Chow@xxxxxxxxx> 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?

>
>> 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?

>
>> 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 ???


best regards,

Watson
-----Original Message-----
From: Felipe Balbi <balbi@xxxxxxxxxx> 
Sent: Friday, May 14, 2021 6:32 PM
To: Chow, Watson <Watson.Chow@xxxxxxxxx>; linux-usb@xxxxxxxxxxxxxxx
Subject: RE: [BUG REPORT] usb: dwc3: Bug while setting the USB transfer bandwidth on UVC gadget driver


Hi,

(please don't top-post :-)

"Chow, Watson" <Watson.Chow@xxxxxxxxx> 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.

> 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.

> 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.

-- 
balbi




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux