From owner-p4-projects@FreeBSD.ORG Tue Jun 27 16:45:56 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 81D0416A531; Tue, 27 Jun 2006 16:45:56 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 43E0116A506 for ; Tue, 27 Jun 2006 16:45:56 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 99DC144943 for ; Tue, 27 Jun 2006 15:39:20 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id k5RFdKbX050318 for ; Tue, 27 Jun 2006 15:39:20 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id k5RFdIZn050313 for perforce@freebsd.org; Tue, 27 Jun 2006 15:39:18 GMT (envelope-from jhb@freebsd.org) Date: Tue, 27 Jun 2006 15:39:18 GMT Message-Id: <200606271539.k5RFdIZn050313@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Cc: Subject: PERFORCE change 100148 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jun 2006 16:45:57 -0000 http://perforce.freebsd.org/chv.cgi?CH=100148 Change 100148 by jhb@jhb_mutex on 2006/06/27 15:38:27 IFC @100146. Affected files ... .. //depot/projects/smpng/sys/amd64/amd64/pmap.c#61 integrate .. //depot/projects/smpng/sys/amd64/conf/GENERIC#48 integrate .. //depot/projects/smpng/sys/amd64/conf/NOTES#33 integrate .. //depot/projects/smpng/sys/amd64/linux32/linux32_proto.h#9 integrate .. //depot/projects/smpng/sys/amd64/linux32/linux32_syscall.h#9 integrate .. //depot/projects/smpng/sys/amd64/linux32/linux32_sysent.c#9 integrate .. //depot/projects/smpng/sys/amd64/linux32/syscalls.master#13 integrate .. //depot/projects/smpng/sys/arm/arm/elf_trampoline.c#9 integrate .. //depot/projects/smpng/sys/arm/at91/files.at91#3 integrate .. //depot/projects/smpng/sys/cam/cam_xpt.c#36 integrate .. //depot/projects/smpng/sys/compat/freebsd32/freebsd32_proto.h#30 integrate .. //depot/projects/smpng/sys/compat/freebsd32/freebsd32_syscall.h#30 integrate .. //depot/projects/smpng/sys/compat/freebsd32/freebsd32_syscalls.c#30 integrate .. //depot/projects/smpng/sys/compat/freebsd32/freebsd32_sysent.c#30 integrate .. //depot/projects/smpng/sys/compat/freebsd32/syscalls.master#33 integrate .. //depot/projects/smpng/sys/compat/linux/linux_misc.c#65 integrate .. //depot/projects/smpng/sys/compat/svr4/svr4_misc.c#47 integrate .. //depot/projects/smpng/sys/compat/svr4/svr4_proto.h#11 integrate .. //depot/projects/smpng/sys/compat/svr4/svr4_syscall.h#10 integrate .. //depot/projects/smpng/sys/compat/svr4/svr4_syscallnames.c#10 integrate .. //depot/projects/smpng/sys/compat/svr4/svr4_sysent.c#10 integrate .. //depot/projects/smpng/sys/compat/svr4/syscalls.master#14 integrate .. //depot/projects/smpng/sys/conf/NOTES#122 integrate .. //depot/projects/smpng/sys/conf/files#178 integrate .. //depot/projects/smpng/sys/conf/files.amd64#44 integrate .. //depot/projects/smpng/sys/conf/files.i386#98 integrate .. //depot/projects/smpng/sys/conf/options#122 integrate .. //depot/projects/smpng/sys/dev/ath/if_ath.c#41 integrate .. //depot/projects/smpng/sys/dev/ath/if_athioctl.h#13 integrate .. //depot/projects/smpng/sys/dev/ath/if_athvar.h#25 integrate .. //depot/projects/smpng/sys/dev/mii/rgephy.c#7 integrate .. //depot/projects/smpng/sys/dev/mpt/mpt.c#17 integrate .. //depot/projects/smpng/sys/dev/mpt/mpt.h#14 integrate .. //depot/projects/smpng/sys/dev/mpt/mpt_cam.c#10 integrate .. //depot/projects/smpng/sys/dev/mpt/mpt_pci.c#21 integrate .. //depot/projects/smpng/sys/dev/nfe/if_nfe.c#1 branch .. //depot/projects/smpng/sys/dev/nfe/if_nfereg.h#1 branch .. //depot/projects/smpng/sys/dev/nfe/if_nfevar.h#1 branch .. //depot/projects/smpng/sys/dev/re/if_re.c#40 integrate .. //depot/projects/smpng/sys/fs/udf/udf_vfsops.c#28 integrate .. //depot/projects/smpng/sys/geom/geom_gpt.c#25 integrate .. //depot/projects/smpng/sys/i386/conf/GENERIC#78 integrate .. //depot/projects/smpng/sys/i386/conf/NOTES#122 integrate .. //depot/projects/smpng/sys/i386/i386/pmap.c#100 integrate .. //depot/projects/smpng/sys/i386/linux/linux_proto.h#27 integrate .. //depot/projects/smpng/sys/i386/linux/linux_syscall.h#26 integrate .. //depot/projects/smpng/sys/i386/linux/linux_sysent.c#27 integrate .. //depot/projects/smpng/sys/i386/linux/syscalls.master#31 integrate .. //depot/projects/smpng/sys/ia64/conf/GENERIC#51 integrate .. //depot/projects/smpng/sys/ia64/disasm/disasm.h#3 integrate .. //depot/projects/smpng/sys/ia64/disasm/disasm_decode.c#4 integrate .. //depot/projects/smpng/sys/ia64/disasm/disasm_extract.c#3 integrate .. //depot/projects/smpng/sys/ia64/disasm/disasm_format.c#3 integrate .. //depot/projects/smpng/sys/ia64/disasm/disasm_int.h#3 integrate .. //depot/projects/smpng/sys/ia64/ia64/pmap.c#79 integrate .. //depot/projects/smpng/sys/kern/kern_descrip.c#92 integrate .. //depot/projects/smpng/sys/kern/kern_fork.c#99 integrate .. //depot/projects/smpng/sys/kern/kern_ktrace.c#52 integrate .. //depot/projects/smpng/sys/kern/kern_module.c#21 integrate .. //depot/projects/smpng/sys/kern/subr_firmware.c#13 integrate .. //depot/projects/smpng/sys/kern/syscalls.master#74 integrate .. //depot/projects/smpng/sys/kern/uipc_usrreq.c#60 integrate .. //depot/projects/smpng/sys/kern/vfs_init.c#25 integrate .. //depot/projects/smpng/sys/kern/vfs_mount.c#63 integrate .. //depot/projects/smpng/sys/kern/vfs_subr.c#129 integrate .. //depot/projects/smpng/sys/kern/vfs_vnops.c#74 integrate .. //depot/projects/smpng/sys/modules/Makefile#125 integrate .. //depot/projects/smpng/sys/modules/netgraph/Makefile#24 integrate .. //depot/projects/smpng/sys/modules/netgraph/tag/Makefile#1 branch .. //depot/projects/smpng/sys/modules/nfe/Makefile#1 branch .. //depot/projects/smpng/sys/net/if_enc.c#1 branch .. //depot/projects/smpng/sys/net/if_types.h#8 integrate .. //depot/projects/smpng/sys/net80211/ieee80211_freebsd.c#10 integrate .. //depot/projects/smpng/sys/netgraph/ng_tag.c#1 branch .. //depot/projects/smpng/sys/netgraph/ng_tag.h#1 branch .. //depot/projects/smpng/sys/netinet/in_pcb.c#64 integrate .. //depot/projects/smpng/sys/netinet/tcp_input.c#87 integrate .. //depot/projects/smpng/sys/netinet/tcp_syncache.c#51 integrate .. //depot/projects/smpng/sys/netinet/tcp_usrreq.c#50 integrate .. //depot/projects/smpng/sys/netinet/tcp_var.h#44 integrate .. //depot/projects/smpng/sys/netinet6/in6_pcb.c#43 integrate .. //depot/projects/smpng/sys/netinet6/ipsec.c#24 integrate .. //depot/projects/smpng/sys/netinet6/raw_ip6.c#39 integrate .. //depot/projects/smpng/sys/netipsec/ipsec.h#10 integrate .. //depot/projects/smpng/sys/netipsec/ipsec_input.c#11 integrate .. //depot/projects/smpng/sys/netipsec/ipsec_osdep.h#3 integrate .. //depot/projects/smpng/sys/netipsec/ipsec_output.c#11 integrate .. //depot/projects/smpng/sys/netipsec/xform_ipip.c#12 integrate .. //depot/projects/smpng/sys/pc98/conf/GENERIC#63 integrate .. //depot/projects/smpng/sys/pci/agp_i810.c#23 integrate .. //depot/projects/smpng/sys/pci/if_rlreg.h#30 integrate .. //depot/projects/smpng/sys/powerpc/conf/GENERIC#35 integrate .. //depot/projects/smpng/sys/powerpc/powerpc/mmu_oea.c#4 integrate .. //depot/projects/smpng/sys/sparc64/conf/GENERIC#70 integrate .. //depot/projects/smpng/sys/sys/rwlock.h#4 integrate Differences ... ==== //depot/projects/smpng/sys/amd64/amd64/pmap.c#61 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.558 2006/06/20 20:52:10 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.560 2006/06/27 04:28:22 alc Exp $"); /* * Manages physical address maps. @@ -2674,7 +2674,7 @@ PHYS_TO_DMAP(VM_PAGE_TO_PHYS(dstmpde)); pde = &pde[pmap_pde_index(addr)]; if (*pde == 0) { - *pde = srcptepaddr; + *pde = srcptepaddr & ~PG_W; dst_pmap->pm_stats.resident_count += NBPDR / PAGE_SIZE; } else @@ -2697,11 +2697,6 @@ * we only virtual copy managed pages */ if ((ptetemp & PG_MANAGED) != 0) { - /* - * We have to check after allocpte for the - * pte still being around... allocpte can - * block. - */ dstmpte = pmap_allocpte(dst_pmap, addr, M_NOWAIT); if (dstmpte == NULL) @@ -2713,14 +2708,16 @@ pmap_try_insert_pv_entry(dst_pmap, addr, PHYS_TO_VM_PAGE(ptetemp & PG_FRAME))) { /* - * Clear the modified and + * Clear the wired, modified, and * accessed (referenced) bits * during the copy. */ - *dst_pte = ptetemp & ~(PG_M | PG_A); + *dst_pte = ptetemp & ~(PG_W | PG_M | + PG_A); dst_pmap->pm_stats.resident_count++; } else - pmap_unwire_pte_hold(dst_pmap, addr, dstmpte); + pmap_unwire_pte_hold(dst_pmap, addr, + dstmpte); if (dstmpte->wire_count >= srcmpte->wire_count) break; } ==== //depot/projects/smpng/sys/amd64/conf/GENERIC#48 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.460 2006/06/15 19:58:52 netchild Exp $ +# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.462 2006/06/26 22:03:20 babkin Exp $ cpu HAMMER ident GENERIC ==== //depot/projects/smpng/sys/amd64/conf/NOTES#33 (text+ko) ==== @@ -4,7 +4,7 @@ # This file contains machine dependent kernel configuration notes. For # machine independent notes, look in /sys/conf/NOTES. # -# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.56 2006/06/12 20:38:17 jhb Exp $ +# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.57 2006/06/26 23:41:06 obrien Exp $ # # @@ -223,6 +223,7 @@ # (requires miibus) # ipw: Intel PRO/Wireless 2100 IEEE 802.11 adapter # iwi: Intel PRO/Wireless 2200BG/2225BG/2915ABG IEEE 802.11 adapters +# nfe: nVidia nForce MCP on-board Ethernet Networking (BSD open source) # nve: nVidia nForce MCP on-board Ethernet Networking # ral: Ralink Technology IEEE 802.11 wireless adapter # ural: Ralink Technology RT2500USB IEEE 802.11 wireless adapter @@ -233,6 +234,7 @@ options ED_SIC device iwi device ipw +device nfe # nVidia nForce MCP on-board Ethernet Networking device nve # nVidia nForce MCP on-board Ethernet Networking device ral device ural ==== //depot/projects/smpng/sys/amd64/linux32/linux32_proto.h#9 (text+ko) ==== @@ -2,8 +2,8 @@ * System call prototypes. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/amd64/linux32/linux32_proto.h,v 1.13 2006/06/20 20:41:28 netchild Exp $ - * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.11 2006/06/20 20:38:44 netchild Exp + * $FreeBSD: src/sys/amd64/linux32/linux32_proto.h,v 1.15 2006/06/27 14:47:07 jhb Exp $ + * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.13 2006/06/27 14:46:30 jhb Exp */ #ifndef _LINUX_SYSPROTO_H_ ==== //depot/projects/smpng/sys/amd64/linux32/linux32_syscall.h#9 (text+ko) ==== @@ -2,8 +2,8 @@ * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/amd64/linux32/linux32_syscall.h,v 1.13 2006/06/20 20:41:28 netchild Exp $ - * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.11 2006/06/20 20:38:44 netchild Exp + * $FreeBSD: src/sys/amd64/linux32/linux32_syscall.h,v 1.15 2006/06/27 14:47:07 jhb Exp $ + * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.13 2006/06/27 14:46:30 jhb Exp */ #define LINUX_SYS_exit 1 ==== //depot/projects/smpng/sys/amd64/linux32/linux32_sysent.c#9 (text+ko) ==== @@ -2,8 +2,8 @@ * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/amd64/linux32/linux32_sysent.c,v 1.13 2006/06/20 20:41:28 netchild Exp $ - * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.11 2006/06/20 20:38:44 netchild Exp + * $FreeBSD: src/sys/amd64/linux32/linux32_sysent.c,v 1.15 2006/06/27 14:47:07 jhb Exp $ + * created from FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.13 2006/06/27 14:46:30 jhb Exp */ #include @@ -41,8 +41,8 @@ { SYF_MPSAFE | AS(linux_stat_args), (sy_call_t *)linux_stat, AUE_STAT }, /* 18 = linux_stat */ { SYF_MPSAFE | AS(linux_lseek_args), (sy_call_t *)linux_lseek, AUE_LSEEK }, /* 19 = linux_lseek */ { SYF_MPSAFE | 0, (sy_call_t *)linux_getpid, AUE_GETPID }, /* 20 = linux_getpid */ - { AS(linux_mount_args), (sy_call_t *)linux_mount, AUE_MOUNT }, /* 21 = linux_mount */ - { AS(linux_oldumount_args), (sy_call_t *)linux_oldumount, AUE_UMOUNT }, /* 22 = linux_oldumount */ + { SYF_MPSAFE | AS(linux_mount_args), (sy_call_t *)linux_mount, AUE_MOUNT }, /* 21 = linux_mount */ + { SYF_MPSAFE | AS(linux_oldumount_args), (sy_call_t *)linux_oldumount, AUE_UMOUNT }, /* 22 = linux_oldumount */ { SYF_MPSAFE | AS(linux_setuid16_args), (sy_call_t *)linux_setuid16, AUE_SETUID }, /* 23 = linux_setuid16 */ { SYF_MPSAFE | 0, (sy_call_t *)linux_getuid16, AUE_GETUID }, /* 24 = linux_getuid16 */ { SYF_MPSAFE | 0, (sy_call_t *)linux_stime, AUE_SETTIMEOFDAY }, /* 25 = linux_stime */ @@ -65,14 +65,14 @@ { SYF_MPSAFE | AS(linux_pipe_args), (sy_call_t *)linux_pipe, AUE_PIPE }, /* 42 = linux_pipe */ { SYF_MPSAFE | AS(linux_times_args), (sy_call_t *)linux_times, AUE_NULL }, /* 43 = linux_times */ { 0, (sy_call_t *)nosys, AUE_NULL }, /* 44 = prof */ - { AS(linux_brk_args), (sy_call_t *)linux_brk, AUE_NULL }, /* 45 = linux_brk */ + { SYF_MPSAFE | AS(linux_brk_args), (sy_call_t *)linux_brk, AUE_NULL }, /* 45 = linux_brk */ { SYF_MPSAFE | AS(linux_setgid16_args), (sy_call_t *)linux_setgid16, AUE_SETGID }, /* 46 = linux_setgid16 */ { SYF_MPSAFE | 0, (sy_call_t *)linux_getgid16, AUE_GETGID }, /* 47 = linux_getgid16 */ { SYF_MPSAFE | AS(linux_signal_args), (sy_call_t *)linux_signal, AUE_NULL }, /* 48 = linux_signal */ { SYF_MPSAFE | 0, (sy_call_t *)linux_geteuid16, AUE_GETEUID }, /* 49 = linux_geteuid16 */ { SYF_MPSAFE | 0, (sy_call_t *)linux_getegid16, AUE_GETEGID }, /* 50 = linux_getegid16 */ { SYF_MPSAFE | AS(acct_args), (sy_call_t *)acct, AUE_ACCT }, /* 51 = acct */ - { AS(linux_umount_args), (sy_call_t *)linux_umount, AUE_UMOUNT }, /* 52 = linux_umount */ + { SYF_MPSAFE | AS(linux_umount_args), (sy_call_t *)linux_umount, AUE_UMOUNT }, /* 52 = linux_umount */ { 0, (sy_call_t *)nosys, AUE_NULL }, /* 53 = lock */ { AS(linux_ioctl_args), (sy_call_t *)linux_ioctl, AUE_IOCTL }, /* 54 = linux_ioctl */ { SYF_MPSAFE | AS(linux_fcntl_args), (sy_call_t *)linux_fcntl, AUE_FCNTL }, /* 55 = linux_fcntl */ ==== //depot/projects/smpng/sys/amd64/linux32/syscalls.master#13 (text+ko) ==== @@ -1,4 +1,4 @@ - $FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.11 2006/06/20 20:38:44 netchild Exp $ + $FreeBSD: src/sys/amd64/linux32/syscalls.master,v 1.13 2006/06/27 14:46:30 jhb Exp $ ; @(#)syscalls.master 8.1 (Berkeley) 7/19/93 ; System call name/number master file (or rather, slave, from LINUX). ==== //depot/projects/smpng/sys/arm/arm/elf_trampoline.c#9 (text+ko) ==== @@ -23,7 +23,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/elf_trampoline.c,v 1.9 2006/06/22 22:33:21 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/elf_trampoline.c,v 1.11 2006/06/23 22:45:35 cognet Exp $"); #include #include #include @@ -131,6 +131,8 @@ } } +static void arm9_setup(void); + void _start(void) { @@ -348,8 +350,8 @@ int d) { Elf32_Ehdr *eh; - Elf32_Phdr phdr[512] /* XXX */, *php; - Elf32_Shdr shdr[512] /* XXX */; + Elf32_Phdr phdr[64] /* XXX */, *php; + Elf32_Shdr shdr[64] /* XXX */; int i,j; void *entry_point; int symtabindex = -1; ==== //depot/projects/smpng/sys/arm/at91/files.at91#3 (text) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/arm/at91/files.at91,v 1.3 2006/03/24 07:36:23 imp Exp $ +# $FreeBSD: src/sys/arm/at91/files.at91,v 1.5 2006/06/23 23:07:11 cognet Exp $ arm/arm/cpufunc_asm_arm9.S standard arm/arm/irq_dispatch.S standard arm/at91/at91.c standard ==== //depot/projects/smpng/sys/cam/cam_xpt.c#36 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.160 2006/06/05 22:22:14 mjacob Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.162 2006/06/26 05:41:11 mjacob Exp $"); #include #include @@ -387,6 +387,11 @@ /*quirks*/0, /*mintags*/0, /*maxtags*/0 }, { + /* Does not support other than LUN 0 */ + { T_DIRECT, SIP_MEDIA_FIXED, "VMware*", "*", "*" }, + CAM_QUIRK_NOLUNS, /*mintags*/0, /*maxtags*/0 + }, + { /* * Broken tagged queuing drive. * Submitted by: ==== //depot/projects/smpng/sys/compat/freebsd32/freebsd32_proto.h#30 (text+ko) ==== @@ -2,8 +2,8 @@ * System call prototypes. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.54 2006/03/30 07:43:01 ps Exp $ - * created from FreeBSD + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.56 2006/06/27 14:47:07 jhb Exp $ + * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.67 2006/06/27 14:46:30 jhb Exp */ #ifndef _FREEBSD32_SYSPROTO_H_ ==== //depot/projects/smpng/sys/compat/freebsd32/freebsd32_syscall.h#30 (text+ko) ==== @@ -2,8 +2,8 @@ * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.52 2006/03/30 07:43:01 ps Exp $ - * created from FreeBSD + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.54 2006/06/27 14:47:07 jhb Exp $ + * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.67 2006/06/27 14:46:30 jhb Exp */ #define FREEBSD32_SYS_syscall 0 ==== //depot/projects/smpng/sys/compat/freebsd32/freebsd32_syscalls.c#30 (text+ko) ==== @@ -2,8 +2,8 @@ * System call names. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.43 2006/03/30 07:43:01 ps Exp $ - * created from FreeBSD + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.45 2006/06/27 14:47:08 jhb Exp $ + * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.67 2006/06/27 14:46:30 jhb Exp */ const char *freebsd32_syscallnames[] = { ==== //depot/projects/smpng/sys/compat/freebsd32/freebsd32_sysent.c#30 (text+ko) ==== @@ -2,8 +2,8 @@ * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.53 2006/03/30 07:43:01 ps Exp $ - * created from FreeBSD + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.55 2006/06/27 14:47:08 jhb Exp $ + * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.67 2006/06/27 14:46:30 jhb Exp */ #include "opt_compat.h" @@ -53,8 +53,8 @@ { compat4(SYF_MPSAFE | AS(freebsd4_freebsd32_getfsstat_args),freebsd32_getfsstat), AUE_GETFSSTAT }, /* 18 = old freebsd32_getfsstat */ { 0, (sy_call_t *)nosys, AUE_NULL }, /* 19 = obsolete olseek */ { SYF_MPSAFE | 0, (sy_call_t *)getpid, AUE_GETPID }, /* 20 = getpid */ - { AS(mount_args), (sy_call_t *)mount, AUE_MOUNT }, /* 21 = mount */ - { AS(unmount_args), (sy_call_t *)unmount, AUE_UMOUNT }, /* 22 = unmount */ + { SYF_MPSAFE | AS(mount_args), (sy_call_t *)mount, AUE_MOUNT }, /* 21 = mount */ + { SYF_MPSAFE | AS(unmount_args), (sy_call_t *)unmount, AUE_UMOUNT }, /* 22 = unmount */ { SYF_MPSAFE | AS(setuid_args), (sy_call_t *)setuid, AUE_SETUID }, /* 23 = setuid */ { SYF_MPSAFE | 0, (sy_call_t *)getuid, AUE_GETUID }, /* 24 = getuid */ { SYF_MPSAFE | 0, (sy_call_t *)geteuid, AUE_GETEUID }, /* 25 = geteuid */ @@ -168,9 +168,9 @@ { SYF_MPSAFE | AS(sendto_args), (sy_call_t *)sendto, AUE_SENDTO }, /* 133 = sendto */ { SYF_MPSAFE | AS(shutdown_args), (sy_call_t *)shutdown, AUE_SHUTDOWN }, /* 134 = shutdown */ { SYF_MPSAFE | AS(socketpair_args), (sy_call_t *)socketpair, AUE_SOCKETPAIR }, /* 135 = socketpair */ - { AS(mkdir_args), (sy_call_t *)mkdir, AUE_MKDIR }, /* 136 = mkdir */ - { AS(rmdir_args), (sy_call_t *)rmdir, AUE_RMDIR }, /* 137 = rmdir */ - { AS(freebsd32_utimes_args), (sy_call_t *)freebsd32_utimes, AUE_UTIMES }, /* 138 = freebsd32_utimes */ + { SYF_MPSAFE | AS(mkdir_args), (sy_call_t *)mkdir, AUE_MKDIR }, /* 136 = mkdir */ + { SYF_MPSAFE | AS(rmdir_args), (sy_call_t *)rmdir, AUE_RMDIR }, /* 137 = rmdir */ + { SYF_MPSAFE | AS(freebsd32_utimes_args), (sy_call_t *)freebsd32_utimes, AUE_UTIMES }, /* 138 = freebsd32_utimes */ { 0, (sy_call_t *)nosys, AUE_NULL }, /* 139 = obsolete 4.2 sigreturn */ { SYF_MPSAFE | AS(freebsd32_adjtime_args), (sy_call_t *)freebsd32_adjtime, AUE_ADJTIME }, /* 140 = freebsd32_adjtime */ { 0, (sy_call_t *)nosys, AUE_NULL }, /* 141 = obsolete ogetpeername */ @@ -387,10 +387,10 @@ { SYF_MPSAFE | AS(__acl_delete_fd_args), (sy_call_t *)__acl_delete_fd, AUE_NULL }, /* 352 = __acl_delete_fd */ { SYF_MPSAFE | AS(__acl_aclcheck_file_args), (sy_call_t *)__acl_aclcheck_file, AUE_NULL }, /* 353 = __acl_aclcheck_file */ { SYF_MPSAFE | AS(__acl_aclcheck_fd_args), (sy_call_t *)__acl_aclcheck_fd, AUE_NULL }, /* 354 = __acl_aclcheck_fd */ - { AS(extattrctl_args), (sy_call_t *)extattrctl, AUE_NULL }, /* 355 = extattrctl */ - { AS(extattr_set_file_args), (sy_call_t *)extattr_set_file, AUE_NULL }, /* 356 = extattr_set_file */ - { AS(extattr_get_file_args), (sy_call_t *)extattr_get_file, AUE_NULL }, /* 357 = extattr_get_file */ - { AS(extattr_delete_file_args), (sy_call_t *)extattr_delete_file, AUE_NULL }, /* 358 = extattr_delete_file */ + { SYF_MPSAFE | AS(extattrctl_args), (sy_call_t *)extattrctl, AUE_NULL }, /* 355 = extattrctl */ + { SYF_MPSAFE | AS(extattr_set_file_args), (sy_call_t *)extattr_set_file, AUE_NULL }, /* 356 = extattr_set_file */ + { SYF_MPSAFE | AS(extattr_get_file_args), (sy_call_t *)extattr_get_file, AUE_NULL }, /* 357 = extattr_get_file */ + { SYF_MPSAFE | AS(extattr_delete_file_args), (sy_call_t *)extattr_delete_file, AUE_NULL }, /* 358 = extattr_delete_file */ { 0, (sy_call_t *)nosys, AUE_NULL }, /* 359 = aio_waitcomplete */ { SYF_MPSAFE | AS(getresuid_args), (sy_call_t *)getresuid, AUE_NULL }, /* 360 = getresuid */ { SYF_MPSAFE | AS(getresgid_args), (sy_call_t *)getresgid, AUE_NULL }, /* 361 = getresgid */ @@ -403,14 +403,14 @@ { 0, (sy_call_t *)nosys, AUE_NULL }, /* 368 = __cap_set_fd */ { 0, (sy_call_t *)nosys, AUE_NULL }, /* 369 = __cap_set_file */ { 0, (sy_call_t *)nosys, AUE_NULL }, /* 370 = lkmressys */ - { AS(extattr_set_fd_args), (sy_call_t *)extattr_set_fd, AUE_NULL }, /* 371 = extattr_set_fd */ - { AS(extattr_get_fd_args), (sy_call_t *)extattr_get_fd, AUE_NULL }, /* 372 = extattr_get_fd */ - { AS(extattr_delete_fd_args), (sy_call_t *)extattr_delete_fd, AUE_NULL }, /* 373 = extattr_delete_fd */ + { SYF_MPSAFE | AS(extattr_set_fd_args), (sy_call_t *)extattr_set_fd, AUE_NULL }, /* 371 = extattr_set_fd */ + { SYF_MPSAFE | AS(extattr_get_fd_args), (sy_call_t *)extattr_get_fd, AUE_NULL }, /* 372 = extattr_get_fd */ + { SYF_MPSAFE | AS(extattr_delete_fd_args), (sy_call_t *)extattr_delete_fd, AUE_NULL }, /* 373 = extattr_delete_fd */ { SYF_MPSAFE | AS(__setugid_args), (sy_call_t *)__setugid, AUE_NULL }, /* 374 = __setugid */ { 0, (sy_call_t *)nosys, AUE_NULL }, /* 375 = nfsclnt */ { SYF_MPSAFE | AS(eaccess_args), (sy_call_t *)eaccess, AUE_NULL }, /* 376 = eaccess */ { 0, (sy_call_t *)nosys, AUE_NULL }, /* 377 = afs_syscall */ - { AS(nmount_args), (sy_call_t *)nmount, AUE_NULL }, /* 378 = nmount */ + { SYF_MPSAFE | AS(nmount_args), (sy_call_t *)nmount, AUE_NULL }, /* 378 = nmount */ { SYF_MPSAFE | 0, (sy_call_t *)kse_exit, AUE_NULL }, /* 379 = kse_exit */ { SYF_MPSAFE | AS(kse_wakeup_args), (sy_call_t *)kse_wakeup, AUE_NULL }, /* 380 = kse_wakeup */ { SYF_MPSAFE | AS(kse_create_args), (sy_call_t *)kse_create, AUE_NULL }, /* 381 = kse_create */ ==== //depot/projects/smpng/sys/compat/freebsd32/syscalls.master#33 (text+ko) ==== @@ -1,4 +1,4 @@ - $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.65 2006/03/30 07:42:32 ps Exp $ + $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.67 2006/06/27 14:46:30 jhb Exp $ ; from: @(#)syscalls.master 8.2 (Berkeley) 1/13/94 ; from: src/sys/kern/syscalls.master 1.107 ; ==== //depot/projects/smpng/sys/compat/linux/linux_misc.c#65 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.178 2006/05/10 20:38:16 netchild Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.179 2006/06/23 18:49:38 netchild Exp $"); #include "opt_compat.h" #include "opt_mac.h" @@ -661,20 +661,22 @@ printf(ARGS(times, "*")); #endif - p = td->td_proc; - PROC_LOCK(p); - calcru(p, &utime, &stime); - calccru(p, &cutime, &cstime); - PROC_UNLOCK(p); + if (args->buf != NULL) { + p = td->td_proc; + PROC_LOCK(p); + calcru(p, &utime, &stime); + calccru(p, &cutime, &cstime); + PROC_UNLOCK(p); - tms.tms_utime = CONVTCK(utime); - tms.tms_stime = CONVTCK(stime); + tms.tms_utime = CONVTCK(utime); + tms.tms_stime = CONVTCK(stime); - tms.tms_cutime = CONVTCK(cutime); - tms.tms_cstime = CONVTCK(cstime); + tms.tms_cutime = CONVTCK(cutime); + tms.tms_cstime = CONVTCK(cstime); - if ((error = copyout(&tms, args->buf, sizeof(tms)))) - return error; + if ((error = copyout(&tms, args->buf, sizeof(tms)))) + return error; + } microuptime(&tv); td->td_retval[0] = (int)CONVTCK(tv); ==== //depot/projects/smpng/sys/compat/svr4/svr4_misc.c#47 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_misc.c,v 1.84 2006/02/06 22:06:53 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_misc.c,v 1.85 2006/06/26 18:36:57 jhb Exp $"); #include "opt_mac.h" ==== //depot/projects/smpng/sys/compat/svr4/svr4_proto.h#11 (text+ko) ==== @@ -2,8 +2,8 @@ * System call prototypes. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/svr4/svr4_proto.h,v 1.19 2005/07/13 20:35:08 jhb Exp $ - * created from FreeBSD: src/sys/compat/svr4/syscalls.master,v 1.19 2005/07/13 20:32:42 jhb Exp + * $FreeBSD: src/sys/compat/svr4/svr4_proto.h,v 1.20 2006/06/26 18:37:36 jhb Exp $ + * created from FreeBSD: src/sys/compat/svr4/syscalls.master,v 1.20 2006/06/26 18:36:57 jhb Exp */ #ifndef _SVR4_SYSPROTO_H_ ==== //depot/projects/smpng/sys/compat/svr4/svr4_syscall.h#10 (text+ko) ==== @@ -2,8 +2,8 @@ * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/svr4/svr4_syscall.h,v 1.17 2005/07/13 20:35:08 jhb Exp $ - * created from FreeBSD: src/sys/compat/svr4/syscalls.master,v 1.19 2005/07/13 20:32:42 jhb Exp + * $FreeBSD: src/sys/compat/svr4/svr4_syscall.h,v 1.18 2006/06/26 18:37:36 jhb Exp $ + * created from FreeBSD: src/sys/compat/svr4/syscalls.master,v 1.20 2006/06/26 18:36:57 jhb Exp */ #define SVR4_SYS_exit 1 ==== //depot/projects/smpng/sys/compat/svr4/svr4_syscallnames.c#10 (text+ko) ==== @@ -2,8 +2,8 @@ * System call names. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/svr4/svr4_syscallnames.c,v 1.17 2005/07/13 20:35:08 jhb Exp $ - * created from FreeBSD: src/sys/compat/svr4/syscalls.master,v 1.19 2005/07/13 20:32:42 jhb Exp + * $FreeBSD: src/sys/compat/svr4/svr4_syscallnames.c,v 1.18 2006/06/26 18:37:36 jhb Exp $ + * created from FreeBSD: src/sys/compat/svr4/syscalls.master,v 1.20 2006/06/26 18:36:57 jhb Exp */ const char *svr4_syscallnames[] = { ==== //depot/projects/smpng/sys/compat/svr4/svr4_sysent.c#10 (text+ko) ==== @@ -2,8 +2,8 @@ * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/svr4/svr4_sysent.c,v 1.18 2005/07/13 20:35:08 jhb Exp $ - * created from FreeBSD: src/sys/compat/svr4/syscalls.master,v 1.19 2005/07/13 20:32:42 jhb Exp + * $FreeBSD: src/sys/compat/svr4/svr4_sysent.c,v 1.19 2006/06/26 18:37:36 jhb Exp $ + * created from FreeBSD: src/sys/compat/svr4/syscalls.master,v 1.20 2006/06/26 18:36:57 jhb Exp */ #include @@ -37,7 +37,7 @@ { SYF_MPSAFE | AS(svr4_sys_mknod_args), (sy_call_t *)svr4_sys_mknod, AUE_NULL }, /* 14 = svr4_sys_mknod */ { SYF_MPSAFE | AS(chmod_args), (sy_call_t *)chmod, AUE_NULL }, /* 15 = chmod */ { SYF_MPSAFE | AS(chown_args), (sy_call_t *)chown, AUE_NULL }, /* 16 = chown */ - { AS(svr4_sys_break_args), (sy_call_t *)svr4_sys_break, AUE_NULL }, /* 17 = svr4_sys_break */ + { SYF_MPSAFE | AS(svr4_sys_break_args), (sy_call_t *)svr4_sys_break, AUE_NULL }, /* 17 = svr4_sys_break */ { SYF_MPSAFE | AS(svr4_sys_stat_args), (sy_call_t *)svr4_sys_stat, AUE_NULL }, /* 18 = svr4_sys_stat */ { SYF_MPSAFE | AS(lseek_args), (sy_call_t *)lseek, AUE_NULL }, /* 19 = lseek */ { SYF_MPSAFE | 0, (sy_call_t *)getpid, AUE_NULL }, /* 20 = getpid */ ==== //depot/projects/smpng/sys/compat/svr4/syscalls.master#14 (text+ko) ==== @@ -1,4 +1,4 @@ - $FreeBSD: src/sys/compat/svr4/syscalls.master,v 1.19 2005/07/13 20:32:42 jhb Exp $ + $FreeBSD: src/sys/compat/svr4/syscalls.master,v 1.20 2006/06/26 18:36:57 jhb Exp $ ; from: @(#)syscalls.master 8.1 (Berkeley) 7/19/93 ; ; System call name/number master file (or rather, slave, from SVR4). ==== //depot/projects/smpng/sys/conf/NOTES#122 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1367 2006/06/19 22:11:44 jhb Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1370 2006/06/27 12:45:27 glebius Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # @@ -567,6 +567,7 @@ options NETGRAPH_SOCKET options NETGRAPH_SPLIT options NETGRAPH_SPPP +options NETGRAPH_TAG options NETGRAPH_TCPMSS options NETGRAPH_TEE options NETGRAPH_TTY ==== //depot/projects/smpng/sys/conf/files#178 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1125 2006/06/14 03:03:08 marcel Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1127 2006/06/27 12:45:27 glebius Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -1459,6 +1459,7 @@ net/if_clone.c standard net/if_disc.c optional disc net/if_ef.c optional ef +net/if_enc.c optional enc net/if_ethersubr.c optional ether net/if_faith.c optional faith net/if_fddisubr.c optional fddi @@ -1661,6 +1662,7 @@ netgraph/ng_socket.c optional netgraph_socket netgraph/ng_split.c optional netgraph_split netgraph/ng_sppp.c optional netgraph_sppp +netgraph/ng_tag.c optional netgraph_tag netgraph/ng_tcpmss.c optional netgraph_tcpmss netgraph/ng_tee.c optional netgraph_tee netgraph/ng_tty.c optional netgraph_tty ==== //depot/projects/smpng/sys/conf/files.amd64#44 (text+ko) ==== @@ -1,7 +1,7 @@ # This file tells config what files go into building a kernel, # files marked standard are always included. # -# $FreeBSD: src/sys/conf/files.amd64,v 1.89 2006/05/18 23:30:47 ambrisko Exp $ +# $FreeBSD: src/sys/conf/files.amd64,v 1.90 2006/06/26 23:41:06 obrien Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -177,6 +177,7 @@ dev/hwpmc/hwpmc_x86.c optional hwpmc dev/kbd/kbd.c optional atkbd | sc | ukbd dev/mem/memutil.c optional mem +dev/nfe/if_nfe.c optional nfe pci dev/nve/if_nve.c optional nve pci dev/rr232x/os_bsd.c optional rr232x dev/rr232x/osm_bsd.c optional rr232x ==== //depot/projects/smpng/sys/conf/files.i386#98 (text+ko) ==== @@ -1,7 +1,7 @@ # This file tells config what files go into building a kernel, # files marked standard are always included. # -# $FreeBSD: src/sys/conf/files.i386,v 1.561 2006/05/17 21:25:22 marius Exp $ +# $FreeBSD: src/sys/conf/files.i386,v 1.562 2006/06/26 23:41:07 obrien Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -198,6 +198,7 @@ dev/mem/memutil.c optional mem dev/mse/mse.c optional mse dev/mse/mse_isa.c optional mse isa +dev/nfe/if_nfe.c optional nfe pci dev/nve/if_nve.c optional nve pci dev/pcf/pcf_isa.c optional pcf dev/random/nehemiah.c optional random ==== //depot/projects/smpng/sys/conf/options#122 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.546 2006/06/13 13:12:55 davidxu Exp $ +# $FreeBSD: src/sys/conf/options,v 1.550 2006/06/27 12:45:27 glebius Exp $ # # On the handling of kernel options # @@ -340,6 +340,7 @@ BOOTP_NFSV3 opt_bootp.h BOOTP_WIRED_TO opt_bootp.h DEVICE_POLLING +DEV_ENC opt_enc.h DEV_PF opt_pf.h DEV_PFLOG opt_pf.h DEV_PFSYNC opt_pf.h @@ -438,6 +439,7 @@ NETGRAPH_SOCKET opt_netgraph.h NETGRAPH_SPLIT opt_netgraph.h NETGRAPH_SPPP opt_netgraph.h +NETGRAPH_TAG opt_netgraph.h NETGRAPH_TCPMSS opt_netgraph.h NETGRAPH_TEE opt_netgraph.h NETGRAPH_TTY opt_netgraph.h ==== //depot/projects/smpng/sys/dev/ath/if_ath.c#41 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting + * Copyright (c) 2002-2006 Sam Leffler, Errno Consulting * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -35,7 +35,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.147 2006/06/05 17:51:20 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.149 2006/06/26 04:31:36 sam Exp $"); /* * Driver for the Atheros Wireless LAN controller. @@ -150,6 +150,7 @@ int subtype, int rssi, u_int32_t rstamp); static void ath_setdefantenna(struct ath_softc *, u_int); static void ath_rx_proc(void *, int); +static void ath_txq_init(struct ath_softc *sc, struct ath_txq *, int); static struct ath_txq *ath_txq_setup(struct ath_softc*, int qtype, int subtype); static int ath_tx_setup(struct ath_softc *, int, int); static int ath_wme_update(struct ieee80211com *); @@ -422,6 +423,7 @@ error = EIO; goto bad2; } + ath_txq_init(sc, &sc->sc_mcastq, -1); /* NB: s/w q, qnum not used */ /* NB: insure BK queue is the lowest priority h/w queue */ if (!ath_tx_setup(sc, WME_AC_BK, HAL_WME_AC_BK)) { if_printf(ifp, "unable to setup xmit queue for %s traffic!\n", @@ -1697,6 +1699,8 @@ * - when operating in station mode for collecting rssi data when * the station is otherwise quiet, or * - when scanning + * o accept control frames: + * - when in monitor mode */ static u_int32_t ath_calcrxfilter(struct ath_softc *sc, enum ieee80211_state state) @@ -1718,6 +1722,8 @@ ic->ic_opmode == IEEE80211_M_IBSS || state == IEEE80211_S_SCAN) rfilt |= HAL_RX_FILTER_BEACON; + if (ic->ic_opmode == IEEE80211_M_MONITOR) + rfilt |= HAL_RX_FILTER_CONTROL; return rfilt; #undef RX_FILTER_PRESERVE } @@ -1988,6 +1994,20 @@ } /* + * Append the contents of src to dst; both queues + * are assumed to be locked. + */ +static void +ath_txqmove(struct ath_txq *dst, struct ath_txq *src) +{ + STAILQ_CONCAT(&dst->axq_q, &src->axq_q); + dst->axq_link = src->axq_link; + src->axq_link = NULL; + dst->axq_depth += src->axq_depth; + src->axq_depth = 0; +} + +/* * Transmit a beacon frame at SWBA. Dynamic updates to the * frame contents are done as needed and the slot time is * also adjusted based on current state. @@ -2000,8 +2020,9 @@ struct ieee80211_node *ni = bf->bf_node; struct ieee80211com *ic = ni->ni_ic; struct ath_hal *ah = sc->sc_ah; + struct ath_txq *cabq = sc->sc_cabq; struct mbuf *m; - int ncabq, error, otherant; + int ncabq, nmcastq, error, otherant; DPRINTF(sc, ATH_DEBUG_BEACON_PROC, "%s: pending %u\n", __func__, pending); @@ -2043,8 +2064,9 @@ * of the TIM bitmap). */ m = bf->bf_m; - ncabq = sc->sc_cabq->axq_depth; - if (ieee80211_beacon_update(ic, bf->bf_node, &sc->sc_boff, m, ncabq)) { + nmcastq = sc->sc_mcastq.axq_depth; + ncabq = ath_hal_numtxpending(ah, cabq->axq_qnum); + if (ieee80211_beacon_update(ic, bf->bf_node, &sc->sc_boff, m, ncabq+nmcastq)) { /* XXX too conservative? */ bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); error = bus_dmamap_load_mbuf_sg(sc->sc_dmat, bf->bf_dmamap, m, @@ -2057,6 +2079,18 @@ return; } } + if (ncabq && (sc->sc_boff.bo_tim[4] & 1)) { + /* + * CABQ traffic from the previous DTIM is still pending. + * This is ok for now but when there are multiple vap's + * and we are using staggered beacons we'll want to drain + * the cabq before loading frames for the different vap. + */ + DPRINTF(sc, ATH_DEBUG_BEACON, + "%s: cabq did not drain, mcastq %u cabq %u/%u\n", + __func__, nmcastq, ncabq, cabq->axq_depth); + sc->sc_stats.ast_cabq_busy++; + } /* * Handle slot time change when a non-ERP station joins/leaves @@ -2103,8 +2137,30 @@ * Enable the CAB queue before the beacon queue to * insure cab frames are triggered by this beacon. */ - if (sc->sc_boff.bo_tim[4] & 1) /* NB: only at DTIM */ - ath_hal_txstart(ah, sc->sc_cabq->axq_qnum); + if (sc->sc_boff.bo_tim[4] & 1) { /* NB: only at DTIM */ + ATH_TXQ_LOCK(cabq); + ATH_TXQ_LOCK(&sc->sc_mcastq); + if (nmcastq) { + struct ath_buf *bfm; + + /* + * Move frames from the s/w mcast q to the h/w cab q. + */ + bfm = STAILQ_FIRST(&sc->sc_mcastq.axq_q); + if (cabq->axq_link != NULL) { + *cabq->axq_link = bfm->bf_daddr; + } else + ath_hal_puttxbuf(ah, cabq->axq_qnum, + bfm->bf_daddr); + ath_txqmove(cabq, &sc->sc_mcastq); + + sc->sc_stats.ast_cabq_xmit += nmcastq; + } + /* NB: gated by beacon so safe to start here */ + ath_hal_txstart(ah, cabq->axq_qnum); + ATH_TXQ_UNLOCK(cabq); + ATH_TXQ_UNLOCK(&sc->sc_mcastq); + } ath_hal_puttxbuf(ah, sc->sc_bhalq, bf->bf_daddr); ath_hal_txstart(ah, sc->sc_bhalq); DPRINTF(sc, ATH_DEBUG_BEACON_PROC, @@ -3031,6 +3087,17 @@ #undef PA2DESC } +static void +ath_txq_init(struct ath_softc *sc, struct ath_txq *txq, int qnum) +{ + txq->axq_qnum = qnum; + txq->axq_depth = 0; + txq->axq_intrcnt = 0; + txq->axq_link = NULL; + STAILQ_INIT(&txq->axq_q); + ATH_TXQ_LOCK_INIT(sc, txq); +} + /* * Setup a h/w transmit queue. */ @@ -3076,14 +3143,7 @@ return NULL; } if (!ATH_TXQ_SETUP(sc, qnum)) { - struct ath_txq *txq = &sc->sc_txq[qnum]; - - txq->axq_qnum = qnum; - txq->axq_depth = 0; - txq->axq_intrcnt = 0; - txq->axq_link = NULL; - STAILQ_INIT(&txq->axq_q); - ATH_TXQ_LOCK_INIT(sc, txq); + ath_txq_init(sc, &sc->sc_txq[qnum], qnum); sc->sc_txqsetup |= 1<sc_txq[qnum]; @@ -3190,6 +3250,7 @@ for (i = 0; i < HAL_NUM_TX_QUEUES; i++) if (ATH_TXQ_SETUP(sc, i)) ath_tx_cleanupq(sc, &sc->sc_txq[i]); + ATH_TXQ_LOCK_DESTROY(&sc->sc_mcastq); } /* @@ -3529,11 +3590,12 @@ /* * When servicing one or more stations in power-save mode - * multicast frames must be buffered until after the beacon. - * We use the CAB queue for that. + * (or) if there is some mcast data waiting on the mcast + * queue (to prevent out of order delivery) multicast + * frames must be buffered until after the beacon. */ - if (ismcast && ic->ic_ps_sta) { - txq = sc->sc_cabq; + if (ismcast && (ic->ic_ps_sta || sc->sc_mcastq.axq_depth)) { + txq = &sc->sc_mcastq; /* XXX? more bit in 802.11 frame header */ } @@ -3722,31 +3784,36 @@ ds->ds_ctl0, ds->ds_ctl1, ds->ds_hw[0], ds->ds_hw[1]); } /* - * Insert the frame on the outbound list and - * pass it on to the hardware. + * Insert the frame on the outbound list and pass it on + * to the hardware. Multicast frames buffered for power + * save stations and transmit from the CAB queue are stored + * on a s/w only queue and loaded on to the CAB queue in + * the SWBA handler since frames only go out on DTIM and + * to avoid possible races. */ ATH_TXQ_LOCK(txq); ATH_TXQ_INSERT_TAIL(txq, bf, bf_list); - if (txq->axq_link == NULL) { - ath_hal_puttxbuf(ah, txq->axq_qnum, bf->bf_daddr); - DPRINTF(sc, ATH_DEBUG_XMIT, - "%s: TXDP[%u] = %p (%p) depth %d\n", __func__, - txq->axq_qnum, (caddr_t)bf->bf_daddr, bf->bf_desc, - txq->axq_depth); + if (txq != &sc->sc_mcastq) { + if (txq->axq_link == NULL) { + ath_hal_puttxbuf(ah, txq->axq_qnum, bf->bf_daddr); + DPRINTF(sc, ATH_DEBUG_XMIT, + "%s: TXDP[%u] = %p (%p) depth %d\n", __func__, + txq->axq_qnum, (caddr_t)bf->bf_daddr, bf->bf_desc, + txq->axq_depth); + } else { + *txq->axq_link = bf->bf_daddr; + DPRINTF(sc, ATH_DEBUG_XMIT, + "%s: link[%u](%p)=%p (%p) depth %d\n", __func__, + txq->axq_qnum, txq->axq_link, + (caddr_t)bf->bf_daddr, bf->bf_desc, txq->axq_depth); + } + txq->axq_link = &bf->bf_desc[bf->bf_nseg - 1].ds_link; + ath_hal_txstart(ah, txq->axq_qnum); } else { - *txq->axq_link = bf->bf_daddr; - DPRINTF(sc, ATH_DEBUG_XMIT, - "%s: link[%u](%p)=%p (%p) depth %d\n", __func__, - txq->axq_qnum, txq->axq_link, - (caddr_t)bf->bf_daddr, bf->bf_desc, txq->axq_depth); + if (txq->axq_link != NULL) + *txq->axq_link = bf->bf_daddr; + txq->axq_link = &bf->bf_desc[bf->bf_nseg - 1].ds_link; } - txq->axq_link = &bf->bf_desc[bf->bf_nseg - 1].ds_link; - /* - * The CAB queue is started from the SWBA handler since - * frames only go out on DTIM and to avoid possible races. - */ - if (txq != sc->sc_cabq) - ath_hal_txstart(ah, txq->axq_qnum); ATH_TXQ_UNLOCK(txq); return 0; @@ -4044,6 +4111,7 @@ for (i = 0; i < HAL_NUM_TX_QUEUES; i++) if (ATH_TXQ_SETUP(sc, i)) ath_tx_draintxq(sc, &sc->sc_txq[i]); + ath_tx_draintxq(sc, &sc->sc_mcastq); #ifdef ATH_DEBUG if (sc->sc_debug & ATH_DEBUG_RESET) { struct ath_buf *bf = STAILQ_FIRST(&sc->sc_bbuf); ==== //depot/projects/smpng/sys/dev/ath/if_athioctl.h#13 (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 DAMAGES. * - * $FreeBSD: src/sys/dev/ath/if_athioctl.h,v 1.14 2006/02/09 22:37:33 sam Exp $ + * $FreeBSD: src/sys/dev/ath/if_athioctl.h,v 1.15 2006/06/23 18:48:08 sam Exp $ */ /* @@ -106,7 +106,9 @@ u_int32_t ast_ant_txswitch;/* tx antenna switches */ u_int32_t ast_ant_rx[8]; /* rx frames with antenna */ u_int32_t ast_ant_tx[8]; /* tx frames with antenna */ - u_int32_t ast_pad[32]; + u_int32_t ast_cabq_xmit; /* cabq frames transmitted */ + u_int32_t ast_cabq_busy; /* cabq found busy */ + u_int32_t ast_pad[30]; }; #define SIOCGATHSTATS _IOWR('i', 137, struct ifreq) ==== //depot/projects/smpng/sys/dev/ath/if_athvar.h#25 (text+ko) ==== >>> TRUNCATED FOR MAIL (1000 lines) <<<