PERFORCE change 39158 for review
Sam Leffler
sam at FreeBSD.org
Sat Oct 4 11:03:25 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=39158
Change 39158 by sam at 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) <<<
More information about the p4-projects
mailing list