Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 May 1999 14:57:59 -0700 (PDT)
From:      Julian Elischer <julian@whistle.com>
To:        Dennis <dennis@etinc.com>
Cc:        Mike Smith <mike@smith.net.au>, hackers@FreeBSD.ORG
Subject:   Re: mbuf stuff 
Message-ID:  <Pine.BSF.3.95.990527145356.4104H-100000@current1.whistle.com>
In-Reply-To: <199905272140.RAA04730@etinc.com>

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


On Thu, 27 May 1999, Dennis wrote:

> At 12:26 PM 5/27/99 -0700, you wrote:
> >> 
> >> We've encountered a situation where mbuf allocations inside a device
> >> interrupt handler fails occasionally...and it always seems to happen when
> >> rtalloc() is interrupted. Is this due to some sort of locking (rtalloc is
> >> run at splnet())...should it perhaps be run at splimp() to avoid this
> problem?
> >
> >It sounds like your device's interrupt handler should be in the 'net' 
> >mask; you certainly shouldn't be doing anything that manipulates mbufs 
> >in a non-'net'-masked interrupt handler.
> 
> Well how does one check/set this?

Splnet is a 'soft interrupt' level.

the device drivers should all use splimp()

Soft interrupts are by definition held off while a hardware interrupt is
being processes,
however you may need to occasionally rais your spl level to splimp() 
when you need to ensure that a hardware interrupt is held off.

I believe the old 'net' keyword in config files implied splimp, rather
than splnet.

julian


> 
> >
> >> What other causes for mbuf failures might reasonably be expected? Is
> >> allocating mbufs at interrupt time something that wasnt expected in the
> >> original system design?
> >
> >The mbuf pool might be empty.

You should always be ready to handle a mbuf allocation failure at the
lowest levels where you cannot sleep. The problem may be maomentary but as
you can't sleep() you can't wait for it to fix itself.


> 
> This one I figured out :-)
> 
> Dennis
> 
> 
> 
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-hackers" in the body of the message
> 



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.95.990527145356.4104H-100000>