Date: Wed, 10 Feb 2016 18:56:46 +0900 From: Ryota Ozaki <ozak...@netbsd.org>
Thanks to introducing softint-based if_input, we can simplify bridge(4). Awesome! I love patches that have loads more -'s than +'s, and simplify locking schemes, and remove sketchy cpu_intr_p conditionals, and things like that. Here is a patch: http://www.netbsd.org/~ozaki-r/simplify-bridge.diff Remove cpu_intr_p from BRIDGE_RT_RENTER/REXIT too? I wonder how much of a difference BRIDGE_MPSAFE really makes on uniprocessor systems. If this were new code I wouldn't have done any conditional compilation of that. I can't imagine the performance impact is very high: maybe a few more words of memory are used, but uniprocessor mutex acquisition should be pretty cheap. Maybe in a future patch we can eliminate all that. Hmm... Another note, not related to your patch: queue(3) does not issue the necessary memory barriers for pserialization. So the use of LIST_* for rtlist and iflist is not actually safe here -- I imagine it has worked only by accident before. Either we need to make a variant of queue(3) that is pserialize-safe (https://mail-index.netbsd.org/tech-kern/2014/11/21/msg018055.html) or open-code it here. (rmind@ objected to a pserialize-safe queue(3) in favour of just open-coding it in the few places where it's needed. I don't think that's a good idea but I didn't care to take on that fight at the time.)