[ECOS] FreeBSD Netstack EPIPE error

Andrew Lunn andrew@lunn.ch
Tue Oct 10 15:36:00 GMT 2006

> From what I understand the protocol stack is interrupt driven. Here's
> the final twist. My main worker thread in eCos is very busy during the
> time I observe the netstack xmit starvation (writing to flash) for a
> period of around 16 seconds.
> I've made sure my main thread priority is lower (higher in integer
> terms) than the internal netstack delivery threads priority.
> Is there any way a user thread can cause netstack starvation? BTW I'm
> not locking out interrupts during this time.

Does the device ping afterwards? 

It could be the device driver is locking up because of a bug in
handling full receive buffers. Transferring packets from the device
driver into the stack happens in a thread. If your threads are not
running for 16 seconds, it could be the ethernet device has been
signalling received packets but the stack has not had chance to get
them from the device. The device then overflows its receiver
buffer. Once threads start running again maybe the correct action is
not being taken to recover from running out of receive buffers. Some
ethernet device need telling to start again. 


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