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