On Jun 20, 2014, at 5:57 AM, Ryota Ozaki <ozak...@iij.ad.jp> wrote: > Hi, > > I've prepared a trial patch of MPSAFE networking. > > http://www.netbsd.org/~ozaki-r/mpsafe-wm.diff >
The kmutex_t in ifqueue, etc. should be pointers and not in the structure themselves. That can simply the macros to test for a NULL pointer for the locks in the non-WM case. Consider using mutex_obj_alloc to get mutexes instead of the embedding them in the structures. Some of your macros are missing 'do's :) > It enables the interrupt handler of if_wm to run without > KERNEL_LOCK; an interrupt context and a LWP context (e.g., > wm_start) run in parallel safely. > > You can try it by applying the patch to -current > and commenting in NET_MPSAFE in sys/net/if.h. > > A complete patch of my work can be found at usual places: > - http://www.netbsd.org/~ozaki-r/mpsafe-bridge-wm-vioif.diff > - > https://github.com/ozaki-r/netbsd-src/tree/experimental/mpsafe-bridge-wm-vioif > > ozaki-r