Subject: kern/7285: Ethernet drivers return ENOBUFS for I/F queue full error
To: None <gnats-bugs@gnats.netbsd.org>
From: Erik E. Fair <fair@digital.clock.org>
List: netbsd-bugs
Date: 03/29/1999 14:15:38
>Number:         7285
>Category:       kern
>Synopsis:       Ethernet drivers return ENOBUFS for I/F queue full error
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    kern-bug-people (Kernel Bug People)
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Mon Mar 29 14:20:00 1999
>Last-Modified:
>Originator:     Erik E. Fair
>Organization:
International Organization of Internet Clock Watchers
>Release:        NetBSD-current 19990329
>Environment:
	
System: NetBSD digital.clock.org 1.3 NetBSD 1.3 (DIGITAL) #1: Mon May 25 14:16:49 PDT 1998 fair@digital.clock.org:/usr/src/sys/arch/sparc/compile/DIGITAL sparc


>Description:
	There is an error code overloading issue here: ENOBUFS is used to
	indicate both that there is an mbuf exhaustion in the network code,
	and also that specific Ethernet I/F drivers have a limited output
	queue and will not queue more than a certain number of packets.
>How-To-Repeat:
	start blasting lotsa UDP packets out an interface.

	get ENOBUFS error.

	run netstat -m, note that no requests for memory have been
	denied to the network code, become very confused about the
	source of the error message.

	send E-mail to tech-net@netbsd.org asking, "WTF?!"
>Fix:
	There are two things we should do:

	1. pick a different, more descriptive, error code to return
	for this case (there was some discussion of this in tech-net
	or developers, but I can't find it in the archives), and change
	the drivers to suit. Probably need to grep the userland source
	tree for references to ENOBUFS also.

	2. document the network interface output queue limits.
>Audit-Trail:
>Unformatted: