Re: [RFT PATCH 0/4] usb: dwc2: Turn on uframe sched everywhere

From: Stefan Wahren
Date: Wed Jul 11 2018 - 07:29:22 EST


Hi Doug,

[add Felipe and Grigor]

> Doug Anderson <dianders@xxxxxxxxxxxx> hat am 10. Juli 2018 um 17:21 geschrieben:
>
>
> Hi,
>
> On Tue, Jul 10, 2018 at 6:57 AM, Stefan Wahren <stefan.wahren@xxxxxxxx> wrote:
> > Hi Doug,
> >
> > since Stephen isn't BCM2835 maintainer anymore, please keep me in the loop.
>
> Sorry for missing you. :( I wonder if you should add yourself to the
> MAINTAINERS file as a reviewer for dwc2 so you can get CCed always?

i don't think this is necessary and my USB knowledge is to little. I've setup a jenkins to catch regressions from linux-next. This is currently sufficient.

>
>
> > I'm not sure how to test this. Is there some kind of test scenario (don't
> > have a USB analyzer)?
>
> I guess it'll depend on what USB devices you have sitting around. The
> more USB devices you have plugged in then the more likely the dumb
> scheduler will get things wrong and a device won't like you. You
> should also see significant compatibility improvements when you have
> low/full speed devices plugged into high speed USB hubs.
>
> IIRC when testing I did things like:
> - In general, try to have lots of things plugged in.
> - Plug many different keyboards / mice in. See if keys are dropped /
> mouse is jerky.
> - Try USB audio (ideally full speed, not high speed). How is the audio?
> - If you're brave, try a USB webcam. How is the video?

Thanks for the hints. The BCM2835 only have 8 EP, so my test setup isn't big:

1x Rasberry Pi 2 (with onboard ethernet SMSC95xx via USB)
1x keyboard connected to the Pi directly
1x external powered 7 port HUB (1x mice and 1x USB serial adapter)

/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc2/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
|__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
|__ Port 2: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 2: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 4: Dev 5, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 6, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 7, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 4: Dev 8, If 0, Class=Vendor Specific Class, Driver=, 12M

But even in this simple scenario, your patch #1 is an improvement.

Without the hub connected and without your patch
or with the hub (and the 2 devices) connected and with your patch the SMSC95xx works properly:

[ 45.668254] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup
[ 47.146506] smsc95xx 1-1.1:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1

But with the hub (and the 2 devices) connected and without your patch the SMSC95xx driver has timeouts and in the result the RPi won't get an IP from my router:

[ 20.408622] smsc95xx 1-1.1:1.0 eth0: hardware isn't capable of remote wakeup
[ 20.807821] Adding 102396k swap on /var/swap. Priority:-2 extents:1 across:102396k SS
[ 26.401346] smsc95xx 1-1.1:1.0 eth0: Failed to read reg index 0x00000114: -110
[ 26.401360] smsc95xx 1-1.1:1.0 eth0: Error reading MII_ACCESS
[ 26.401371] smsc95xx 1-1.1:1.0 eth0: MII is busy in smsc95xx_mdio_read
[ 26.401387] smsc95xx 1-1.1:1.0 eth0: Failed to read MII_BMSR
[ 31.441429] smsc95xx 1-1.1:1.0 eth0: Failed to read reg index 0x00000114: -110
[ 31.441454] smsc95xx 1-1.1:1.0 eth0: Error reading MII_ACCESS
[ 31.441465] smsc95xx 1-1.1:1.0 eth0: MII is busy in smsc95xx_mdio_read
[ 31.441481] smsc95xx 1-1.1:1.0 eth0: link reset failed (-110) usbnet usb-3f980000.usb-1.1, smsc95xx USB 2.0 Ethernet
[ 36.481359] smsc95xx 1-1.1:1.0 eth0: Failed to read reg index 0x00000114: -110
[ 36.481372] smsc95xx 1-1.1:1.0 eth0: Error reading MII_ACCESS
[ 36.481383] smsc95xx 1-1.1:1.0 eth0: MII is busy in smsc95xx_mdio_read
[ 36.481402] smsc95xx 1-1.1:1.0 eth0: link reset failed (-110) usbnet usb-3f980000.usb-1.1, smsc95xx USB 2.0 Ethernet
[ 41.521345] smsc95xx 1-1.1:1.0 eth0: Failed to read reg index 0x00000114: -110
[ 41.521358] smsc95xx 1-1.1:1.0 eth0: Error reading MII_ACCESS
[ 41.521369] smsc95xx 1-1.1:1.0 eth0: MII is busy in smsc95xx_mdio_read
[ 41.521387] smsc95xx 1-1.1:1.0 eth0: link reset failed (-110) usbnet usb-3f980000.usb-1.1, smsc95xx USB 2.0 Ethernet
[ 46.561349] smsc95xx 1-1.1:1.0 eth0: Failed to read reg index 0x00000114: -110
[ 46.561363] smsc95xx 1-1.1:1.0 eth0: Error reading MII_ACCESS
[ 46.561374] smsc95xx 1-1.1:1.0 eth0: MII is busy in smsc95xx_mdio_read
[ 46.561393] smsc95xx 1-1.1:1.0 eth0: link reset failed (-110) usbnet usb-3f980000.usb-1.1, smsc95xx USB 2.0 Ethernet
[ 59.441375] smsc95xx 1-1.1:1.0 eth0: Failed to read reg index 0x00000118: -110
[ 59.441389] smsc95xx 1-1.1:1.0 eth0: Error reading MII_DATA
[ 59.441405] smsc95xx 1-1.1:1.0 eth0: link reset failed (-110) usbnet usb-3f980000.usb-1.1, smsc95xx USB 2.0 Ethernet
[ 64.545268] smsc95xx 1-1.1:1.0 eth0: Failed to read reg index 0x00000114: -110
[ 64.545285] smsc95xx 1-1.1:1.0 eth0: Error reading MII_ACCESS
[ 64.545297] smsc95xx 1-1.1:1.0 eth0: MII is busy in smsc95xx_mdio_read
[ 64.545324] smsc95xx 1-1.1:1.0 eth0: link reset failed (-110) usbnet usb-3f980000.usb-1.1, smsc95xx USB 2.0 Ethernet

So you can have my

Tested-by: Stefan Wahren <stefan.wahren@xxxxxxxx>

for the bcm patch.

>
>
> If you're trying a USB webcam w/ dwc2, maybe add in patches mentioned
> in <https://bugs.chromium.org/p/chromium/issues/detail?id=820961>

Interesting

Best regards
Stefan

>
>
> -Doug