This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: RE: Trouble using lwIP (driver crash...)


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]