From owner-freebsd-questions@FreeBSD.ORG Tue Jun 17 15:27:58 2003 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B06E937B40E for ; Tue, 17 Jun 2003 15:27:58 -0700 (PDT) Received: from peedub.jennejohn.org (p213.54.252.228.tisdip.tiscali.de [213.54.252.228]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6F1B643F93 for ; Tue, 17 Jun 2003 15:27:57 -0700 (PDT) (envelope-from garyj@jennejohn.org) Received: from peedub.jennejohn.org (localhost [127.0.0.1]) by peedub.jennejohn.org (8.12.9/8.11.6) with ESMTP id h5HMRnN4014581; Wed, 18 Jun 2003 00:27:50 +0200 (CEST) (envelope-from garyj@peedub.jennejohn.org) Message-Id: <200306172227.h5HMRnN4014581@peedub.jennejohn.org> X-Mailer: exmh version 2.6.3 04/04/2003 with nmh-1.0.4 To: Bill Moran In-Reply-To: Message from Bill Moran of "Tue, 17 Jun 2003 16:38:41 EDT." <3EEF7C51.3090402@potentialtech.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Wed, 18 Jun 2003 00:27:49 +0200 From: Gary Jennejohn cc: freebsd-questions@freebsd.org cc: jaime@snowmoon.com Subject: Re: ping: sendto: No buffer space available X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jun 2003 22:27:59 -0000 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