EHCI timeouts in uboot

Hi,

I figured it out :slight_smile:

without 'setenv serverip<something>' it will load from 0.0.0.0, which
does work, but upsets uboot greatly!

well even if that indeed solves your problem I think there is an other
problem as even with a correct IP configuration I meet the same timeout
problem when connected to a Gb switch

Did you confirm earlier that you got this working with a particular switch?

So are you saying that there is a problem on the Networking side? I
don't see how because its USB that timesout on a "receive" request. I
don't think this is the correct behavior of LAN9514, as it surely sets
one of the status registers when something goes wrong.

I checked all the MII registers and I don't see any problem there so I believe this is not a problem on the networking side at least on the PHY side because I didn't checked the MAC registers.

The only fact I can tell is that here on a 1Gb switch, USB timeouts are always present (even ping doesn't work) and on a 100/10 switch, USB timeouts are quite rare (and only appear during tftp transfers).
As I have other things to bring up and that the 9514 is just a debug tool in this project, I'm now on a 10/100 switch and I'm not investigating more on this issue.

Eric

Hi Robert,

Hi,

same thing here after a few transfers

Eric

At least we've got a bug which can be reproduced regardless of what's
between the beagle and the PC.

I tried also to stress test the beagle from user space, but it's stable
there - no complaints from the kernel with tftp -g -r uImage
192.168.5.5; ls -la

If you want me to test a patch just let me know;)

Regards,

Robert
..."As far as I know we never had an undetected error." - Anonymous

My public pgp key is available at:
http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x90320BF1

The previous value of 5000 ms on the beagle-xm is still too small
and causes with tftp transfers:

USB_TIMEOUT_MC(pipe)= 5000
EHCI timed out on TD - token=0x88008d80

... which leads to an error condition and breaks the tftp transfer.

Experiments with a beagle-xm rev c show that 5006 ms would be
sufficient, but let's give it 10000 ms - it's free;)

Signed-off-by: Robert Berger <robert.berger@ReliableEmbeddedSystems.com>

With this, the EHCI seems to "recover" from a timeout. This is particularly
observable if you were to ping the wrong IP Address and then ping the correct
one or if there was a temporary failure during tftp sessions.

All it takes is one timeout to disable it. If you have a noisy network (lot
of traffic), even if the traffic is not for the board, the timeouts don't occur.

Signed-off-by: Joel A Fernandes <agnel.joel@gmail.com>

Hi Joel,

---
Robert, Could you see if this patch solves the issue you're seeing without
increasing the timeout?

The tftp session retrieves the uImage with your patch and a timeout of 5000:

OMAP3 beagleboard.org # tftp 0x82000000 beagle-xm-rev-c/uImage
Waiting for Ethernet connection... done.
Using sms0 device
TFTP from server 192.168.5.5; our IP address is 192.168.5.3
Filename 'beagle-xm-rev-c/uImage'.
Load address: 0x82000000
Loading: #################################################################
   ############################################################EHCI timed
out on TD - token=0x88008d80
T EHCI timed out on TD - token=0x88008d80
T EHCI timed out on TD - token=0x88008d80
T #####
   ###################################EHCI timed out on TD - token=0x88008d80
T EHCI timed out on TD - token=0x88008d80
T EHCI timed out on TD - token=0x88008d80
T #EHCI timed out on TD - token=0x88008d80
T ##############
done
Bytes transferred = 2632196 (282a04 hex)
OMAP3 beagleboard.org #

Regards,

Robert...fortune says today:There is no TRUTH. There is no REALITY.
There is no CONSISTENCY. There are no ABSOLUTE STATEMENTS I'm very
probably wrong.

My public pgp key is available at:
http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x90320BF1

Hi Joel,

With this, the EHCI seems to "recover" from a timeout. This is particularly
observable if you were to ping the wrong IP Address and then ping the correct
one or if there was a temporary failure during tftp sessions.

All it takes is one timeout to disable it. If you have a noisy network (lot
of traffic), even if the traffic is not for the board, the timeouts don't occur.

Signed-off-by: Joel A Fernandes <agnel.joel@gmail.com>
---
Robert, Could you see if this patch solves the issue you're seeing without
increasing the timeout?
Simon, Could this be a fix for a similar issue you were seeing with asix?

Yes this is better (ASIX can recover from a timeout), but I am
concerned that it carries on without reporting an error. Is that
right?

Should we disable async schedule and then return an error?

With respect to using a bulk USB stick (some of which take 3s or more
to respond to a submit) this doesn't make any difference for me. It
seems to take a long time to respond the first time, so the 5s timeout
seems prudent.

Since this sorts out the network side we can probably skip that patch.

Regards,
Simon

Koen grabbed some patches I added that seemed to “fix” the tftpboot and ping problem for me:

https://github.com/koenkooi/u-boot
or my fork @ https://github.com/kylemanna/u-boot

I’d be interested to hear if adding the delay at the end of the smsc95xx init helped your problem at all.

  • Kyle