PERFORCE change 36998 for review

Sam Leffler sam at FreeBSD.org
Tue Aug 26 17:21:55 PDT 2003


http://perforce.freebsd.org/chv.cgi?CH=36998

Change 36998 by sam at sam_ebb on 2003/08/26 17:21:41

	de-giant arp timer

Affected files ...

.. //depot/projects/netperf/sys/netinet/if_ether.c#3 edit

Differences ...

==== //depot/projects/netperf/sys/netinet/if_ether.c#3 (text+ko) ====

@@ -112,6 +112,7 @@
 static int	arp_maxtries = 5;
 static int	useloopback = 1; /* use loopback interface for local traffic */
 static int	arp_proxyall = 0;
+static struct callout arp_callout;
 
 SYSCTL_INT(_net_link_ether_inet, OID_AUTO, maxtries, CTLFLAG_RW,
 	   &arp_maxtries, 0, "");
@@ -142,7 +143,6 @@
 	void *ignored_arg;
 {
 	struct llinfo_arp *la, *ola;
-	int s = splnet();
 
 	RADIX_NODE_HEAD_LOCK(rt_tables[AF_INET]);
 	la = LIST_FIRST(&llinfo_arp);
@@ -154,8 +154,8 @@
 			arptfree(ola);		/* timer has expired, clear */
 	}
 	RADIX_NODE_HEAD_UNLOCK(rt_tables[AF_INET]);
-	splx(s);
-	timeout(arptimer, NULL, arpt_prune * hz);
+
+	callout_reset(&arp_callout, arpt_prune * hz, arptimer, NULL);
 }
 
 /*
@@ -175,7 +175,7 @@
 
 	if (!arpinit_done) {
 		arpinit_done = 1;
-		timeout(arptimer, (caddr_t)0, hz);
+		callout_reset(&arp_callout, hz, arptimer, NULL);
 	}
 	if (rt->rt_flags & RTF_GATEWAY)
 		return;
@@ -510,7 +510,7 @@
 
 	if (!arpinit_done) {
 		arpinit_done = 1;
-		timeout(arptimer, (caddr_t)0, hz);
+		callout_reset(&arp_callout, hz, arptimer, NULL);
 	}
 	if (m->m_len < sizeof(struct arphdr) &&
 	    ((m = m_pullup(m, sizeof(struct arphdr))) == NULL)) {
@@ -961,7 +961,7 @@
 	arpintrq.ifq_maxlen = 50;
 	mtx_init(&arpintrq.ifq_mtx, "arp_inq", NULL, MTX_DEF);
 	LIST_INIT(&llinfo_arp);
+	callout_init(&arp_callout, CALLOUT_MPSAFE);
 	netisr_register(NETISR_ARP, arpintr, &arpintrq);
 }
-
 SYSINIT(arp, SI_SUB_PROTO_DOMAIN, SI_ORDER_ANY, arp_init, 0);


More information about the p4-projects mailing list