Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Oct 2003 11:03:22 -0700 (PDT)
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 39158 for review
Message-ID:  <200310041803.h94I3MIv018671@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=39158

Change 39158 by sam@sam_ebb on 2003/10/04 11:02:46

	IFC

Affected files ...

.. //depot/projects/netperf/sys/alpha/alpha/pmap.c#8 integrate
.. //depot/projects/netperf/sys/amd64/amd64/pmap.c#11 integrate
.. //depot/projects/netperf/sys/conf/kmod.mk#6 integrate
.. //depot/projects/netperf/sys/i386/i386/pmap.c#13 integrate
.. //depot/projects/netperf/sys/ia64/ia64/pmap.c#7 integrate
.. //depot/projects/netperf/sys/net/bpf.c#7 integrate
.. //depot/projects/netperf/sys/net/if.c#5 integrate
.. //depot/projects/netperf/sys/net/if_disc.c#4 integrate
.. //depot/projects/netperf/sys/net/if_faith.c#4 integrate
.. //depot/projects/netperf/sys/net/if_loop.c#5 integrate
.. //depot/projects/netperf/sys/net/if_stf.c#4 integrate
.. //depot/projects/netperf/sys/net/netisr.c#4 integrate
.. //depot/projects/netperf/sys/net/route.c#11 integrate
.. //depot/projects/netperf/sys/net/route.h#6 integrate
.. //depot/projects/netperf/sys/net/rtsock.c#5 integrate
.. //depot/projects/netperf/sys/netinet/if_atm.c#6 integrate
.. //depot/projects/netperf/sys/netinet/if_ether.c#12 integrate
.. //depot/projects/netperf/sys/netinet/in_pcb.c#5 integrate
.. //depot/projects/netperf/sys/netinet/in_proto.c#4 integrate
.. //depot/projects/netperf/sys/netinet/ip_dummynet.h#3 integrate
.. //depot/projects/netperf/sys/netinet/ip_flow.c#4 integrate
.. //depot/projects/netperf/sys/netinet/ip_icmp.c#4 integrate
.. //depot/projects/netperf/sys/netinet/ip_output.c#9 integrate
.. //depot/projects/netperf/sys/netinet6/icmp6.c#3 integrate
.. //depot/projects/netperf/sys/netinet6/in6.c#4 integrate
.. //depot/projects/netperf/sys/netinet6/in6_ifattach.c#5 integrate
.. //depot/projects/netperf/sys/netinet6/in6_pcb.c#6 integrate
.. //depot/projects/netperf/sys/netinet6/in6_rmx.c#6 integrate
.. //depot/projects/netperf/sys/netinet6/in6_src.c#3 integrate
.. //depot/projects/netperf/sys/netinet6/ip6_output.c#8 integrate
.. //depot/projects/netperf/sys/netinet6/nd6.c#6 integrate
.. //depot/projects/netperf/sys/netinet6/nd6_rtr.c#4 integrate
.. //depot/projects/netperf/sys/powerpc/powerpc/pmap.c#5 integrate
.. //depot/projects/netperf/sys/sparc64/include/param.h#3 integrate
.. //depot/projects/netperf/sys/sparc64/sparc64/pmap.c#8 integrate
.. //depot/projects/netperf/sys/vm/pmap.h#3 integrate
.. //depot/projects/netperf/sys/vm/vm_fault.c#4 integrate

Differences ...

==== //depot/projects/netperf/sys/alpha/alpha/pmap.c#8 (text+ko) ====

@@ -148,7 +148,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.138 2003/09/12 07:07:47 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.139 2003/10/03 22:46:52 alc Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -2093,105 +2093,6 @@
 }
 
 /*
- * pmap_prefault provides a quick way of clustering
- * pagefaults into a processes address space.  It is a "cousin"
- * of pmap_object_init_pt, except it runs at page fault time instead
- * of mmap time.
- */
-#define PFBAK 4
-#define PFFOR 4
-#define PAGEORDER_SIZE (PFBAK+PFFOR)
-
-static int pmap_prefault_pageorder[] = {
-	-1 * PAGE_SIZE, 1 * PAGE_SIZE,
-	-2 * PAGE_SIZE, 2 * PAGE_SIZE,
-	-3 * PAGE_SIZE, 3 * PAGE_SIZE,
-	-4 * PAGE_SIZE, 4 * PAGE_SIZE
-};
-
-void
-pmap_prefault(pmap, addra, entry)
-	pmap_t pmap;
-	vm_offset_t addra;
-	vm_map_entry_t entry;
-{
-	int i;
-	vm_offset_t starta;
-	vm_offset_t addr;
-	vm_pindex_t pindex;
-	vm_page_t m, mpte;
-	vm_object_t object;
-
-	if (!curthread || (pmap != vmspace_pmap(curthread->td_proc->p_vmspace)))
-		return;
-
-	object = entry->object.vm_object;
-
-	starta = addra - PFBAK * PAGE_SIZE;
-	if (starta < entry->start) {
-		starta = entry->start;
-	} else if (starta > addra) {
-		starta = 0;
-	}
-
-	mpte = NULL;
-	for (i = 0; i < PAGEORDER_SIZE; i++) {
-		vm_object_t backing_object, lobject;
-		pt_entry_t *pte;
-
-		addr = addra + pmap_prefault_pageorder[i];
-		if (addr > addra + (PFFOR * PAGE_SIZE))
-			addr = 0;
-
-		if (addr < starta || addr >= entry->end)
-			continue;
-
-		if (!pmap_pte_v(pmap_lev1pte(pmap, addr))
-		    || !pmap_pte_v(pmap_lev2pte(pmap, addr)))
-			continue;
-
-		pte = vtopte(addr);
-		if (*pte)
-			continue;
-
-		pindex = ((addr - entry->start) + entry->offset) >> PAGE_SHIFT;
-		lobject = object;
-		VM_OBJECT_LOCK(lobject);
-		while ((m = vm_page_lookup(lobject, pindex)) == NULL &&
-		    lobject->type == OBJT_DEFAULT &&
-		    (backing_object = lobject->backing_object) != NULL) {
-			if (lobject->backing_object_offset & PAGE_MASK)
-				break;
-			pindex += lobject->backing_object_offset >> PAGE_SHIFT;
-			VM_OBJECT_LOCK(backing_object);
-			VM_OBJECT_UNLOCK(lobject);
-			lobject = backing_object;
-		}
-		VM_OBJECT_UNLOCK(lobject);
-		/*
-		 * give-up when a page is not in memory
-		 */
-		if (m == NULL)
-			break;
-		vm_page_lock_queues();
-		if (((m->valid & VM_PAGE_BITS_ALL) == VM_PAGE_BITS_ALL) &&
-			(m->busy == 0) &&
-		    (m->flags & (PG_BUSY | PG_FICTITIOUS)) == 0) {
-
-			if ((m->queue - m->pc) == PQ_CACHE) {
-				vm_page_deactivate(m);
-			}
-			vm_page_busy(m);
-			vm_page_unlock_queues();
-			mpte = pmap_enter_quick(pmap, addr, m, mpte);
-			vm_page_lock_queues();
-			vm_page_wakeup(m);
-		}
-		vm_page_unlock_queues();
-	}
-}
-
-/*
  *	Routine:	pmap_change_wiring
  *	Function:	Change the wiring attribute for a map/virtual-address
  *			pair.
@@ -2557,6 +2458,26 @@
 }
 
 /*
+ *	pmap_is_prefaultable:
+ *
+ *	Return whether or not the specified virtual address is elgible
+ *	for prefault.
+ */
+boolean_t
+pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr)
+{
+	pt_entry_t *pte;
+
+	if (!pmap_pte_v(pmap_lev1pte(pmap, addr)) ||
+	    !pmap_pte_v(pmap_lev2pte(pmap, addr)))
+		return (FALSE);
+	pte = vtopte(addr);
+	if (*pte)
+		return (FALSE);
+	return (TRUE);
+}
+
+/*
  *	Clear the modify bits on the specified physical page.
  */
 void

==== //depot/projects/netperf/sys/amd64/amd64/pmap.c#11 (text+ko) ====

@@ -73,7 +73,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.440 2003/09/27 20:53:00 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.441 2003/10/03 22:46:52 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -2124,106 +2124,6 @@
 }
 
 /*
- * pmap_prefault provides a quick way of clustering
- * pagefaults into a processes address space.  It is a "cousin"
- * of pmap_object_init_pt, except it runs at page fault time instead
- * of mmap time.
- */
-#define PFBAK 4
-#define PFFOR 4
-#define PAGEORDER_SIZE (PFBAK+PFFOR)
-
-static int pmap_prefault_pageorder[] = {
-	-1 * PAGE_SIZE, 1 * PAGE_SIZE,
-	-2 * PAGE_SIZE, 2 * PAGE_SIZE,
-	-3 * PAGE_SIZE, 3 * PAGE_SIZE,
-	-4 * PAGE_SIZE, 4 * PAGE_SIZE
-};
-
-void
-pmap_prefault(pmap, addra, entry)
-	pmap_t pmap;
-	vm_offset_t addra;
-	vm_map_entry_t entry;
-{
-	int i;
-	vm_offset_t starta;
-	vm_offset_t addr;
-	vm_pindex_t pindex;
-	vm_page_t m, mpte;
-	vm_object_t object;
-	pd_entry_t *pde;
-
-	if (!curthread || (pmap != vmspace_pmap(curthread->td_proc->p_vmspace)))
-		return;
-
-	object = entry->object.vm_object;
-
-	starta = addra - PFBAK * PAGE_SIZE;
-	if (starta < entry->start) {
-		starta = entry->start;
-	} else if (starta > addra) {
-		starta = 0;
-	}
-
-	mpte = NULL;
-	for (i = 0; i < PAGEORDER_SIZE; i++) {
-		vm_object_t backing_object, lobject;
-		pt_entry_t *pte;
-
-		addr = addra + pmap_prefault_pageorder[i];
-		if (addr > addra + (PFFOR * PAGE_SIZE))
-			addr = 0;
-
-		if (addr < starta || addr >= entry->end)
-			continue;
-
-		pde = pmap_pde(pmap, addr);
-		if (pde == NULL || (*pde & PG_V) == 0) 
-			continue;
-
-		pte = vtopte(addr);
-		if ((*pte & PG_V) == 0)
-			continue;
-
-		pindex = ((addr - entry->start) + entry->offset) >> PAGE_SHIFT;
-		lobject = object;
-		VM_OBJECT_LOCK(lobject);
-		while ((m = vm_page_lookup(lobject, pindex)) == NULL &&
-		    lobject->type == OBJT_DEFAULT &&
-		    (backing_object = lobject->backing_object) != NULL) {
-			if (lobject->backing_object_offset & PAGE_MASK)
-				break;
-			pindex += lobject->backing_object_offset >> PAGE_SHIFT;
-			VM_OBJECT_LOCK(backing_object);
-			VM_OBJECT_UNLOCK(lobject);
-			lobject = backing_object;
-		}
-		VM_OBJECT_UNLOCK(lobject);
-		/*
-		 * give-up when a page is not in memory
-		 */
-		if (m == NULL)
-			break;
-		vm_page_lock_queues();
-		if (((m->valid & VM_PAGE_BITS_ALL) == VM_PAGE_BITS_ALL) &&
-			(m->busy == 0) &&
-		    (m->flags & (PG_BUSY | PG_FICTITIOUS)) == 0) {
-
-			if ((m->queue - m->pc) == PQ_CACHE) {
-				vm_page_deactivate(m);
-			}
-			vm_page_busy(m);
-			vm_page_unlock_queues();
-			mpte = pmap_enter_quick(pmap, addr, m, mpte);
-			vm_page_lock_queues();
-			vm_page_wakeup(m);
-		}
-		vm_page_unlock_queues();
-	}
-}
-
-/*
  *	Routine:	pmap_change_wiring
  *	Function:	Change the wiring attribute for a map/virtual-address
  *			pair.
@@ -2598,6 +2498,27 @@
 }
 
 /*
+ *	pmap_is_prefaultable:
+ *
+ *	Return whether or not the specified virtual address is elgible
+ *	for prefault.
+ */
+boolean_t
+pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr)
+{
+	pd_entry_t *pde;
+	pt_entry_t *pte;
+
+	pde = pmap_pde(pmap, addr);
+	if (pde == NULL || (*pde & PG_V) == 0) 
+		return (FALSE);
+	pte = vtopte(addr);
+	if ((*pte & PG_V) == 0)
+		return (FALSE);
+	return (TRUE);
+}
+
+/*
  *	Clear the given bit in each of the given page's ptes.
  */
 static __inline void

==== //depot/projects/netperf/sys/conf/kmod.mk#6 (text+ko) ====

@@ -1,5 +1,5 @@
 #	From: @(#)bsd.prog.mk	5.26 (Berkeley) 6/25/91
-# $FreeBSD: src/sys/conf/kmod.mk,v 1.142 2003/10/02 21:34:06 ru Exp $
+# $FreeBSD: src/sys/conf/kmod.mk,v 1.143 2003/10/03 22:00:06 imp Exp $
 #
 # The include file <bsd.kmod.mk> handles installing Kernel Loadable Device
 # drivers (KLD's).
@@ -165,11 +165,11 @@
 
 # Search for kernel source tree in standard places.
 .for _dir in ${.CURDIR}/../.. ${.CURDIR}/../../.. /sys /usr/src/sys
-.if !defined(SYSDIR) && exists(${_dir}/kern/)
+.if !defined(SYSDIR) && exists(${_dir}/kern)
 SYSDIR=	${_dir}
 .endif
 .endfor
-.if !defined(SYSDIR) || !exists(${SYSDIR}/kern/)
+.if !defined(SYSDIR) || !exists(${SYSDIR}/kern)
 .error "can't find kernel source tree"
 .endif
 

==== //depot/projects/netperf/sys/i386/i386/pmap.c#13 (text+ko) ====

@@ -73,7 +73,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.442 2003/10/01 23:46:08 peter Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/pmap.c,v 1.443 2003/10/03 22:46:52 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -2192,104 +2192,6 @@
 }
 
 /*
- * pmap_prefault provides a quick way of clustering
- * pagefaults into a processes address space.  It is a "cousin"
- * of pmap_object_init_pt, except it runs at page fault time instead
- * of mmap time.
- */
-#define PFBAK 4
-#define PFFOR 4
-#define PAGEORDER_SIZE (PFBAK+PFFOR)
-
-static int pmap_prefault_pageorder[] = {
-	-1 * PAGE_SIZE, 1 * PAGE_SIZE,
-	-2 * PAGE_SIZE, 2 * PAGE_SIZE,
-	-3 * PAGE_SIZE, 3 * PAGE_SIZE,
-	-4 * PAGE_SIZE, 4 * PAGE_SIZE
-};
-
-void
-pmap_prefault(pmap, addra, entry)
-	pmap_t pmap;
-	vm_offset_t addra;
-	vm_map_entry_t entry;
-{
-	int i;
-	vm_offset_t starta;
-	vm_offset_t addr;
-	vm_pindex_t pindex;
-	vm_page_t m, mpte;
-	vm_object_t object;
-
-	if (!curthread || (pmap != vmspace_pmap(curthread->td_proc->p_vmspace)))
-		return;
-
-	object = entry->object.vm_object;
-
-	starta = addra - PFBAK * PAGE_SIZE;
-	if (starta < entry->start) {
-		starta = entry->start;
-	} else if (starta > addra) {
-		starta = 0;
-	}
-
-	mpte = NULL;
-	for (i = 0; i < PAGEORDER_SIZE; i++) {
-		vm_object_t backing_object, lobject;
-		pt_entry_t *pte;
-
-		addr = addra + pmap_prefault_pageorder[i];
-		if (addr > addra + (PFFOR * PAGE_SIZE))
-			addr = 0;
-
-		if (addr < starta || addr >= entry->end)
-			continue;
-
-		if ((*pmap_pde(pmap, addr)) == 0) 
-			continue;
-
-		pte = vtopte(addr);
-		if (*pte)
-			continue;
-
-		pindex = ((addr - entry->start) + entry->offset) >> PAGE_SHIFT;
-		lobject = object;
-		VM_OBJECT_LOCK(lobject);
-		while ((m = vm_page_lookup(lobject, pindex)) == NULL &&
-		    lobject->type == OBJT_DEFAULT &&
-		    (backing_object = lobject->backing_object) != NULL) {
-			if (lobject->backing_object_offset & PAGE_MASK)
-				break;
-			pindex += lobject->backing_object_offset >> PAGE_SHIFT;
-			VM_OBJECT_LOCK(backing_object);
-			VM_OBJECT_UNLOCK(lobject);
-			lobject = backing_object;
-		}
-		VM_OBJECT_UNLOCK(lobject);
-		/*
-		 * give-up when a page is not in memory
-		 */
-		if (m == NULL)
-			break;
-		vm_page_lock_queues();
-		if (((m->valid & VM_PAGE_BITS_ALL) == VM_PAGE_BITS_ALL) &&
-			(m->busy == 0) &&
-		    (m->flags & (PG_BUSY | PG_FICTITIOUS)) == 0) {
-
-			if ((m->queue - m->pc) == PQ_CACHE) {
-				vm_page_deactivate(m);
-			}
-			vm_page_busy(m);
-			vm_page_unlock_queues();
-			mpte = pmap_enter_quick(pmap, addr, m, mpte);
-			vm_page_lock_queues();
-			vm_page_wakeup(m);
-		}
-		vm_page_unlock_queues();
-	}
-}
-
-/*
  *	Routine:	pmap_change_wiring
  *	Function:	Change the wiring attribute for a map/virtual-address
  *			pair.
@@ -2764,6 +2666,25 @@
 }
 
 /*
+ *	pmap_is_prefaultable:
+ *
+ *	Return whether or not the specified virtual address is elgible
+ *	for prefault.
+ */
+boolean_t
+pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr)
+{
+	pt_entry_t *pte;
+
+	if ((*pmap_pde(pmap, addr)) == 0) 
+		return (FALSE);
+	pte = vtopte(addr);
+	if (*pte)
+		return (FALSE);
+	return (TRUE);
+}
+
+/*
  *	Clear the given bit in each of the given page's ptes.
  */
 static __inline void

==== //depot/projects/netperf/sys/ia64/ia64/pmap.c#7 (text+ko) ====

@@ -46,7 +46,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ia64/ia64/pmap.c,v 1.123 2003/09/20 19:27:48 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/ia64/ia64/pmap.c,v 1.124 2003/10/03 22:46:53 alc Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -1736,101 +1736,6 @@
 }
 
 /*
- * pmap_prefault provides a quick way of clustering
- * pagefaults into a processes address space.  It is a "cousin"
- * of pmap_object_init_pt, except it runs at page fault time instead
- * of mmap time.
- */
-#define PFBAK 4
-#define PFFOR 4
-#define PAGEORDER_SIZE (PFBAK+PFFOR)
-
-static int pmap_prefault_pageorder[] = {
-	-1 * PAGE_SIZE, 1 * PAGE_SIZE,
-	-2 * PAGE_SIZE, 2 * PAGE_SIZE,
-	-3 * PAGE_SIZE, 3 * PAGE_SIZE,
-	-4 * PAGE_SIZE, 4 * PAGE_SIZE
-};
-
-void
-pmap_prefault(pmap, addra, entry)
-	pmap_t pmap;
-	vm_offset_t addra;
-	vm_map_entry_t entry;
-{
-	int i;
-	vm_offset_t starta;
-	vm_offset_t addr;
-	vm_pindex_t pindex;
-	vm_page_t m, mpte;
-	vm_object_t object;
-
-	if (!curthread || (pmap != vmspace_pmap(curthread->td_proc->p_vmspace)))
-		return;
-
-	object = entry->object.vm_object;
-
-	starta = addra - PFBAK * PAGE_SIZE;
-	if (starta < entry->start) {
-		starta = entry->start;
-	} else if (starta > addra) {
-		starta = 0;
-	}
-
-	mpte = NULL;
-	for (i = 0; i < PAGEORDER_SIZE; i++) {
-		vm_object_t backing_object, lobject;
-		struct ia64_lpte *pte;
-
-		addr = addra + pmap_prefault_pageorder[i];
-		if (addr > addra + (PFFOR * PAGE_SIZE))
-			addr = 0;
-
-		if (addr < starta || addr >= entry->end)
-			continue;
-
-		pte = pmap_find_vhpt(addr);
-		if (pte && pte->pte_p)
-			continue;
-
-		pindex = ((addr - entry->start) + entry->offset) >> PAGE_SHIFT;
-		lobject = object;
-		VM_OBJECT_LOCK(lobject);
-		while ((m = vm_page_lookup(lobject, pindex)) == NULL &&
-		    lobject->type == OBJT_DEFAULT &&
-		    (backing_object = lobject->backing_object) != NULL) {
-			if (lobject->backing_object_offset & PAGE_MASK)
-				break;
-			pindex += lobject->backing_object_offset >> PAGE_SHIFT;
-			VM_OBJECT_LOCK(backing_object);
-			VM_OBJECT_UNLOCK(lobject);
-			lobject = backing_object;
-		}
-		VM_OBJECT_UNLOCK(lobject);
-		/*
-		 * give-up when a page is not in memory
-		 */
-		if (m == NULL)
-			break;
-		vm_page_lock_queues();
-		if (((m->valid & VM_PAGE_BITS_ALL) == VM_PAGE_BITS_ALL) &&
-			(m->busy == 0) &&
-		    (m->flags & (PG_BUSY | PG_FICTITIOUS)) == 0) {
-
-			if ((m->queue - m->pc) == PQ_CACHE) {
-				vm_page_deactivate(m);
-			}
-			vm_page_busy(m);
-			vm_page_unlock_queues();
-			pmap_enter_quick(pmap, addr, m, NULL);
-			vm_page_lock_queues();
-			vm_page_wakeup(m);
-		}
-		vm_page_unlock_queues();
-	}
-}
-
-/*
  *	Routine:	pmap_change_wiring
  *	Function:	Change the wiring attribute for a map/virtual-address
  *			pair.
@@ -2148,6 +2053,23 @@
 }
 
 /*
+ *	pmap_is_prefaultable:
+ *
+ *	Return whether or not the specified virtual address is elgible
+ *	for prefault.
+ */
+boolean_t
+pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr)
+{
+	struct ia64_lpte *pte;
+
+	pte = pmap_find_vhpt(addr);
+	if (pte && pte->pte_p)
+		return (FALSE);
+	return (TRUE);
+}
+
+/*
  *	Clear the modify bits on the specified physical page.
  */
 void

==== //depot/projects/netperf/sys/net/bpf.c#7 (text+ko) ====

@@ -37,7 +37,7 @@
  *
  *      @(#)bpf.c	8.4 (Berkeley) 1/9/95
  *
- * $FreeBSD: src/sys/net/bpf.c,v 1.115 2003/09/04 22:27:45 sam Exp $
+ * $FreeBSD: src/sys/net/bpf.c,v 1.116 2003/10/04 01:32:28 sam Exp $
  */
 
 #include "opt_bpf.h"
@@ -1588,6 +1588,14 @@
 }
 
 void
+bpfattach2(ifp, dlt, hdrlen, driverp)
+	struct ifnet *ifp;
+	u_int dlt, hdrlen;
+	struct bpf_if **driverp;
+{
+}
+
+void
 bpfdetach(ifp)
 	struct ifnet *ifp;
 {

==== //depot/projects/netperf/sys/net/if.c#5 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)if.c	8.5 (Berkeley) 1/9/95
- * $FreeBSD: src/sys/net/if.c,v 1.165 2003/09/28 20:48:12 phk Exp $
+ * $FreeBSD: src/sys/net/if.c,v 1.166 2003/10/04 03:44:48 sam Exp $
  */
 
 #include "opt_compat.h"

==== //depot/projects/netperf/sys/net/if_disc.c#4 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	From: @(#)if_loop.c	8.1 (Berkeley) 6/10/93
- * $FreeBSD: src/sys/net/if_disc.c,v 1.35 2003/04/08 14:25:45 des Exp $
+ * $FreeBSD: src/sys/net/if_disc.c,v 1.36 2003/10/04 03:44:48 sam Exp $
  */
 
 /*

==== //depot/projects/netperf/sys/net/if_faith.c#4 (text+ko) ====

@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/net/if_faith.c,v 1.21 2003/04/08 14:25:45 des Exp $
+ * $FreeBSD: src/sys/net/if_faith.c,v 1.22 2003/10/04 03:44:48 sam Exp $
  */
 /*
  * derived from

==== //depot/projects/netperf/sys/net/if_loop.c#5 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)if_loop.c	8.2 (Berkeley) 1/9/95
- * $FreeBSD: src/sys/net/if_loop.c,v 1.85 2003/08/09 05:44:00 silby Exp $
+ * $FreeBSD: src/sys/net/if_loop.c,v 1.86 2003/10/04 03:44:48 sam Exp $
  */
 
 /*

==== //depot/projects/netperf/sys/net/if_stf.c#4 (text+ko) ====

@@ -1,4 +1,4 @@
-/*	$FreeBSD: src/sys/net/if_stf.c,v 1.32 2003/03/04 23:19:51 jlemon Exp $	*/
+/*	$FreeBSD: src/sys/net/if_stf.c,v 1.33 2003/10/04 03:44:48 sam Exp $	*/
 /*	$KAME: if_stf.c,v 1.73 2001/12/03 11:08:30 keiichi Exp $	*/
 
 /*

==== //depot/projects/netperf/sys/net/netisr.c#4 (text+ko) ====

@@ -24,7 +24,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/net/netisr.c,v 1.6 2003/10/02 02:54:10 rwatson Exp $
+ * $FreeBSD: src/sys/net/netisr.c,v 1.7 2003/10/03 18:27:24 rwatson Exp $
  */
 
 #include <sys/param.h>
@@ -100,7 +100,6 @@
 	int	isrs_count;			/* dispatch count */
 	int	isrs_directed;			/* ...successfully dispatched */
 	int	isrs_deferred;			/* ...queued instead */
-	int	isrs_bypassed;			/* bypassed queued packets */
 	int	isrs_queued;			/* intentionally queueued */
 	int	isrs_swi_count;			/* swi_net handlers called */
 };
@@ -119,14 +118,30 @@
     &isrstat.isrs_directed, 0, "");
 SYSCTL_INT(_net_isr, OID_AUTO, deferred, CTLFLAG_RD, 
     &isrstat.isrs_deferred, 0, "");
-SYSCTL_INT(_net_isr, OID_AUTO, bypassed, CTLFLAG_RD, 
-    &isrstat.isrs_bypassed, 0, "");
 SYSCTL_INT(_net_isr, OID_AUTO, queued, CTLFLAG_RD, 
     &isrstat.isrs_queued, 0, "");
 SYSCTL_INT(_net_isr, OID_AUTO, swi_count, CTLFLAG_RD, 
     &isrstat.isrs_swi_count, 0, "");
 
 /*
+ * Process all packets currently present in a netisr queue.  Used to
+ * drain an existing set of packets waiting for processing when we
+ * begin direct dispatch, to avoid processing packets out of order.
+ */
+static void
+netisr_processqueue(struct netisr *ni)
+{
+	struct mbuf *m;
+
+	for (;;) {
+		IF_DEQUEUE(ni->ni_queue, m);
+		if (m == NULL)
+			break;
+		ni->ni_handler(m);
+	}
+}
+
+/*
  * Call the netisr directly instead of queueing the packet, if possible.
  *
  * Ideally, the permissibility of calling the routine would be determined
@@ -163,10 +178,9 @@
 		 *	b. fallback to queueing the packet,
 		 *	c. sweep the issue under the rug and ignore it.
 		 *
-		 * Currently, we do c), and keep a rough event counter.
+		 * Currently, we do a).  Previously, we did c).
 		 */
-		if (_IF_QLEN(ni->ni_queue) > 0)
-			isrstat.isrs_bypassed++;
+		netisr_processqueue(ni);
 		ni->ni_handler(m);
 		mtx_unlock(&netisr_mtx);
 	} else {
@@ -204,7 +218,6 @@
 swi_net(void *dummy)
 {
 	struct netisr *ni;
-	struct mbuf *m;
 	u_int bits;
 	int i;
 #ifdef DEVICE_POLLING
@@ -230,12 +243,7 @@
 			if (ni->ni_queue == NULL)
 				ni->ni_handler(NULL);
 			else
-				for (;;) {
-					IF_DEQUEUE(ni->ni_queue, m);
-					if (m == NULL)
-						break;
-					ni->ni_handler(m);
-				}
+				netisr_processqueue(ni);
 		}
 	} while (polling);
 	mtx_unlock(&netisr_mtx);

==== //depot/projects/netperf/sys/net/route.c#11 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)route.c	8.3.1.1 (Berkeley) 2/23/95
- * $FreeBSD: src/sys/net/route.c,v 1.81 2003/04/13 06:21:02 hsu Exp $
+ * $FreeBSD: src/sys/net/route.c,v 1.83 2003/10/04 03:44:48 sam Exp $
  */
 
 #include "opt_inet.h"

==== //depot/projects/netperf/sys/net/route.h#6 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)route.h	8.4 (Berkeley) 1/9/95
- * $FreeBSD: src/sys/net/route.h,v 1.48 2003/07/19 00:21:13 hsu Exp $
+ * $FreeBSD: src/sys/net/route.h,v 1.50 2003/10/04 03:44:48 sam Exp $
  */
 
 #ifndef _NET_ROUTE_H_

==== //depot/projects/netperf/sys/net/rtsock.c#5 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)rtsock.c	8.7 (Berkeley) 10/12/95
- * $FreeBSD: src/sys/net/rtsock.c,v 1.89 2003/03/05 19:24:22 peter Exp $
+ * $FreeBSD: src/sys/net/rtsock.c,v 1.92 2003/10/04 03:44:48 sam Exp $
  */
 
 #include <sys/param.h>

==== //depot/projects/netperf/sys/netinet/if_atm.c#6 (text+ko) ====

@@ -32,7 +32,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/netinet/if_atm.c,v 1.15 2003/08/12 14:20:31 harti Exp $");
+__FBSDID("$FreeBSD: src/sys/netinet/if_atm.c,v 1.16 2003/10/04 03:44:49 sam Exp $");
 
 /*
  * IP <=> ATM address resolution.
@@ -329,6 +329,7 @@
 			RT_UNLOCK(rt);
 			goto bad;
 		}
+		RT_UNLOCK(rt);
 	}
 
 	/*

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

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)if_ether.c	8.1 (Berkeley) 6/10/93
- * $FreeBSD: src/sys/netinet/if_ether.c,v 1.108 2003/10/03 09:19:23 bms Exp $
+ * $FreeBSD: src/sys/netinet/if_ether.c,v 1.111 2003/10/04 03:44:49 sam Exp $
  */
 
 /*
@@ -213,7 +213,10 @@
 	case RTM_RESOLVE:
 		if (gate->sa_family != AF_LINK ||
 		    gate->sa_len < sizeof(null_sdl)) {
-			log(LOG_DEBUG, "%s: bad gateway value\n", __func__);
+			log(LOG_DEBUG, "%s: bad gateway %s%s\n", __func__,
+			    inet_ntoa(SIN(rt_key(rt))->sin_addr),
+			    (gate->sa_family != AF_LINK) ?
+			    " (!AF_LINK)": "");
 			break;
 		}
 		SDL(gate)->sdl_type = rt->rt_ifp->if_type;

==== //depot/projects/netperf/sys/netinet/in_pcb.c#5 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)in_pcb.c	8.4 (Berkeley) 5/24/95
- * $FreeBSD: src/sys/netinet/in_pcb.c,v 1.122 2003/08/07 15:04:27 jhb Exp $
+ * $FreeBSD: src/sys/netinet/in_pcb.c,v 1.123 2003/10/04 03:44:49 sam Exp $
  */
 
 #include "opt_ipsec.h"

==== //depot/projects/netperf/sys/netinet/in_proto.c#4 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)in_proto.c	8.2 (Berkeley) 2/9/95
- * $FreeBSD: src/sys/netinet/in_proto.c,v 1.65 2003/08/07 18:16:59 hsu Exp $
+ * $FreeBSD: src/sys/netinet/in_proto.c,v 1.66 2003/10/03 22:06:36 sam Exp $
  */
 
 #include "opt_ipdivert.h"

==== //depot/projects/netperf/sys/netinet/ip_dummynet.h#3 (text+ko) ====

@@ -24,7 +24,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/netinet/ip_dummynet.h,v 1.26 2003/03/27 14:56:36 maxim Exp $
+ * $FreeBSD: src/sys/netinet/ip_dummynet.h,v 1.27 2003/10/03 20:58:56 sam Exp $
  */
 
 #ifndef _IP_DUMMYNET_H

==== //depot/projects/netperf/sys/netinet/ip_flow.c#4 (text+ko) ====

@@ -33,7 +33,7 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/netinet/ip_flow.c,v 1.14 2003/09/01 05:12:36 sam Exp $
+ * $FreeBSD: src/sys/netinet/ip_flow.c,v 1.15 2003/10/04 03:44:49 sam Exp $
  */
 
 #include <sys/param.h>

==== //depot/projects/netperf/sys/netinet/ip_icmp.c#4 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)ip_icmp.c	8.2 (Berkeley) 1/4/94
- * $FreeBSD: src/sys/netinet/ip_icmp.c,v 1.79 2003/08/21 18:39:15 rwatson Exp $
+ * $FreeBSD: src/sys/netinet/ip_icmp.c,v 1.80 2003/10/04 03:44:49 sam Exp $
  */
 
 #include "opt_ipsec.h"

==== //depot/projects/netperf/sys/netinet/ip_output.c#9 (text+ko) ====

@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)ip_output.c	8.3 (Berkeley) 1/21/94
- * $FreeBSD: src/sys/netinet/ip_output.c,v 1.194 2003/09/23 17:54:03 sam Exp $
+ * $FreeBSD: src/sys/netinet/ip_output.c,v 1.195 2003/10/04 03:44:49 sam Exp $
  */
 
 #include "opt_ipfw.h"

==== //depot/projects/netperf/sys/netinet6/icmp6.c#3 (text+ko) ====

@@ -1,4 +1,4 @@
-/*	$FreeBSD: src/sys/netinet6/icmp6.c,v 1.32 2003/04/29 08:43:55 suz Exp $	*/
+/*	$FreeBSD: src/sys/netinet6/icmp6.c,v 1.33 2003/10/04 03:44:49 sam Exp $	*/
 /*	$KAME: icmp6.c,v 1.211 2001/04/04 05:56:20 itojun Exp $	*/
 
 /*

==== //depot/projects/netperf/sys/netinet6/in6.c#4 (text+ko) ====

@@ -1,4 +1,4 @@
-/*	$FreeBSD: src/sys/netinet6/in6.c,v 1.26 2003/02/19 05:47:35 imp Exp $	*/
+/*	$FreeBSD: src/sys/netinet6/in6.c,v 1.27 2003/10/04 03:44:49 sam Exp $	*/
 /*	$KAME: in6.c,v 1.259 2002/01/21 11:37:50 keiichi Exp $	*/
 
 /*

==== //depot/projects/netperf/sys/netinet6/in6_ifattach.c#5 (text+ko) ====

@@ -1,4 +1,4 @@
-/*	$FreeBSD: src/sys/netinet6/in6_ifattach.c,v 1.13 2003/09/14 02:32:31 mdodd Exp $	*/
+/*	$FreeBSD: src/sys/netinet6/in6_ifattach.c,v 1.14 2003/10/04 03:44:49 sam Exp $	*/
 /*	$KAME: in6_ifattach.c,v 1.118 2001/05/24 07:44:00 itojun Exp $	*/
 
 /*

==== //depot/projects/netperf/sys/netinet6/in6_pcb.c#6 (text+ko) ====

@@ -1,4 +1,4 @@
-/*	$FreeBSD: src/sys/netinet6/in6_pcb.c,v 1.39 2003/10/01 21:24:28 ume Exp $	*/
+/*	$FreeBSD: src/sys/netinet6/in6_pcb.c,v 1.40 2003/10/04 03:44:49 sam Exp $	*/
 /*	$KAME: in6_pcb.c,v 1.31 2001/05/21 05:45:10 jinmei Exp $	*/

>>> TRUNCATED FOR MAIL (1000 lines) <<<



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