Subject: Re: ping: sendto: no buffer space available (1.4.2/Alpha)
To: Erik E. Fair <fair@clock.org>
From: Kevin P. Neal <kpneal@pobox.com>
List: tech-net
Date: 12/09/2000 18:34:42
On Sat, Dec 09, 2000 at 01:45:30PM -0800, Erik E. Fair wrote:
> The interesting display to look at when you get "no buffer space 
> available" is the output from:
> 
> 	netstat -m
> 
> However, I will bet a whole lot that it will show no requests for 
> buffers refused. This is because there is another, distinct error 
> condition which returns that error code: network interface queue full.

Correct. 

183 mbufs in use:
        125 mbufs allocated to data
        57 mbufs allocated to packet headers
        1 mbufs allocated to socket names and addresses
52/60 mapped pages in use
184 Kbytes allocated to network (81% in use)
0 requests for memory denied
0 requests for memory delayed
0 calls to protocol drain routines
 
> When a network interface cannot transmit, for whatever reason, the 
> kernel will limit the number of packets that can be queued for 
> transmit on that interface. However, when that queue fills up, the 
> error returned is ENOBUFS.

Opinion: returning a single number when a problem happens is really
not enough. I wish there was a better way of reporting problems.
 
> There is an open PR suggesting that a new error code be allocated for 
> this case.

What does it take to clear the error condition? I mean, how come pppd
stops being able to transmit once some particular error happens? How
come pppd doesn't notice the error and at least drop the connection?

I once had lcp-echo-interval and -failure set, but I had to take them
out because I came home one day to find my connection bouncing up and
down for no apparent reason. 
-- 
Kevin P. Neal                                http://www.pobox.com/~kpn/

"Nonbelievers found it difficult to defend their position in \ 
    the presense of a working computer." -- a DEC Jensen paper