On Mon, Jun 24, 2019 at 5:26 PM Manuel Bouyer <bou...@antioche.eu.org> wrote: > > On Mon, Jun 24, 2019 at 08:39:08AM +0100, Nick Hudson wrote: > > > > > > On 24/06/2019 04:30, matthew green wrote: > > > > > splnet is obsolete in modern USB network drivers. > > > > > all the code runs at softipl. > > > > > > > > > > removing spl was done entirely on purpose. > > > > > > > > I saw the comment of ether_ioctl in sys/net/if_ethersubr.c > > > > > Note, we must be called at splnet(). > > > > so I asked. > > > > > > that comment is true for old style drivers, but looking at other > > > drivers they also only skip this for NET_MPSAFE kernel builds. > > > > > > Nick, do we need to make these go back to non-mpsafe stuff for > > > networking if !NET_MPSAFE? > > > > I'm really not sure. > > > > splnet is to prevent IPL_NET interrupt handlers (common for most > > drivers) from running. USB ethernet devices don't have these, however. > > All handling of device to host communications is done via USB callbacks > > which run at splsoftserial (aka splusb). > > Actually, I think splnet() ( + KERNEL_LOCK) is used to protect the network > stack when NET_MPSAFE is not defined.
Only KERNEL_LOCK (and some splsoftnet) is required for the network stack now. Remaining splnets are for network drivers. (softnet_lock is also required in some cases but it's another story...) > > For example pppoe(4) uses it when NET_MPSAFE is not defined. Because there was a driver, lmc(4), that calls pppoe from hardware interrupt handler, but now it's removed, so splnet is not required anymore and splsoftnet is enough now (as per knakahara@). ozaki-r