[ECOS] RE: Trouble using lwIP (driver crash...)
Michael Grimard
michaelg@maxt.com
Wed Apr 5 14:34:00 GMT 2006
This is the call stack of the recursion:
input_thread()
i82559_deliver()
PacketRxReady()
eth_drv_recv()
ecosif_input()
etharp_arp_input()
low_level_output()
eth_drv_send()
i82559_can_send()
-->PacketRxReady
eth_drv_recv()
ecosif_input()
...
So the recursion happens in i82559_can_send() when it calls PacketRxReady().
This time, it was for the reply of an ARP request.
Michael
-----Original Message-----
From: Andrew Lunn [mailto:andrew@lunn.ch]
Sent: April 5, 2006 9:57 AM
To: Michael Grimard
Cc: ecos-discuss@sourceware.org
Subject: Re: [ECOS] RE: Trouble using lwIP (driver crash...)
On Wed, Apr 05, 2006 at 09:53:25AM -0400, Michael Grimard wrote:
>
> Already done that.
>
> This is what I got:
>
> InitRxRing 0
> ResetRxRing 0
> InitTxRing 0
> ResetTxRing 0
> Device 0 (eth0), rx descriptor 0:
> Rx 0 12e160 (status 8000a022): 1 sg's, 60 bytes Device 0 (eth0), rx
> descriptor 0:
> Rx 0 12e160 (status 8000a022): 1 sg's, 60 bytes Device 0 (eth0), rx
> descriptor 0:
> Rx 0 12e160 (status 8000a022): 1 sg's, 60 bytes Device 0 (eth0), rx
> descriptor 0:
> Rx 0 12e160 (status 8000a022): 1 sg's, 60 bytes Device 0 (eth0), rx
> descriptor 0:
> Rx 0 12e160 (status 8000a022): 1 sg's, 60 bytes Device 0 (eth0), rx
> descriptor 0:
> Rx 0 12e160 (status 8000a022): 1 sg's, 60 bytes Device 0 (eth0), rx
> descriptor 0:
> Rx 0 12e160 (status 8000a022): 1 sg's, 60 bytes Device 0 (eth0), rx
> descriptor 0:
> Rx 0 12e160 (status 8000a022): 1 sg's, 60 bytes Device 0 (eth0), rx
> descriptor 0:
> Rx 0 12e160 (status 8000a022): 1 sg's, 60 bytes Device 0 (eth0), rx
> descriptor 0:
> Rx 0 12e160 (status 8000a022): 1 sg's, 60 bytes Device 0 (eth0), rx
> descriptor 0:
> Rx 0 12e160 (status 8000a022): 1 sg's, 60 bytes ASSERT FAIL:
> <5>if_i82559.c[2370]i82559_can_send() send: Excess send recursions
> ASSERT FAIL: <5>if_i82559.c [2370] i82559_can_send()
>
>
> All I do is ping eCos three times.
It looks like you will have to debug this further. Try single stepping from
eth_drv_send() and work out why it goes recursive.
Andrew
--
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