Subject: Re: What ipl for IF{,Q}_ENQUEUE?
To: Dennis Ferguson <dennis@juniper.net>
From: Jason R Thorpe <thorpej@wasabisystems.com>
List: tech-net
Date: 01/03/2003 13:41:02
On Fri, Jan 03, 2003 at 11:18:27AM -0800, Dennis Ferguson wrote:

 > I'm not sure what was fixed by changing this, but I think the mapping is that
 > splimp() became splnet() in netbsd, while splnet() became splsoftnet().
 > IF*_ENQUEUE needs to block interface hardware interrupts, so splnet() is
 > probably what is needed on netbsd.

"Sort of."

splimp() became somewhat overloaded over time, to also mean "block interrupts
which can allocate memory" (since the network interface routines used the mbuf
routines, etc.).

NetBSD clarified the whole interface by doing:

	splnet() -- block network hardware interrupts
	splsoftnet() -- block network software interrupts
	splvm() -- block interrupts that can allocate memory

splimp() is gone from the NetBSD sources.

-- 
        -- Jason R. Thorpe <thorpej@wasabisystems.com>