Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Jun 2003 00:27:49 +0200
From:      Gary Jennejohn <garyj@jennejohn.org>
To:        Bill Moran <wmoran@potentialtech.com>
Cc:        jaime@snowmoon.com
Subject:   Re: ping: sendto: No buffer space available 
Message-ID:  <200306172227.h5HMRnN4014581@peedub.jennejohn.org>
In-Reply-To: Message from Bill Moran <wmoran@potentialtech.com>  of "Tue, 17 Jun 2003 16:38:41 EDT." <3EEF7C51.3090402@potentialtech.com> 

next in thread | previous in thread | raw e-mail | index | archive | help

Bill Moran writes:
> So the comment that I made that it was either a driver, NIC, or link-level
> problem was near the mark?
> 

Seems to me that it is. I'd suspect a link level problem myself, based on
the description of the problem.

> I spent a while looking through the source to get a better idea of where that
> error originates, and only got frustrated.  As a favor, can you point me to
> the area of the source from which I can learn more of this?
> 

In -current things have changed, so I could now be wrong. Most of the
drivers now return ENOBUFS if they really can't get an mbuf, but I
haven't examined all the drivers to see under just which circumstances
they return ENOBUFS.

However, I was thinking of the macro IF_HANDOFF(), which uses if_handoff()
which uses _IF_QFULL(), all of which are defined in /sys/net/if_var.h.
_IF_QFULL() actually checks whether the send queue is full.  IF_HANDOFF()
is invoked (among other places) in /sys/net/netisr.c and
/sys/net/if_ethersubr.c.

I remember running into this situation while debugging ISDN drivers,
many of which use IF_HANDOFF(). Most moden ethernet drivers don't seem
to use it any more.

---
Gary Jennejohn / garyj[at]jennejohn.org gj[at]freebsd.org gj[at]denx.de



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200306172227.h5HMRnN4014581>