Module Name:    src
Committed By:   knakahara
Date:           Fri Jul 22 07:09:40 UTC 2016

Modified Files:
        src/sys/net: if.c if.h

Log Message:
Toward NET_MPSAFE-on in future, if_snd uses if_snd->ifq_lock by default.

That can reduce confusing difference between NET_MPSAFE on and off.


To generate a diff of this commit:
cvs rdiff -u -r1.354 -r1.355 src/sys/net/if.c
cvs rdiff -u -r1.221 -r1.222 src/sys/net/if.h

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

Modified files:

Index: src/sys/net/if.c
diff -u src/sys/net/if.c:1.354 src/sys/net/if.c:1.355
--- src/sys/net/if.c:1.354	Thu Jul  7 09:32:02 2016
+++ src/sys/net/if.c	Fri Jul 22 07:09:40 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: if.c,v 1.354 2016/07/07 09:32:02 ozaki-r Exp $	*/
+/*	$NetBSD: if.c,v 1.355 2016/07/22 07:09:40 knakahara Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2008 The NetBSD Foundation, Inc.
@@ -90,7 +90,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.354 2016/07/07 09:32:02 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.355 2016/07/22 07:09:40 knakahara Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_inet.h"
@@ -637,11 +637,7 @@ if_initialize(ifnet_t *ifp)
 	ifp->if_snd.altq_ifp  = ifp;
 #endif
 
-#ifdef NET_MPSAFE
 	ifp->if_snd.ifq_lock = mutex_obj_alloc(MUTEX_DEFAULT, IPL_NET);
-#else
-	ifp->if_snd.ifq_lock = NULL;
-#endif
 
 	ifp->if_pfil = pfil_head_create(PFIL_TYPE_IFNET, ifp);
 	(void)pfil_run_hooks(if_pfil,
@@ -1160,8 +1156,7 @@ if_detach(struct ifnet *ifp)
 		altq_detach(&ifp->if_snd);
 #endif
 
-	if (ifp->if_snd.ifq_lock)
-		mutex_obj_free(ifp->if_snd.ifq_lock);
+	mutex_obj_free(ifp->if_snd.ifq_lock);
 
 #if NCARP > 0
 	/* Remove the interface from any carp group it is a part of.  */

Index: src/sys/net/if.h
diff -u src/sys/net/if.h:1.221 src/sys/net/if.h:1.222
--- src/sys/net/if.h:1.221	Mon Jul 11 02:14:27 2016
+++ src/sys/net/if.h	Fri Jul 22 07:09:40 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: if.h,v 1.221 2016/07/11 02:14:27 ozaki-r Exp $	*/
+/*	$NetBSD: if.h,v 1.222 2016/07/22 07:09:40 knakahara Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2000, 2001 The NetBSD Foundation, Inc.
@@ -511,9 +511,6 @@ if_is_link_state_changeable(struct ifnet
 #define	IF_AFDATA_UNLOCK_ASSERT(ifp)	\
 	KASSERT(!rw_lock_held((ifp)->if_afdata_lock))
 
-#define IFQ_LOCK(_ifq)		if ((_ifq)->ifq_lock) mutex_enter((_ifq)->ifq_lock)
-#define IFQ_UNLOCK(_ifq)	if ((_ifq)->ifq_lock) mutex_exit((_ifq)->ifq_lock)
-
 /*
  * Output queues (ifp->if_snd) and internetwork datagram level (pup level 1)
  * input routines have queues of messages stored on ifqueue structures
@@ -804,7 +801,7 @@ struct if_addrprefreq {
 #ifdef ALTQ
 #define IFQ_ENQUEUE(ifq, m, err)					\
 do {									\
-	IFQ_LOCK((ifq));						\
+	mutex_enter((ifq)->ifq_lock);					\
 	if (ALTQ_IS_ENABLED((ifq)))					\
 		ALTQ_ENQUEUE((ifq), (m), (err));			\
 	else {								\
@@ -818,41 +815,41 @@ do {									\
 	}								\
 	if ((err))							\
 		(ifq)->ifq_drops++;					\
-	IFQ_UNLOCK((ifq));						\
+	mutex_exit((ifq)->ifq_lock);					\
 } while (/*CONSTCOND*/ 0)
 
 #define IFQ_DEQUEUE(ifq, m)						\
 do {									\
-	IFQ_LOCK((ifq));						\
+	mutex_enter((ifq)->ifq_lock);					\
 	if (TBR_IS_ENABLED((ifq)))					\
 		(m) = tbr_dequeue((ifq), ALTDQ_REMOVE);			\
 	else if (ALTQ_IS_ENABLED((ifq)))				\
 		ALTQ_DEQUEUE((ifq), (m));				\
 	else								\
 		IF_DEQUEUE((ifq), (m));					\
-	IFQ_UNLOCK((ifq));						\
+	mutex_exit((ifq)->ifq_lock);					\
 } while (/*CONSTCOND*/ 0)
 
 #define	IFQ_POLL(ifq, m)						\
 do {									\
-	IFQ_LOCK((ifq));						\
+	mutex_enter((ifq)->ifq_lock);					\
 	if (TBR_IS_ENABLED((ifq)))					\
 		(m) = tbr_dequeue((ifq), ALTDQ_POLL);			\
 	else if (ALTQ_IS_ENABLED((ifq)))				\
 		ALTQ_POLL((ifq), (m));					\
 	else								\
 		IF_POLL((ifq), (m));					\
-	IFQ_UNLOCK((ifq));						\
+	mutex_exit((ifq)->ifq_lock);					\
 } while (/*CONSTCOND*/ 0)
 
 #define	IFQ_PURGE(ifq)							\
 do {									\
-	IFQ_LOCK((ifq));						\
+	mutex_enter((ifq)->ifq_lock);					\
 	if (ALTQ_IS_ENABLED((ifq)))					\
 		ALTQ_PURGE((ifq));					\
 	else								\
 		IF_PURGE((ifq));					\
-	IFQ_UNLOCK((ifq));						\
+	mutex_exit((ifq)->ifq_lock);					\
 } while (/*CONSTCOND*/ 0)
 
 #define	IFQ_SET_READY(ifq)						\
@@ -862,7 +859,7 @@ do {									\
 
 #define	IFQ_CLASSIFY(ifq, m, af)					\
 do {									\
-	IFQ_LOCK((ifq));						\
+	mutex_enter((ifq)->ifq_lock);					\
 	if (ALTQ_IS_ENABLED((ifq))) {					\
 		if (ALTQ_NEEDS_CLASSIFY((ifq)))				\
 			m->m_pkthdr.pattr_class = (*(ifq)->altq_classify) \
@@ -870,12 +867,12 @@ do {									\
 		m->m_pkthdr.pattr_af = (af);				\
 		m->m_pkthdr.pattr_hdr = mtod((m), void *);		\
 	}								\
-	IFQ_UNLOCK((ifq));						\
+	mutex_exit((ifq)->ifq_lock);					\
 } while (/*CONSTCOND*/ 0)
 #else /* ! ALTQ */
 #define	IFQ_ENQUEUE(ifq, m, err)					\
 do {									\
-	IFQ_LOCK((ifq));						\
+	mutex_enter((ifq)->ifq_lock);					\
 	if (IF_QFULL((ifq))) {						\
 		m_freem((m));						\
 		(err) = ENOBUFS;					\
@@ -885,28 +882,28 @@ do {									\
 	}								\
 	if ((err))							\
 		(ifq)->ifq_drops++;					\
-	IFQ_UNLOCK((ifq));						\
+	mutex_exit((ifq)->ifq_lock);					\
 } while (/*CONSTCOND*/ 0)
 
 #define	IFQ_DEQUEUE(ifq, m)						\
 do {									\
-	IFQ_LOCK((ifq));						\
+	mutex_enter((ifq)->ifq_lock);					\
 	IF_DEQUEUE((ifq), (m));						\
-	IFQ_UNLOCK((ifq));						\
+	mutex_exit((ifq)->ifq_lock);					\
 } while (/*CONSTCOND*/ 0)
 
 #define	IFQ_POLL(ifq, m)						\
 do {									\
-	IFQ_LOCK((ifq));						\
+	mutex_enter((ifq)->ifq_lock);					\
 	IF_POLL((ifq), (m));						\
-	IFQ_UNLOCK((ifq));						\
+	mutex_exit((ifq)->ifq_lock);					\
 } while (/*CONSTCOND*/ 0)
 
 #define	IFQ_PURGE(ifq)							\
 do {									\
-	IFQ_LOCK((ifq));						\
+	mutex_enter((ifq)->ifq_lock);					\
 	IF_PURGE((ifq));						\
-	IFQ_UNLOCK((ifq));						\
+	mutex_exit((ifq)->ifq_lock);					\
 } while (/*CONSTCOND*/ 0)
 
 #define	IFQ_SET_READY(ifq)	/* nothing */

Reply via email to