PERFORCE change 100148 for review

John Baldwin jhb at FreeBSD.org
Tue Jun 27 16:45:57 UTC 2006


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

Change 100148 by jhb at 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 <sys/cdefs.h>
-__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 <bsm/audit_kevents.h>
@@ -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 <sys/cdefs.h>
-__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 <machine/asm.h>
 #include <sys/types.h>
 #include <sys/elf32.h>
@@ -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 <sys/cdefs.h>
-__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 <sys/param.h>
 #include <sys/bus.h>
@@ -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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <bsm/audit_kevents.h>
@@ -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 <sys/cdefs.h>
-__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<<qnum;
 	}
 	return &sc->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) <<<


More information about the p4-projects mailing list