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 [email protected] > with "unsubscribe freebsd-hackers" in the body of the message > To Unsubscribe: send mail to [email protected] with "unsubscribe freebsd-hackers" in the body of the message

