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 */