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>