Module Name:    src
Committed By:   ozaki-r
Date:           Tue Dec 19 03:32:35 UTC 2017

Modified Files:
        src/sys/dev/ic: dwc_gmac.c
        src/sys/net: if_bridge.c if_l2tp.c if_loop.c if_tap.c if_vlan.c
        src/sys/netcan: if_canloop.c

Log Message:
Don't set IFEF_MPSAFE unless NET_MPSAFE at this point

Because recent investigations show that interfaces with IFEF_MPSAFE need to
follow additional restrictions to work with the flag safely. We should enable it
on an interface by default only if the interface surely satisfies the
restrictions, which are described in if.h.

Note that enabling IFEF_MPSAFE solely gains a few benefit on performance because
the network stack is still serialized by the big kernel locks by default.


To generate a diff of this commit:
cvs rdiff -u -r1.43 -r1.44 src/sys/dev/ic/dwc_gmac.c
cvs rdiff -u -r1.145 -r1.146 src/sys/net/if_bridge.c
cvs rdiff -u -r1.16 -r1.17 src/sys/net/if_l2tp.c
cvs rdiff -u -r1.100 -r1.101 src/sys/net/if_loop.c
cvs rdiff -u -r1.104 -r1.105 src/sys/net/if_tap.c
cvs rdiff -u -r1.120 -r1.121 src/sys/net/if_vlan.c
cvs rdiff -u -r1.4 -r1.5 src/sys/netcan/if_canloop.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/ic/dwc_gmac.c
diff -u src/sys/dev/ic/dwc_gmac.c:1.43 src/sys/dev/ic/dwc_gmac.c:1.44
--- src/sys/dev/ic/dwc_gmac.c:1.43	Thu Nov 16 03:07:17 2017
+++ src/sys/dev/ic/dwc_gmac.c	Tue Dec 19 03:32:35 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: dwc_gmac.c,v 1.43 2017/11/16 03:07:17 ozaki-r Exp $ */
+/* $NetBSD: dwc_gmac.c,v 1.44 2017/12/19 03:32:35 ozaki-r Exp $ */
 
 /*-
  * Copyright (c) 2013, 2014 The NetBSD Foundation, Inc.
@@ -41,7 +41,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(1, "$NetBSD: dwc_gmac.c,v 1.43 2017/11/16 03:07:17 ozaki-r Exp $");
+__KERNEL_RCSID(1, "$NetBSD: dwc_gmac.c,v 1.44 2017/12/19 03:32:35 ozaki-r Exp $");
 
 /* #define	DWC_GMAC_DEBUG	1 */
 
@@ -223,7 +223,9 @@ dwc_gmac_attach(struct dwc_gmac_softc *s
 	ifp->if_softc = sc;
 	strlcpy(ifp->if_xname, device_xname(sc->sc_dev), IFNAMSIZ);
 	ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
+#ifdef DWCGMAC_MPSAFE
 	ifp->if_extflags = IFEF_MPSAFE;
+#endif
 	ifp->if_ioctl = dwc_gmac_ioctl;
 	ifp->if_start = dwc_gmac_start;
 	ifp->if_init = dwc_gmac_init;

Index: src/sys/net/if_bridge.c
diff -u src/sys/net/if_bridge.c:1.145 src/sys/net/if_bridge.c:1.146
--- src/sys/net/if_bridge.c:1.145	Mon Dec 11 03:29:20 2017
+++ src/sys/net/if_bridge.c	Tue Dec 19 03:32:35 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_bridge.c,v 1.145 2017/12/11 03:29:20 ozaki-r Exp $	*/
+/*	$NetBSD: if_bridge.c,v 1.146 2017/12/19 03:32:35 ozaki-r Exp $	*/
 
 /*
  * Copyright 2001 Wasabi Systems, Inc.
@@ -80,7 +80,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_bridge.c,v 1.145 2017/12/11 03:29:20 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_bridge.c,v 1.146 2017/12/19 03:32:35 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_bridge_ipf.h"
@@ -424,7 +424,10 @@ bridge_clone_create(struct if_clone *ifc
 
 	if_initname(ifp, ifc->ifc_name, unit);
 	ifp->if_softc = sc;
-	ifp->if_extflags = IFEF_MPSAFE | IFEF_NO_LINK_STATE_CHANGE;
+	ifp->if_extflags = IFEF_NO_LINK_STATE_CHANGE;
+#ifdef NET_MPSAFE
+	ifp->if_extflags |= IFEF_MPSAFE;
+#endif
 	ifp->if_mtu = ETHERMTU;
 	ifp->if_ioctl = bridge_ioctl;
 	ifp->if_output = bridge_output;

Index: src/sys/net/if_l2tp.c
diff -u src/sys/net/if_l2tp.c:1.16 src/sys/net/if_l2tp.c:1.17
--- src/sys/net/if_l2tp.c:1.16	Wed Dec  6 08:23:17 2017
+++ src/sys/net/if_l2tp.c	Tue Dec 19 03:32:35 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_l2tp.c,v 1.16 2017/12/06 08:23:17 knakahara Exp $	*/
+/*	$NetBSD: if_l2tp.c,v 1.17 2017/12/19 03:32:35 ozaki-r Exp $	*/
 
 /*
  * Copyright (c) 2017 Internet Initiative Japan Inc.
@@ -31,10 +31,11 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_l2tp.c,v 1.16 2017/12/06 08:23:17 knakahara Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_l2tp.c,v 1.17 2017/12/19 03:32:35 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
+#include "opt_net_mpsafe.h"
 #endif
 
 #include <sys/param.h>
@@ -265,7 +266,10 @@ l2tpattach0(struct l2tp_softc *sc)
 	sc->l2tp_ec.ec_if.if_addrlen = 0;
 	sc->l2tp_ec.ec_if.if_mtu    = L2TP_MTU;
 	sc->l2tp_ec.ec_if.if_flags  = IFF_POINTOPOINT|IFF_MULTICAST|IFF_SIMPLEX;
-	sc->l2tp_ec.ec_if.if_extflags  = IFEF_MPSAFE | IFEF_NO_LINK_STATE_CHANGE;
+	sc->l2tp_ec.ec_if.if_extflags = IFEF_NO_LINK_STATE_CHANGE;
+#ifdef NET_MPSAFE
+	sc->l2tp_ec.ec_if.if_extflags |= IFEF_MPSAFE;
+#endif
 	sc->l2tp_ec.ec_if.if_ioctl  = l2tp_ioctl;
 	sc->l2tp_ec.ec_if.if_output = l2tp_output;
 	sc->l2tp_ec.ec_if.if_type   = IFT_L2TP;

Index: src/sys/net/if_loop.c
diff -u src/sys/net/if_loop.c:1.100 src/sys/net/if_loop.c:1.101
--- src/sys/net/if_loop.c:1.100	Wed Dec  6 07:40:16 2017
+++ src/sys/net/if_loop.c	Tue Dec 19 03:32:35 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_loop.c,v 1.100 2017/12/06 07:40:16 ozaki-r Exp $	*/
+/*	$NetBSD: if_loop.c,v 1.101 2017/12/19 03:32:35 ozaki-r Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -65,7 +65,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_loop.c,v 1.100 2017/12/06 07:40:16 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_loop.c,v 1.101 2017/12/19 03:32:35 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -183,7 +183,9 @@ loop_clone_create(struct if_clone *ifc, 
 
 	ifp->if_mtu = LOMTU;
 	ifp->if_flags = IFF_LOOPBACK | IFF_MULTICAST;
+#ifdef NET_MPSAFE
 	ifp->if_extflags = IFEF_MPSAFE;
+#endif
 	ifp->if_ioctl = loioctl;
 	ifp->if_output = looutput;
 #ifdef ALTQ

Index: src/sys/net/if_tap.c
diff -u src/sys/net/if_tap.c:1.104 src/sys/net/if_tap.c:1.105
--- src/sys/net/if_tap.c:1.104	Thu Nov 30 20:25:55 2017
+++ src/sys/net/if_tap.c	Tue Dec 19 03:32:35 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_tap.c,v 1.104 2017/11/30 20:25:55 christos Exp $	*/
+/*	$NetBSD: if_tap.c,v 1.105 2017/12/19 03:32:35 ozaki-r Exp $	*/
 
 /*
  *  Copyright (c) 2003, 2004, 2008, 2009 The NetBSD Foundation.
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_tap.c,v 1.104 2017/11/30 20:25:55 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_tap.c,v 1.105 2017/12/19 03:32:35 ozaki-r Exp $");
 
 #if defined(_KERNEL_OPT)
 
@@ -358,7 +358,10 @@ tap_attach(device_t parent, device_t sel
 	strcpy(ifp->if_xname, device_xname(self));
 	ifp->if_softc	= sc;
 	ifp->if_flags	= IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
-	ifp->if_extflags = IFEF_MPSAFE | IFEF_NO_LINK_STATE_CHANGE;
+	ifp->if_extflags = IFEF_NO_LINK_STATE_CHANGE;
+#ifdef NET_MPSAFE
+	ifp->if_extflags |= IFEF_MPSAFE;
+#endif
 	ifp->if_ioctl	= tap_ioctl;
 	ifp->if_start	= tap_start;
 	ifp->if_stop	= tap_stop;

Index: src/sys/net/if_vlan.c
diff -u src/sys/net/if_vlan.c:1.120 src/sys/net/if_vlan.c:1.121
--- src/sys/net/if_vlan.c:1.120	Fri Dec 15 04:03:46 2017
+++ src/sys/net/if_vlan.c	Tue Dec 19 03:32:35 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_vlan.c,v 1.120 2017/12/15 04:03:46 ozaki-r Exp $	*/
+/*	$NetBSD: if_vlan.c,v 1.121 2017/12/19 03:32:35 ozaki-r Exp $	*/
 
 /*-
  * Copyright (c) 2000, 2001 The NetBSD Foundation, Inc.
@@ -78,10 +78,11 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_vlan.c,v 1.120 2017/12/15 04:03:46 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_vlan.c,v 1.121 2017/12/19 03:32:35 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
+#include "opt_net_mpsafe.h"
 #endif
 
 #include <sys/param.h>
@@ -358,7 +359,10 @@ vlan_clone_create(struct if_clone *ifc, 
 	if_initname(ifp, ifc->ifc_name, unit);
 	ifp->if_softc = ifv;
 	ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
-	ifp->if_extflags = IFEF_MPSAFE | IFEF_NO_LINK_STATE_CHANGE;
+	ifp->if_extflags = IFEF_NO_LINK_STATE_CHANGE;
+#ifdef NET_MPSAFE
+	ifp->if_extflags |= IFEF_MPSAFE;
+#endif
 	ifp->if_start = vlan_start;
 	ifp->if_transmit = vlan_transmit;
 	ifp->if_ioctl = vlan_ioctl;

Index: src/sys/netcan/if_canloop.c
diff -u src/sys/netcan/if_canloop.c:1.4 src/sys/netcan/if_canloop.c:1.5
--- src/sys/netcan/if_canloop.c:1.4	Wed Dec  6 07:40:16 2017
+++ src/sys/netcan/if_canloop.c	Tue Dec 19 03:32:35 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_canloop.c,v 1.4 2017/12/06 07:40:16 ozaki-r Exp $	*/
+/*	$NetBSD: if_canloop.c,v 1.5 2017/12/19 03:32:35 ozaki-r Exp $	*/
 
 /*-
  * Copyright (c) 2017 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_canloop.c,v 1.4 2017/12/06 07:40:16 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_canloop.c,v 1.5 2017/12/19 03:32:35 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_can.h"
@@ -112,7 +112,9 @@ canloop_clone_create(struct if_clone *if
 	if_initname(ifp, ifc->ifc_name, unit);
 
 	ifp->if_flags = IFF_LOOPBACK;
+#ifdef NET_MPSAFE
 	ifp->if_extflags = IFEF_MPSAFE;
+#endif
 	ifp->if_ioctl = canloop_ioctl;
 	ifp->if_start = canloop_ifstart;
 	can_ifattach(ifp);

Reply via email to