
Jerry Van Baren wrote:
Andre Puschmann wrote:
hallo, i know this newsgroup already talked about this subject and of course i read this stuff but there are still some questions ..
i am currently trying to download a kernel image via tftp from a tftp-server on my hostpc which is connected through a ethernet-switch. but i always get timeouts .. look at this:
<log> Load address: 0x20800000 Loading: *\0x08#######T ##################################T ###################T ####T ##T # \0x09 ###T #T #########T ########T #############T ##T #############T ########T #############T \0x09 #####T ###T ######T #######T #######T #############T ##T ##############T ########### \0x09 ########### done </log>
i mean .. the transfer is ok .. but it takes ages :-)
it looks like this if i connect my board directly to my hostpc.
<log> Load address: 0x20800000 Loading: *\0x08T ################################################################# \0x09 ################################################################# \0x09 ################################################################# \0x09 ########### done </log>
does anybody got the same issues? i mean there is no huge traffic on the net and my local tftp client loads the 1MB kernel-image in seconds. i am using u-boot-1.1.1 and i also tried u-boot-1.1.4!
regards andre
My guess is that you have a full duplex/half duplex problem. Verify that your board/u-boot is setting your ethernet to the proper duplex (full/half). I'm guessing your board is half duplex but your switch is full (typical of a switch ;-).
The switch sends traffic to your board while your board is transmitting... that is a collision (late collision at that) to your board but is OK to the switch. This doesn't happen nearly as much with your PC since you have a dedicated link without much asynchronous traffic.
This is a FAQ type problem where the software (u-boot/linux) needs to poll the PHY chip for duplex and then (re)configure the MAC chip (separate or built into the CPU) to match. If the poll isn't happening or has a bug, you have a problem.
gvb
thanks for your tip .. sorry i am not that introduced in how autonegotiation works but i guess the function dm9161_AutoNegotiate() in dm9161.c does the related stuff. i mean the switch i am using is a no-name one and with an other netg**r-switch it works nice, just tested it ... so it seems to be a bug in that fuctions, right??
regards andre