Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 22 Nov 2014 17:57:55 +0000 (UTC)
From:      "Alexander V. Chernikov" <melifaro@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r274874 - in projects/routing/sys: net netinet netinet6
Message-ID:  <201411221757.sAMHvtlN001693@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: melifaro
Date: Sat Nov 22 17:57:54 2014
New Revision: 274874
URL: https://svnweb.freebsd.org/changeset/base/274874

Log:
  Temporarily revert r274774.

Modified:
  projects/routing/sys/net/if.c
  projects/routing/sys/net/if_llatbl.c
  projects/routing/sys/net/if_var.h
  projects/routing/sys/net/rt_nhops.c
  projects/routing/sys/netinet/if_ether.c
  projects/routing/sys/netinet/in.c
  projects/routing/sys/netinet/toecore.c
  projects/routing/sys/netinet6/icmp6.c
  projects/routing/sys/netinet6/in6.c
  projects/routing/sys/netinet6/nd6.c
  projects/routing/sys/netinet6/nd6_nbr.c
  projects/routing/sys/netinet6/nd6_rtr.c
  projects/routing/sys/netinet6/scope6.c

Modified: projects/routing/sys/net/if.c
==============================================================================
--- projects/routing/sys/net/if.c	Sat Nov 22 17:56:03 2014	(r274873)
+++ projects/routing/sys/net/if.c	Sat Nov 22 17:57:54 2014	(r274874)
@@ -52,7 +52,6 @@
 #include <sys/refcount.h>
 #include <sys/module.h>
 #include <sys/rwlock.h>
-#include <sys/rmlock.h>
 #include <sys/sockio.h>
 #include <sys/syslog.h>
 #include <sys/sysctl.h>
@@ -774,11 +773,8 @@ if_attachdomain1(struct ifnet *ifp)
 	 * Since dp->dom_ifattach calls malloc() with M_WAITOK, we
 	 * cannot lock ifp->if_afdata initialization, entirely.
 	 */
-#if 0
 	if (IF_AFDATA_TRYLOCK(ifp) == 0)
 		return;
-#endif
-	IF_AFDATA_LOCK(ifp);
 	if (ifp->if_afdata_initialized >= domain_init_status) {
 		IF_AFDATA_UNLOCK(ifp);
 		log(LOG_WARNING, "%s called more than once on %s\n",

Modified: projects/routing/sys/net/if_llatbl.c
==============================================================================
--- projects/routing/sys/net/if_llatbl.c	Sat Nov 22 17:56:03 2014	(r274873)
+++ projects/routing/sys/net/if_llatbl.c	Sat Nov 22 17:57:54 2014	(r274874)
@@ -42,7 +42,6 @@ __FBSDID("$FreeBSD$");
 #include <sys/lock.h>
 #include <sys/mutex.h>
 #include <sys/rwlock.h>
-#include <sys/rmlock.h>
 
 #ifdef DDB
 #include <ddb/ddb.h>
@@ -143,7 +142,6 @@ llentry_alloc(struct ifnet *ifp, struct 
     struct sockaddr_storage *dst)
 {
 	struct llentry *la;
-	IF_AFDATA_TRACKER;
 
 	IF_AFDATA_RLOCK(ifp);
 	la = lla_lookup(lt, LLE_EXCLUSIVE, (struct sockaddr *)dst);

Modified: projects/routing/sys/net/if_var.h
==============================================================================
--- projects/routing/sys/net/if_var.h	Sat Nov 22 17:56:03 2014	(r274873)
+++ projects/routing/sys/net/if_var.h	Sat Nov 22 17:57:54 2014	(r274874)
@@ -192,7 +192,7 @@ struct ifnet {
 	int	if_amcount;		/* number of all-multicast requests */
 	struct	ifaddr	*if_addr;	/* pointer to link-level address */
 	const u_int8_t *if_broadcastaddr; /* linklevel broadcast bytestring */
-	struct	rmlock if_afdata_lock;
+	struct	rwlock if_afdata_lock;
 	void	*if_afdata[AF_MAX];
 	int	if_afdata_initialized;
 
@@ -340,22 +340,21 @@ EVENTHANDLER_DECLARE(group_change_event,
 #endif /* _SYS_EVENTHANDLER_H_ */
 
 #define	IF_AFDATA_LOCK_INIT(ifp)	\
-	rm_init(&(ifp)->if_afdata_lock, "if_afdata")
+	rw_init(&(ifp)->if_afdata_lock, "if_afdata")
 
-#define	IF_AFDATA_WLOCK(ifp)	rm_wlock(&(ifp)->if_afdata_lock)
-#define	IF_AFDATA_RLOCK(ifp)	rm_rlock(&(ifp)->if_afdata_lock, &tracker)
-#define	IF_AFDATA_WUNLOCK(ifp)	rm_wunlock(&(ifp)->if_afdata_lock)
-#define	IF_AFDATA_RUNLOCK(ifp)	rm_runlock(&(ifp)->if_afdata_lock, &tracker)
+#define	IF_AFDATA_WLOCK(ifp)	rw_wlock(&(ifp)->if_afdata_lock)
+#define	IF_AFDATA_RLOCK(ifp)	rw_rlock(&(ifp)->if_afdata_lock)
+#define	IF_AFDATA_WUNLOCK(ifp)	rw_wunlock(&(ifp)->if_afdata_lock)
+#define	IF_AFDATA_RUNLOCK(ifp)	rw_runlock(&(ifp)->if_afdata_lock)
 #define	IF_AFDATA_LOCK(ifp)	IF_AFDATA_WLOCK(ifp)
 #define	IF_AFDATA_UNLOCK(ifp)	IF_AFDATA_WUNLOCK(ifp)
-#define	IF_AFDATA_TRYLOCK(ifp)	rm_try_wlock(&(ifp)->if_afdata_lock)
-#define	IF_AFDATA_DESTROY(ifp)	rm_destroy(&(ifp)->if_afdata_lock)
-#define	IF_AFDATA_TRACKER	struct rm_priotracker tracker
-
-#define	IF_AFDATA_LOCK_ASSERT(ifp)	rm_assert(&(ifp)->if_afdata_lock, RA_LOCKED)
-#define	IF_AFDATA_RLOCK_ASSERT(ifp)	rm_assert(&(ifp)->if_afdata_lock, RA_RLOCKED)
-#define	IF_AFDATA_WLOCK_ASSERT(ifp)	rm_assert(&(ifp)->if_afdata_lock, RA_WLOCKED)
-#define	IF_AFDATA_UNLOCK_ASSERT(ifp)	rm_assert(&(ifp)->if_afdata_lock, RA_UNLOCKED)
+#define	IF_AFDATA_TRYLOCK(ifp)	rw_try_wlock(&(ifp)->if_afdata_lock)
+#define	IF_AFDATA_DESTROY(ifp)	rw_destroy(&(ifp)->if_afdata_lock)
+
+#define	IF_AFDATA_LOCK_ASSERT(ifp)	rw_assert(&(ifp)->if_afdata_lock, RA_LOCKED)
+#define	IF_AFDATA_RLOCK_ASSERT(ifp)	rw_assert(&(ifp)->if_afdata_lock, RA_RLOCKED)
+#define	IF_AFDATA_WLOCK_ASSERT(ifp)	rw_assert(&(ifp)->if_afdata_lock, RA_WLOCKED)
+#define	IF_AFDATA_UNLOCK_ASSERT(ifp)	rw_assert(&(ifp)->if_afdata_lock, RA_UNLOCKED)
 
 /*
  * 72 was chosen below because it is the size of a TCP/IP

Modified: projects/routing/sys/net/rt_nhops.c
==============================================================================
--- projects/routing/sys/net/rt_nhops.c	Sat Nov 22 17:56:03 2014	(r274873)
+++ projects/routing/sys/net/rt_nhops.c	Sat Nov 22 17:57:54 2014	(r274874)
@@ -681,7 +681,6 @@ fib6_storelladdr(struct ifnet *ifp, stru
 {
 	struct llentry *ln;
 	struct sockaddr_in6 dst_sa;
-	IF_AFDATA_TRACKER;
 
 	if (mm_flags & M_MCAST) {
 		ETHER_MAP_IPV6_MULTICAST(&dst, desten);

Modified: projects/routing/sys/netinet/if_ether.c
==============================================================================
--- projects/routing/sys/netinet/if_ether.c	Sat Nov 22 17:56:03 2014	(r274873)
+++ projects/routing/sys/netinet/if_ether.c	Sat Nov 22 17:57:54 2014	(r274874)
@@ -47,8 +47,6 @@ __FBSDID("$FreeBSD$");
 #include <sys/systm.h>
 #include <sys/mbuf.h>
 #include <sys/malloc.h>
-#include <sys/lock.h>
-#include <sys/rmlock.h>
 #include <sys/proc.h>
 #include <sys/socket.h>
 #include <sys/syslog.h>
@@ -356,7 +354,6 @@ arpresolve_fast(struct ifnet *ifp, struc
 	struct llentry *la;
 	struct sockaddr_in sin;
 	const struct sockaddr *sa_dst;
-	IF_AFDATA_TRACKER;
 
 	if (mflags & M_BCAST) {
 		memcpy(dst_addr, ifp->if_broadcastaddr, ifp->if_addrlen);
@@ -440,7 +437,6 @@ arpresolve(struct ifnet *ifp, struct rte
 	const struct sockaddr *dst, u_char *desten, struct llentry **lle)
 {
 	struct llentry *la = NULL;
-	IF_AFDATA_TRACKER;
 	int is_gw;
 
 	*lle = NULL;
@@ -483,7 +479,6 @@ arpresolve_slow(struct ifnet *ifp, int i
 	struct mbuf *curr = NULL;
 	struct mbuf *next = NULL;
 	int create, error;
-	IF_AFDATA_TRACKER;
 
 	create = 0;
 	*lle = NULL;
@@ -704,7 +699,6 @@ in_arpinput(struct mbuf *m)
 	sin.sin_len = sizeof(struct sockaddr_in);
 	sin.sin_family = AF_INET;
 	sin.sin_addr.s_addr = 0;
-	IF_AFDATA_TRACKER;
 
 	if (ifp->if_bridge)
 		bridged = 1;

Modified: projects/routing/sys/netinet/in.c
==============================================================================
--- projects/routing/sys/netinet/in.c	Sat Nov 22 17:56:03 2014	(r274873)
+++ projects/routing/sys/netinet/in.c	Sat Nov 22 17:57:54 2014	(r274874)
@@ -40,7 +40,6 @@ __FBSDID("$FreeBSD$");
 #include <sys/systm.h>
 #include <sys/sockio.h>
 #include <sys/malloc.h>
-#include <sys/rmlock.h>
 #include <sys/priv.h>
 #include <sys/socket.h>
 #include <sys/jail.h>
@@ -1137,9 +1136,10 @@ in_lltable_delete(struct lltable *llt, u
     const struct sockaddr *l3addr)
 {
 	const struct sockaddr_in *sin = (const struct sockaddr_in *)l3addr;
+	struct ifnet *ifp = llt->llt_ifp;
 	struct llentry *lle;
 
-	IF_AFDATA_LOCK_ASSERT(llt->llt_ifp);
+	IF_AFDATA_WLOCK_ASSERT(ifp);
 	KASSERT(l3addr->sa_family == AF_INET,
 	    ("sin_family %d", l3addr->sa_family));
 
@@ -1249,10 +1249,11 @@ in_lltable_unlink(struct llentry *lle)
 static struct llentry *
 in_lltable_lookup(struct lltable *llt, u_int flags, const struct sockaddr *l3addr)
 {
+	struct ifnet *ifp = llt->llt_ifp;
 	struct llentry *lle;
 	struct in_addr dst;
 
-	IF_AFDATA_LOCK_ASSERT(llt->llt_ifp);
+	IF_AFDATA_LOCK_ASSERT(ifp);
 	KASSERT(l3addr->sa_family == AF_INET,
 	    ("sin_family %d", l3addr->sa_family));
 

Modified: projects/routing/sys/netinet/toecore.c
==============================================================================
--- projects/routing/sys/netinet/toecore.c	Sat Nov 22 17:56:03 2014	(r274873)
+++ projects/routing/sys/netinet/toecore.c	Sat Nov 22 17:57:54 2014	(r274874)
@@ -36,8 +36,6 @@ __FBSDID("$FreeBSD$");
 #include <sys/systm.h>
 #include <sys/mbuf.h>
 #include <sys/module.h>
-#include <sys/lock.h>
-#include <sys/rmlock.h>
 #include <sys/types.h>
 #include <sys/sockopt.h>
 #include <sys/sysctl.h>
@@ -458,7 +456,6 @@ toe_nd6_resolve(struct ifnet *ifp, struc
 	struct llentry *lle;
 	struct sockaddr_in6 *sin6 = (void *)sa;
 	int rc, flags = 0;
-	IF_AFDATA_TRACKER;
 
 restart:
 	IF_AFDATA_RLOCK(ifp);

Modified: projects/routing/sys/netinet6/icmp6.c
==============================================================================
--- projects/routing/sys/netinet6/icmp6.c	Sat Nov 22 17:56:03 2014	(r274873)
+++ projects/routing/sys/netinet6/icmp6.c	Sat Nov 22 17:57:54 2014	(r274874)
@@ -74,7 +74,6 @@ __FBSDID("$FreeBSD$");
 #include <sys/jail.h>
 #include <sys/kernel.h>
 #include <sys/lock.h>
-#include <sys/rmlock.h>
 #include <sys/malloc.h>
 #include <sys/mbuf.h>
 #include <sys/proc.h>
@@ -2505,7 +2504,6 @@ icmp6_redirect_output(struct mbuf *m0, s
 	struct sockaddr_in6 src_sa;
 	struct route_info ri;
 	struct nhop6_basic nh6;
-	IF_AFDATA_TRACKER;
 	int e;
 
 	icmp6_errcount(ND_REDIRECT, 0);

Modified: projects/routing/sys/netinet6/in6.c
==============================================================================
--- projects/routing/sys/netinet6/in6.c	Sat Nov 22 17:56:03 2014	(r274873)
+++ projects/routing/sys/netinet6/in6.c	Sat Nov 22 17:57:54 2014	(r274874)
@@ -72,7 +72,6 @@ __FBSDID("$FreeBSD$");
 #include <sys/errno.h>
 #include <sys/jail.h>
 #include <sys/malloc.h>
-#include <sys/rmlock.h>
 #include <sys/socket.h>
 #include <sys/socketvar.h>
 #include <sys/sockio.h>
@@ -2181,9 +2180,10 @@ in6_lltable_delete(struct lltable *llt, 
 	const struct sockaddr *l3addr)
 {
 	const struct sockaddr_in6 *sin6 = (const struct sockaddr_in6 *)l3addr;
+	struct ifnet *ifp = llt->llt_ifp;
 	struct llentry *lle;
 
-	IF_AFDATA_LOCK_ASSERT(llt->llt_ifp);
+	IF_AFDATA_LOCK_ASSERT(ifp);
 	KASSERT(l3addr->sa_family == AF_INET6,
 	    ("sin_family %d", l3addr->sa_family));
 
@@ -2287,9 +2287,10 @@ in6_lltable_lookup(struct lltable *llt, 
 	const struct sockaddr *l3addr)
 {
 	const struct sockaddr_in6 *sin6 = (const struct sockaddr_in6 *)l3addr;
+	struct ifnet *ifp = llt->llt_ifp;
 	struct llentry *lle;
 
-	IF_AFDATA_LOCK_ASSERT(llt->llt_ifp);
+	IF_AFDATA_LOCK_ASSERT(ifp);
 	KASSERT(l3addr->sa_family == AF_INET6,
 	    ("sin_family %d", l3addr->sa_family));
 

Modified: projects/routing/sys/netinet6/nd6.c
==============================================================================
--- projects/routing/sys/netinet6/nd6.c	Sat Nov 22 17:56:03 2014	(r274873)
+++ projects/routing/sys/netinet6/nd6.c	Sat Nov 22 17:57:54 2014	(r274874)
@@ -49,7 +49,6 @@ __FBSDID("$FreeBSD$");
 #include <sys/syslog.h>
 #include <sys/lock.h>
 #include <sys/rwlock.h>
-#include <sys/rmlock.h>
 #include <sys/queue.h>
 #include <sys/sdt.h>
 #include <sys/sysctl.h>
@@ -998,7 +997,6 @@ nd6_is_addr_neighbor(struct sockaddr_in6
 {
 	struct llentry *lle;
 	int rc = 0;
-	IF_AFDATA_TRACKER;
 
 	IF_AFDATA_UNLOCK_ASSERT(ifp);
 	if (nd6_is_new_addr_neighbor(addr, ifp))
@@ -1168,7 +1166,6 @@ nd6_nud_hint(struct rtentry *rt, struct 
 {
 	struct llentry *ln;
 	struct ifnet *ifp;
-	IF_AFDATA_TRACKER;
 
 	if ((dst6 == NULL) || (rt == NULL))
 		return;
@@ -1256,7 +1253,6 @@ nd6_ioctl(u_long cmd, caddr_t data, stru
 	struct nd_defrouter *dr;
 	struct nd_prefix *pr;
 	int i = 0, error = 0;
-	IF_AFDATA_TRACKER;
 
 	if (ifp->if_afdata[AF_INET6] == NULL)
 		return (EPFNOSUPPORT);
@@ -1582,7 +1578,6 @@ nd6_cache_lladdr(struct ifnet *ifp, stru
 	struct sockaddr_in6 sin6;
 	struct mbuf *chain = NULL;
 	int static_route = 0;
-	IF_AFDATA_TRACKER;
 
 	IF_AFDATA_UNLOCK_ASSERT(ifp);
 
@@ -1872,7 +1867,6 @@ nd6_output(struct ifnet *ifp, struct ifn
 {
 	struct llentry *ln = NULL;
 	int error = 0;
-	IF_AFDATA_TRACKER;
 
 	/* discard the packet if IPv6 operation is disabled on the interface */
 	if ((ND_IFINFO(ifp)->flags & ND6_IFF_IFDISABLED)) {
@@ -1969,7 +1963,6 @@ nd6_output_lle(struct ifnet *ifp, struct
 	int error = 0;
 	int has_lle = 0;
 	int ip6len;
-	IF_AFDATA_TRACKER;
 
 #ifdef INVARIANTS
 	if (lle != NULL) {
@@ -2311,7 +2304,6 @@ nd6_storelladdr(struct ifnet *ifp, struc
     const struct sockaddr *dst, u_char *desten, struct llentry **lle)
 {
 	struct llentry *ln;
-	IF_AFDATA_TRACKER;
 
 	*lle = NULL;
 	IF_AFDATA_UNLOCK_ASSERT(ifp);

Modified: projects/routing/sys/netinet6/nd6_nbr.c
==============================================================================
--- projects/routing/sys/netinet6/nd6_nbr.c	Sat Nov 22 17:56:03 2014	(r274873)
+++ projects/routing/sys/netinet6/nd6_nbr.c	Sat Nov 22 17:57:54 2014	(r274874)
@@ -42,7 +42,6 @@ __FBSDID("$FreeBSD$");
 #include <sys/malloc.h>
 #include <sys/lock.h>
 #include <sys/rwlock.h>
-#include <sys/rmlock.h>
 #include <sys/mbuf.h>
 #include <sys/socket.h>
 #include <sys/sockio.h>
@@ -610,7 +609,6 @@ nd6_na_input(struct mbuf *m, int off, in
 	struct mbuf *chain = NULL;
 	struct m_tag *mtag;
 	struct sockaddr_in6 sin6;
-	IF_AFDATA_TRACKER;
 	char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN];
 
 	if (ip6->ip6_hlim != 255) {

Modified: projects/routing/sys/netinet6/nd6_rtr.c
==============================================================================
--- projects/routing/sys/netinet6/nd6_rtr.c	Sat Nov 22 17:56:03 2014	(r274873)
+++ projects/routing/sys/netinet6/nd6_rtr.c	Sat Nov 22 17:57:54 2014	(r274874)
@@ -626,7 +626,6 @@ defrouter_select(void)
 {
 	struct nd_defrouter *dr, *selected_dr = NULL, *installed_dr = NULL;
 	struct llentry *ln = NULL;
-	IF_AFDATA_TRACKER;
 
 	/*
 	 * Let's handle easy case (3) first:
@@ -1300,7 +1299,6 @@ find_pfxlist_reachable_router(struct nd_
 	struct nd_pfxrouter *pfxrtr;
 	struct llentry *ln;
 	int canreach;
-	IF_AFDATA_TRACKER;
 
 	LIST_FOREACH(pfxrtr, &pr->ndpr_advrtrs, pfr_entry) {
 		IF_AFDATA_RLOCK(pfxrtr->router->ifp);

Modified: projects/routing/sys/netinet6/scope6.c
==============================================================================
--- projects/routing/sys/netinet6/scope6.c	Sat Nov 22 17:56:03 2014	(r274873)
+++ projects/routing/sys/netinet6/scope6.c	Sat Nov 22 17:57:54 2014	(r274874)
@@ -35,8 +35,6 @@ __FBSDID("$FreeBSD$");
 #include <sys/param.h>
 #include <sys/malloc.h>
 #include <sys/mbuf.h>
-#include <sys/lock.h>
-#include <sys/rmlock.h>
 #include <sys/socket.h>
 #include <sys/sockio.h>
 #include <sys/systm.h>
@@ -210,7 +208,6 @@ static int
 scope6_get(struct ifnet *ifp, struct scope6_id *idlist)
 {
 	struct scope6_id *sid;
-	IF_AFDATA_TRACKER;
 
 	/* We only need to lock the interface's afdata for SID() to work. */
 	IF_AFDATA_RLOCK(ifp);
@@ -413,7 +410,6 @@ in6_setscope(struct in6_addr *in6, struc
 	int scope;
 	u_int32_t zoneid = 0;
 	struct scope6_id *sid;
-	IF_AFDATA_TRACKER;
 
 	/*
 	 * special case: the loopback address can only belong to a loopback



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201411221757.sAMHvtlN001693>