hello. I'm excited to see the development of the MP-safe network stack in NetBSD. Now that some progress has been made in that regard and there are MP-safe drivers and stack components to use, I have some questions. I'm interested in using options NET_MPSAFE in NetBSD-8.0_BETA and the eventual netbsd-8 release. Here are my questions. I apologize if some of them seem obvious, but I don't want to make any assumptions when trying this new stuff.
1. If I enable NET_MPSAFE in the kernel, will non-MP-ify'd components work in that kernel using the kernel lock? In other words, if I enable NET_MPSAFE and use the wm(4) driver, I'll get MP performance out of the network stack. However, what if I try to use a non-MP-ify'd component on that same machine, i.e. agr(4) or pf(4)? It looks to me like things should work, but traffic through the non-MP-ify'd components will be single threaded. Is this correct? 2. Am I correct that when NET_MPSAFE is turned on, the network stack is runing as an LWP inside the kernel? And, am I correct that this means that even if a particular network component is single-threaded, it's able to execute on any CPU, thus reducing CPU congestion on CPU0 as happens on the stock NetBSD kernels? 3. How stable is the NET_MPSAFE stack? Is anyone using it in any sort of production environment? the BSDCAN paper I read suggests it's pretty stable, but I'm wondering if anyone can report their experience. -thanks -Brian