[U-Boot] CONFIG_DM_ETH USB_ETHER_ASIX Reception Issue on Tegra

Hi there
Trying to update one of my patch sets of late made me notice that the ASIX USB to Ethernet stuff if CONFIG_DM_ETH is enabled seems to be rather broken. I already sent two patches to even get that far but even with that reception still does not seem to work (see below). I tested by enabling CONFIG_DM_ETH on Colibri T20/T30 as well as Apalis T30 with CONFIG_USB_HOST_ETHER and CONFIG_USB_ETHER_ASIX enabled and a LevelOne USB-0301 ASIX AX88772 dongle. Has anybody actually tried that lately?
Colibri T20 # usb start starting USB... USB0: USB EHCI 1.00 USB1: USB EHCI 1.00 USB2: USB EHCI 1.00 scanning bus 1 for devices... 1 USB Device(s) found scanning bus 2 for devices... Warning: asix_eth using MAC address from ROM 2 USB Device(s) found scanning bus 0 for devices... 1 USB Device(s) found Colibri T20 # tftpboot $loadaddr uImage-colibri_t20 Using asix_eth device TFTP from server 192.168.10.1; our IP address is 192.168.10.4 Filename 'uImage-colibri_t20'. Load address: 0x1000000 Loading: EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5
Retry count exceeded; starting again Colibri T20 #

On Monday, August 03, 2015 at 05:45:34 PM, Marcel Ziswiler wrote:
Hi there
Trying to update one of my patch sets of late made me notice that the ASIX USB to Ethernet stuff if CONFIG_DM_ETH is enabled seems to be rather broken. I already sent two patches to even get that far but even with that reception still does not seem to work (see below). I tested by enabling CONFIG_DM_ETH on Colibri T20/T30 as well as Apalis T30 with CONFIG_USB_HOST_ETHER and CONFIG_USB_ETHER_ASIX enabled and a LevelOne USB-0301 ASIX AX88772 dongle. Has anybody actually tried that lately?
Colibri T20 # usb start starting USB... USB0: USB EHCI 1.00 USB1: USB EHCI 1.00 USB2: USB EHCI 1.00 scanning bus 1 for devices... 1 USB Device(s) found scanning bus 2 for devices... Warning: asix_eth using MAC address from ROM 2 USB Device(s) found scanning bus 0 for devices... 1 USB Device(s) found Colibri T20 # tftpboot $loadaddr uImage-colibri_t20 Using asix_eth device TFTP from server 192.168.10.1; our IP address is 192.168.10.4 Filename 'uImage-colibri_t20'. Load address: 0x1000000 Loading: EHCI timed out on TD - token=0x8008d80
This stuff looks more like a breakage in the EHCI controller, no ?
Best regards, Marek Vasut

On Monday, August 03, 2015 at 10:29:40 PM, Marcel Ziswiler wrote:
On Mon, 2015-08-03 at 20:48 +0200, Marek Vasut wrote:
This stuff looks more like a breakage in the EHCI controller, no ?
Well, but that same EHCI controller works just fine as long as CONFIG_DM_ETH is not defined.
This trims down the scope quite considerably. Does the controller with with CONFIG_DM_ETH enabled if you plug in a USB stick instead of an ethernet ?
Best regards, Marek Vasut

On Tue, 2015-08-04 at 01:10 +0200, Marek Vasut wrote:
This trims down the scope quite considerably. Does the controller with with CONFIG_DM_ETH enabled if you plug in a USB stick instead of an ethernet ?
Yes, USB sticks work just fine. It's just the USB Ethernet stuff which does no longer work once CONFIG_DM_ETH is enabled.

Hi Marcel,
On 4 August 2015 at 01:33, Marcel Ziswiler marcel@ziswiler.com wrote:
On Tue, 2015-08-04 at 01:10 +0200, Marek Vasut wrote:
This trims down the scope quite considerably. Does the controller with with CONFIG_DM_ETH enabled if you plug in a USB stick instead of an ethernet ?
Yes, USB sticks work just fine. It's just the USB Ethernet stuff which does no longer work once CONFIG_DM_ETH is enabled.
The memalign() function arguments are around the wrong way! Definitely worth seeing if that fixes it. For some reason rpi and minnowboard seem to work even with this error.
Regards, Simon

On Thu, 2015-08-06 at 23:29 -0600, Simon Glass wrote:
The memalign() function arguments are around the wrong way!
I assume you meant that one:
diff --git a/drivers/usb/eth/usb_ether.c b/drivers/usb/eth/usb_ether.c index 3c3e082..11d26be 100644 --- a/drivers/usb/eth/usb_ether.c +++ b/drivers/usb/eth/usb_ether.c @@ -73,7 +73,7 @@ int usb_ether_register(struct udevice *dev, struct ueth_data *ueth, int rxsize) }
ueth->rxsize = rxsize; - ueth->rxbuf = memalign(rxsize, ARCH_DMA_MINALIGN); + ueth->rxbuf = memalign(ARCH_DMA_MINALIGN, rxsize); if (!ueth->rxbuf) return -ENOMEM;
Definitely worth seeing if that fixes it. For some reason rpi and minnowboard seem to work even with this error.
Unfortunately still the same:
U-Boot SPL 2015.10-rc1-00188-gfac971b-dirty (Aug 07 2015 - 06:34:28)
U-Boot 2015.10-rc1-00188-gfac971b-dirty (Aug 07 2015 - 06:34:28 +0000)
TEGRA20 Model: Toradex Colibri T20 Board: Toradex Colibri T20 DRAM: 512 MiB NAND: 1024 MiB MMC: Tegra SD/MMC: 0 *** Warning - bad CRC, using default environment
In: serial Out: serial Err: serial Net: Net Initialization Skipped No ethernet found. Hit any key to stop autoboot: 0 Colibri T20 # usb start starting USB... USB0: USB EHCI 1.00 USB1: USB EHCI 1.00 USB2: USB EHCI 1.00 scanning bus 1 for devices... 1 USB Device(s) found scanning bus 2 for devices... Warning: asix_eth using MAC address from ROM 2 USB Device(s) found scanning bus 0 for devices... 1 USB Device(s) found Colibri T20 # dhcp BOOTP broadcast 1 BOOTP broadcast 2 BOOTP broadcast 3 EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 BOOTP broadcast 4 BOOTP broadcast 5 EHCI timed out on TD - token=0x88008d80 Rx: failed to receive: -5 BOOTP broadcast 6 BOOTP broadcast 7 EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 BOOTP broadcast 8 BOOTP broadcast 9 EHCI timed out on TD - token=0x88008d80 Rx: failed to receive: -5
Retry time exceeded; starting again Colibri T20 #

Hi Marcel,
On 7 August 2015 at 00:41, Marcel Ziswiler marcel@ziswiler.com wrote:
On Thu, 2015-08-06 at 23:29 -0600, Simon Glass wrote:
The memalign() function arguments are around the wrong way!
I assume you meant that one:
diff --git a/drivers/usb/eth/usb_ether.c b/drivers/usb/eth/usb_ether.c index 3c3e082..11d26be 100644 --- a/drivers/usb/eth/usb_ether.c +++ b/drivers/usb/eth/usb_ether.c @@ -73,7 +73,7 @@ int usb_ether_register(struct udevice *dev, struct ueth_data *ueth, int rxsize) }
ueth->rxsize = rxsize;
ueth->rxbuf = memalign(rxsize, ARCH_DMA_MINALIGN);
ueth->rxbuf = memalign(ARCH_DMA_MINALIGN, rxsize); if (!ueth->rxbuf) return -ENOMEM;
Definitely worth seeing if that fixes it. For some reason rpi and minnowboard seem to work even with this error.
Unfortunately still the same:
U-Boot SPL 2015.10-rc1-00188-gfac971b-dirty (Aug 07 2015 - 06:34:28)
U-Boot 2015.10-rc1-00188-gfac971b-dirty (Aug 07 2015 - 06:34:28 +0000)
TEGRA20 Model: Toradex Colibri T20 Board: Toradex Colibri T20 DRAM: 512 MiB NAND: 1024 MiB MMC: Tegra SD/MMC: 0 *** Warning - bad CRC, using default environment
In: serial Out: serial Err: serial Net: Net Initialization Skipped No ethernet found. Hit any key to stop autoboot: 0 Colibri T20 # usb start starting USB... USB0: USB EHCI 1.00 USB1: USB EHCI 1.00 USB2: USB EHCI 1.00 scanning bus 1 for devices... 1 USB Device(s) found scanning bus 2 for devices... Warning: asix_eth using MAC address from ROM 2 USB Device(s) found scanning bus 0 for devices... 1 USB Device(s) found Colibri T20 # dhcp BOOTP broadcast 1 BOOTP broadcast 2 BOOTP broadcast 3 EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 BOOTP broadcast 4 BOOTP broadcast 5 EHCI timed out on TD - token=0x88008d80 Rx: failed to receive: -5 BOOTP broadcast 6 BOOTP broadcast 7 EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 BOOTP broadcast 8 BOOTP broadcast 9 EHCI timed out on TD - token=0x88008d80 Rx: failed to receive: -5
Retry time exceeded; starting again Colibri T20 #
One point to make is that I have seen this on and off for a while. When I tested the driver model EHCI support I found this bug. But then when I turned off driver model it was still there. So I decided it was pre-existing. Also I'm not sure that this error is handled correctly. The code that times out does not retry properly.
Marek do
Regards, Simon

On Friday, August 07, 2015 at 09:09:15 PM, Simon Glass wrote:
Hi Marcel,
On 7 August 2015 at 00:41, Marcel Ziswiler marcel@ziswiler.com wrote:
On Thu, 2015-08-06 at 23:29 -0600, Simon Glass wrote:
The memalign() function arguments are around the wrong way!
I assume you meant that one:
diff --git a/drivers/usb/eth/usb_ether.c b/drivers/usb/eth/usb_ether.c index 3c3e082..11d26be 100644 --- a/drivers/usb/eth/usb_ether.c +++ b/drivers/usb/eth/usb_ether.c @@ -73,7 +73,7 @@ int usb_ether_register(struct udevice *dev, struct ueth_data *ueth, int rxsize)
} ueth->rxsize = rxsize;
ueth->rxbuf = memalign(rxsize, ARCH_DMA_MINALIGN);
ueth->rxbuf = memalign(ARCH_DMA_MINALIGN, rxsize); if (!ueth->rxbuf) return -ENOMEM;
Definitely worth seeing if that fixes it. For some reason rpi and minnowboard seem to work even with this error.
Unfortunately still the same:
U-Boot SPL 2015.10-rc1-00188-gfac971b-dirty (Aug 07 2015 - 06:34:28)
U-Boot 2015.10-rc1-00188-gfac971b-dirty (Aug 07 2015 - 06:34:28 +0000)
TEGRA20 Model: Toradex Colibri T20 Board: Toradex Colibri T20 DRAM: 512 MiB NAND: 1024 MiB MMC: Tegra SD/MMC: 0 *** Warning - bad CRC, using default environment
In: serial Out: serial Err: serial Net: Net Initialization Skipped No ethernet found. Hit any key to stop autoboot: 0 Colibri T20 # usb start starting USB... USB0: USB EHCI 1.00 USB1: USB EHCI 1.00 USB2: USB EHCI 1.00 scanning bus 1 for devices... 1 USB Device(s) found scanning bus 2 for devices... Warning: asix_eth using MAC address from ROM 2 USB Device(s) found scanning bus 0 for devices... 1 USB Device(s) found Colibri T20 # dhcp BOOTP broadcast 1 BOOTP broadcast 2 BOOTP broadcast 3 EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 BOOTP broadcast 4 BOOTP broadcast 5 EHCI timed out on TD - token=0x88008d80 Rx: failed to receive: -5 BOOTP broadcast 6 BOOTP broadcast 7 EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 BOOTP broadcast 8 BOOTP broadcast 9 EHCI timed out on TD - token=0x88008d80 Rx: failed to receive: -5
Retry time exceeded; starting again Colibri T20 #
One point to make is that I have seen this on and off for a while. When I tested the driver model EHCI support I found this bug. But then when I turned off driver model it was still there. So I decided it was pre-existing. Also I'm not sure that this error is handled correctly. The code that times out does not retry properly.
Marek do
I think there's a bit of this sentence missing. But the fix I pushed was for enumeration, not for this.
Regards, Simon

Hi Marcel,
On 3 August 2015 at 09:45, Marcel Ziswiler marcel@ziswiler.com wrote:
Hi there
Trying to update one of my patch sets of late made me notice that the ASIX USB to Ethernet stuff if CONFIG_DM_ETH is enabled seems to be rather broken. I already sent two patches to even get that far but even with that reception still does not seem to work (see below). I tested by enabling CONFIG_DM_ETH on Colibri T20/T30 as well as Apalis T30 with CONFIG_USB_HOST_ETHER and CONFIG_USB_ETHER_ASIX enabled and a LevelOne USB-0301 ASIX AX88772 dongle. Has anybody actually tried that lately?
Colibri T20 # usb start starting USB... USB0: USB EHCI 1.00 USB1: USB EHCI 1.00 USB2: USB EHCI 1.00 scanning bus 1 for devices... 1 USB Device(s) found scanning bus 2 for devices... Warning: asix_eth using MAC address from ROM 2 USB Device(s) found scanning bus 0 for devices... 1 USB Device(s) found Colibri T20 # tftpboot $loadaddr uImage-colibri_t20 Using asix_eth device TFTP from server 192.168.10.1; our IP address is 192.168.10.4 Filename 'uImage-colibri_t20'. Load address: 0x1000000 Loading: EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5 T EHCI timed out on TD - token=0x8008d80 Rx: failed to receive: -5
Retry count exceeded; starting again Colibri T20 #
Not on Tegra. I did test it on minnowmax and it worked. But the cache implementation is quite different on that platform.
Regards, Simon
participants (3)
-
Marcel Ziswiler
-
Marek Vasut
-
Simon Glass