[ECOS] ping reply not synchronized with the ping request

Jürgen Lambrecht J.Lambrecht@televic.com
Wed Jun 4 09:23:00 GMT 2008

Was a (last?) bug in if_at91.c, cf. 
I had forgotten to call '_eth_drv_tx_done' and set 'priv->tx_busy = 
false' in case of a TX error.
In attach again the patch.

Test result:
500 pings worked, no loss.
For each ping, "AT91_ETH: Tx BEX" is printed (buffers exhausted in 
mid-frame). I think that is because the last DMA runs out of data but it 
is ok because there is no data anymore - maybe the length of the DMA is 

Kind regards,

Lambrecht Jürgen wrote:
> Hello,
> Now I've got the Ethernet driver running for my AT91SAM9260-EK based board (if_at91.c - see previous posts of me), I have some strange behavior with the FreeBSD TCP/IP stack:
> -> at startup a gratuitous ARP is sent out
> <- when a ARP request arrives
> -> again a gratuitous ARP is sent out
> <- then the ICMP ping request 1 arrives
> -> a normal ARP reply is sent
> <- ping request 2
> -> ping reply 1
> <- ping request 3
> ...
> When I stop the ping, and start again after clearing the arp cache, the last
> "lost" ping reply is sent as response to the first ARP request.
> It is like the TX or RX part holds on to 1 packet, and only releases it when a
> new packet arrives.
> Why again a gratuitous ARP - is the driver initialized again? 
> Or does the driver normally sends out 2 gratuitous ARPs at startup?
> Kind regards,
> Jürgen

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: if_at91_udiff2.txt
URL: <http://sourceware.org/pipermail/ecos-discuss/attachments/20080604/da0e98e1/attachment.txt>
-------------- next part --------------
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

More information about the Ecos-discuss mailing list