[U-Boot] TFTP timeouts, i.mx fec problem?

Ruud Commandeur RCommandeur at clb.nl
Fri May 31 08:56:27 CEST 2013


Hi everyone,

I have been testing for a while now on the i.mx28 evk, and I noticed
that almost all tftp transfers take some time before they actually
start. It will show a 'T' as first character, then followed by '#'
chars. After enabling some debug info, it appeared that it would always
start by sending an ARP request, but this ARP message does not get sent
actually (monitored with Wireshark). After 5 seconds the 2nd ARP request
is sent (this does get traced by Wireshark) and also responded and from
that point all goes well.

When tracing the code, it could see that fec_send is called for the 1st
ARP request and also the return value indicates that sending should have
been succeeded (fec_send: status 0xc00 index 0 ret 0). But no package is
actually sent. My first guess would be that it has something to do with
the TBD / DMA part. The fec_tbd_init also shows some note about a rare
hardware condition regarding the WRAP bit (all in
drivers/net/fec_mxc.c). Could it be that there is still another issue
regarding the chip that causes this? If I do a tftp transfer from linux
on the same board and in the same network, it does start immediately.

=======================DEBUG LOG===========================
U-Boot > tftp versions.ini
eth_halt: wait for stop regs
eth_halt: done
Trying FEC0
fec_init
fec_tbd_init
fec_mii_setspeed: mii_speed 0000003c
fec_open: fec_open(dev)
fec_open:Speed=100
TFTP blocksize = 1468, timeout = 5000 ms
TFTP from server 192.168.0.100; our IP address is 192.168.0.109
Filename 'versions.ini'.
Loading: send option "timeout 5"
sending ARP for 192.168.0.100
ARP broadcast 1
fec_send: status 0xc00 index 0 ret 0
T send option "timeout 5"
sending ARP for 192.168.0.100
ARP broadcast 1
fec_send: status 0x2c00 index 1 ret 0
Got ARP REPLY, set eth addr (00:0c:29:65:b4:8a)
fec_send: status 0xc00 index 0 ret 0
received UDP (to=192.168.0.109, from=192.168.0.100, len=53)
Got OACK: timeout 5
Blocksize ack: 1468, 1468
sending UDP to 192.168.0.100/00:0c:29:65:b4:8a
fec_send: status 0x2c00 index 1 ret 0
received UDP (to=192.168.0.109, from=192.168.0.100, len=100)
#sending UDP to 192.168.0.100/00:0c:29:65:b4:8a
fec_send: status 0xc00 index 0 ret 0

         0 Bytes/s
done
Bytes transferred = 68 (44 hex)
eth_halt: wait for stop regs
eth_halt: done
U-Boot >
==========================================================

Thanks in advance for any comments. Regards,

Ruud


More information about the U-Boot mailing list