On 15.04.19 17:17, Mathias Nyman wrote:
On 12.4.2019 22.48, Georg Chini wrote:
On 08.04.19 08:46, Georg Chini wrote:
On 02.04.19 16:52, Mathias Nyman wrote:
On 28.3.2019 15.41, Mathias Nyman wrote:
The issue happens when only a single hub and a single device is
connected to the
USB subsystem. On my previous board, I had two USB dongles and
two sound
devices connected to the same hub and it worked without issues.
So I guess it
is not a real bandwidth limit. Somehow the hub seems to eat the
bandwidth.
git://git.kernel.org/pub/scm/linux/kernel/git/mnyman/xhci.git
bandwidth-debug
New traces using the bandwidth-debug testbranch could be useful,
even without the "available bandwidth"
support
Here are the traces. In the beginning, there is no USB device
connected. Then I connect a hub
(this time a simple 4 port USB 2.0 hub). After that I connect an USB
sound device to the hub.
Hope it helps.
Traces show secondary bandwidth error response from xHC hardware when
adding ISOC OUT endpoint 1:
321.773182: xhci_add_endpoint: State disabled mult 1 max P. Streams 0
interval 1000 us max ESIT payload 200 CErr 0 Type Isoc OUT burst 0
maxp 200 deq 00000000fffb2001 avg trb len 200
321.773198: xhci_configure_endpoint_ctrl_ctx: Add: slot 1out
321.773199: xhci_configure_endpoint: RS 00001 full-speed multi-TT Ctx
Entries 7 MEL 0 us Port# 2/0 [TT Slot 7 Port# 1 TTT 0 Intr 0] Addr 0
State enabled/disabled
321.773200: xhci_queue_trb: CMD: Configure Endpoint Command: ctx
00000000fffaf000 slot 8 flags d:C
321.773380: xhci_handle_event: EVENT: TRB 00000000ffffeb60 status
'Secondary Bandwidth Error' len 0 slot 8 ep 0 type 'Command Completion
Event' flags e:c
That endpoint only moves 200 bytes every 1ms (every FS frame), which
is 1.6Mbit/s.
There was another periodic endpoint added before this one, but it only
moves 4 bytes every 32ms, equals ~1kbit/s
which together are still far from the ~12Mbit/s supported by FS bus,
even with the TT think time etc.
Traces doesn't show any incorrect values being given to xHC hw in the
context either.
Only thing I can think of is that there are other parameters affecting
the available bandwidth calculations,
such as the average TRB length, and Link powermanagement related exit
latencies.
xhci specs say:
The xHC uses the value of the Average TRB Length field in the Endpoint
Context as a metric to help
compute the system bus bandwidth requirements of an endpoint. The
accuracy of this parameter is
particularly important for periodic endpoints. An xHC will use the
Average TRB Length and other metrics to
allocate/distribute system bus bandwidth to endpoints. These “other”
metrics are xHC implementation
specific and outside the scope of this specification.
I'm out for a week, so response will be slow.
-Mathias
So what you are saying is that it's a "bug" or "feature" of the C3858
CPU and can't be fixed, right?
Regards
Georg