Date: Fri, 24 Oct 2003 10:54:30 -0700 (PDT) From: Sam Leffler <sam@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 40409 for review Message-ID: <200310241754.h9OHsUkY006370@repoman.freebsd.org>
index | next in thread | raw e-mail
http://perforce.freebsd.org/chv.cgi?CH=40409 Change 40409 by sam@sam_ebb on 2003/10/24 10:53:49 o add locking around changes to the routing table reference count o dump routing table entry when hitting a reference with a bad reference count o fix comments that still talk about spl's o remove duplicate DUMMYNET_DEBUG define Affected files ... .. //depot/projects/netperf/sys/netinet/ip_dummynet.c#12 edit Differences ... ==== //depot/projects/netperf/sys/netinet/ip_dummynet.c#12 (text+ko) ==== @@ -39,10 +39,7 @@ * + scheduler and dummynet functions; * + configuration and initialization. * - * NOTA BENE: critical sections are protected by splimp()/splx() - * pairs. One would think that splnet() is enough as for most of - * the netinet code, but it is not so because when used with - * bridging, dummynet is invoked at splimp(). + * NOTA BENE: critical sections are protected by the "dummynet lock". * * Most important Changes: * @@ -152,7 +149,6 @@ CTLFLAG_RD, &red_max_pkt_size, 0, "RED Max packet size"); #endif -#define DUMMYNET_DEBUG #ifdef DUMMYNET_DEBUG int dummynet_debug = 0; #ifdef SYSCTL_NODE @@ -194,10 +190,13 @@ { if (rt == NULL) return ; - if (rt->rt_refcnt <= 0) + RT_LOCK(rt); + if (rt->rt_refcnt <= 0) { printf("dummynet: warning, refcnt now %ld, decreasing\n", rt->rt_refcnt); - RTFREE(rt); + rt_print(rt); /* XXX */ + } + RTFREE_LOCKED(rt); } /* @@ -1198,11 +1197,13 @@ * a pointer into *ro so it needs to be updated. */ pkt->ro = *(fwa->ro); - if (fwa->ro->ro_rt) + if (fwa->ro->ro_rt) { + RT_LOCK(fwa->ro->ro_rt); fwa->ro->ro_rt->rt_refcnt++ ; + RT_UNLOCK(fwa->ro->ro_rt); + } if (fwa->dst == (struct sockaddr_in *)&fwa->ro->ro_dst) /* dst points into ro */ fwa->dst = (struct sockaddr_in *)&(pkt->ro.ro_dst) ; - pkt->dn_dst = fwa->dst; pkt->flags = fwa->flags; }home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200310241754.h9OHsUkY006370>
