tx_down failed: No buffer space available

tx_down() is failing with errno set to “No buffer space available”
(strerror() message). io-net crashes shortly thereafter. What does this
mean?

I suspect memory overrun problems. Can io-net be used effectively with heap
analysis tools (libmalloc_g)? Does io-net allocate its packet memory on the
heap?

Thanks,
Shaun

Shaun Jackman <sjackman@nospam.vortek.com> wrote:

tx_down() is failing with errno set to “No buffer space available”
(strerror() message). io-net crashes shortly thereafter. What does this
mean?

I suspect memory overrun problems. Can io-net be used effectively with heap
analysis tools (libmalloc_g)? Does io-net allocate its packet memory on the
heap?

io-net does not use the heap for its packet memory – it needs DMA
safe (physically contiguous, etc) memory. So, it explicitly allocates
the memory itself, and manages the memory pool.

So, the malloc tools won’t help to analyze issues with the packet
buffers, but if malloc gets used for other things (which it probably
does) the libmalloc_g could help with that analysis.

-David

QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.

The driver sets this when your getting ahead of it: sending
packets faster than it can tx. What do you do when you get
the error? You shouldn’t do anything you don’t normally do:
if you get the error, the lower layer will call ion->tx_done()
for you.

-seanb

Shaun Jackman <sjackman@nospam.vortek.com> wrote:
: tx_down() is failing with errno set to “No buffer space available”
: (strerror() message). io-net crashes shortly thereafter. What does this
: mean?

: I suspect memory overrun problems. Can io-net be used effectively with heap
: analysis tools (libmalloc_g)? Does io-net allocate its packet memory on the
: heap?

: Thanks,
: Shaun

I was calling tx_done() on the packet. Now that I know that’s a no-no, I’ll
stop that nasty habit. Where do you think the bottle-neck might be? I’m
transmitting one or two 60 byte packets every millisecond. This is way under
available bandwidth, and the PC (Pentium/233) should be able to keep up with
this load.

Cheers,
Shaun

Sean Boudreau <seanb@qnx.com> wrote in message
news:aecqj0$938$2@nntp.qnx.com

The driver sets this when your getting ahead of it: sending
packets faster than it can tx. What do you do when you get
the error? You shouldn’t do anything you don’t normally do:
if you get the error, the lower layer will call ion->tx_done()
for you.

-seanb

Shaun Jackman <> sjackman@nospam.vortek.com> > wrote:
: tx_down() is failing with errno set to “No buffer space available”
: (strerror() message). io-net crashes shortly thereafter. What does this
: mean?

: I suspect memory overrun problems. Can io-net be used effectively with
heap
: analysis tools (libmalloc_g)? Does io-net allocate its packet memory on
the
: heap?

: Thanks,
: Shaun