Hi,
we are using IDK571, TI SDK 6.0.0.7.
On IDK571 we activate RNDIS
modprobe g_ether
Case a) Windows 10 USB host connected directly to IDK571's
I connect a Windows 10 USB host is connected directly to IDK571's USB2 port (device)
IDK571 reports
[ 875.468771] 000: g_ether gadget: high-speed config #2: RNDIS
We assign ipv4 addresses to host (USB RNDIS device) and device, ping works.
If I try to upload a file from Windows host to IDK
scp <file> root@192.168.20.20
I get an extremely low throughput of about 146.1KB/s.
Case b) Windows 10 USB host connected via a hub to IDK571's
I connect
Windows 10 USB host <--> USB hub <--> IDK571's USB2 port
(I tested with powered or unpowered USB2 hubs)
If I try to upload a file from Windows host to IDK
scp <file> root@192.168.20.20
I get an expected throughput of about 7MB/s.
------
Our best guess is that the DWC3 USB controller gets inactive/idle (i.e. cannot send data) if no traffic is received from host. This could explain the extremly low data rate.
For unknown reason, a USB hub seems to keep the DWC3 USB controller active and the issue disappears
iperf3 also reveals a high asymmetry:
Windows host
iperf3.exe -c 192.168.20.20
[ 5] 0.00-10.00 sec 238 MBytes 200 Mbits/sec sender
iperf3.exe -c 192.168.20.20 -R
[ 5] 0.00-10.13 sec 27.2 MBytes 22.5 Mbits/sec 92 sender
Behaviour is the same with latest 5.4 kernel (5.4.264-rt88).
We suspect that with the standard device tree settings the DWC3 controller is not properly configured. (evidence is that we have RNDIS running with VxWorks on a am43x platform (has the same dwc3 controller) and do not see this issue)
Any help is appreciated.
Thanks, Chris