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: Ping the RLTK 8139 driver with a large packet and it crashes


Hi again,

I did some more checking into this with CYGDBG_DEVS_ETH_RLTK_8139_CHATTER enabled.

When pinged with a large packet (ping -s 40000) this happens:

rltk8139_deliver(eth0): receive buffer overflow
rltk8139_stop(eth0)
rltk8139_start(eth0)
rltk8139_start(eth0): 8139 was successfully reset.
8139 reg address 0x00 = 0xa1c9d000 0x00003faf 0x00000200 0x00000000
8139 reg address 0x10 = 0x00002000 0x00002000 0x00002000 0x00002000
8139 reg address 0x20 = 0x00196170 0x00196770 0x00196d70 0x00197370
8139 reg address 0x30 = 0x0018d960 0x0d000000 0x0000fff0 0x0000802f
8139 reg address 0x40 = 0x77400600 0x0000b68e 0xb54a8a01 0x00000000
8139 reg address 0x50 = 0x008d1000 0x00000000 0x0088e110 0x00100a20
8139 reg address 0x60 = 0x1100000f 0x01e1782d 0x000145e1 0x00000000
8139 reg address 0x70 = 0x00000704 0x000207c8 0x60f60c59 0x7b732660
8139 reg address 0x80 = 0x0000001a 0x88080802 0x00100104 0x14000000
8139 reg address 0x90 = 0x00040204 0x00200000 0x09200080 0x08200000
8139 reg address 0xa0 = 0x00a00000 0x80006400 0x000000a0 0x08010002
8139 reg address 0xb0 = 0x800c1011 0x40000300 0x4000230a 0x01000000
8139 reg address 0xc0 = 0x40000008 0x21008080 0x00000000 0x01100028
8139 reg address 0xd0 = 0x00441000 0x00000000 0x00000003 0x00000000
8139 reg address 0xe0 = 0x00000000 0x00000000 0x00000000 0x00000000
8139 reg address 0xf0 = 0x00000000 0x00000000 0x00000000 0x00000000

At this point, the 8139 seems stuck and rltk8139_deliver() is no longer periodically being called, though the kernel is still running.

I'm at a bit of a loss with this. Any tips as to how I could proceed? Thanks.

-- Wayne


Wayne Visser wrote:

Hi all,


My target is an i386 with the default eCos TCP stack, eCos HTTP, TFTP servers and a Modbus/TCP server we wrote in house. The ethernet driver is the RealTek 8139.

I first started suspecting something was wrong with the ethernet driver when my target randomly crashed after 5-10 minutes under heavy ethernet loads: ping flood + http + tftp traffic.

Then I discovered it would crash repeatably if pinged with a large packet i.e. ping -s 40000. The threshold seems to be around 32k, which is coincidently the size of the RX buffer. I have CYGNUM_DEVS_ETH_RLTK_8139_RX_BUF_LEN_IDX set to 2, which is the default.

This behaviour is true when CYGPKG_DEVS_ETH_RLTK_8139_SHARE_INTERRUPTS is enabled or not.

The driver has some comments about cache coherency, which I don't understand well. In any case, I don't think they're applicable to the i386 target (is that true?)

I'm using the eCos CVS snapped on 31 Jan 2007. gcc 3.4.4, cygwin.

Any help would be appreciated.


-- 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]