PERFORCE change 103315 for review
Roman Divacky
rdivacky at FreeBSD.org
Sun Aug 6 09:18:16 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=103315
Change 103315 by rdivacky at rdivacky_witten on 2006/08/06 09:17:48
IFC
Affected files ...
.. //depot/projects/soc2006/rdivacky_linuxolator/amd64/amd64/identcpu.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/amd64/amd64/pmap.c#6 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/amd64/include/pmap.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/arm/arm/pmap.c#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/boot/i386/loader/main.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/boot/pc98/loader/main.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/compat/svr4/svr4_sockio.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/compat/svr4/svr4_stream.c#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/conf/files.powerpc#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/conf/options#7 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/ddb/db_ps.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/ata/ata-chipset.c#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/ata/ata-pci.h#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/ath/if_ath.c#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/ath/if_athioctl.h#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/bktr/CHANGELOG.TXT#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/dc/dcphy.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/dc/pnphy.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/dpt/dpt_scsi.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/em/README#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/em/if_em.c#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/em/if_em.h#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/em/if_em_hw.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/em/if_em_hw.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/em/if_em_osdep.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/fe/if_fe.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/isp/isp.c#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/isp/isp_freebsd.c#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/isp/isp_ioctl.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/isp/isp_library.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/isp/isp_target.c#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/isp/isp_target.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/isp/isp_tpublic.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/ixgb/if_ixgb.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/mxge/if_mxge.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/patm/if_patm_intr.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/pci/pcivar.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/powermac_nvram/powermac_nvram.c#1 branch
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/powermac_nvram/powermac_nvramvar.h#1 branch
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/ral/rt2560.c#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/re/if_re.c#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/sk/if_sk.c#6 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/sym/sym_fw1.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/sym/sym_fw2.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/ubsec/ubsec.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/usb/if_ural.c#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/wi/if_wavelan_ieee.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/wi/if_wi.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/dev/wi/if_wireg.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/fs/hpfs/hpfs.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/fs/msdosfs/msdosfs_vfsops.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/geom/bde/g_bde_work.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/geom/mirror/g_mirror.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/geom/raid3/g_raid3.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/i386/i386/identcpu.c#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/i386/i386/pmap.c#6 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/i386/i386/tsc.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/ia64/ia64/pmap.c#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/Makefile#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/init_sysent.c#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/kern_fork.c#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/kern_ktrace.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/kern_resource.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/kern_syscalls.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/kern_tc.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/kern_time.c#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/makesyscalls.sh#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/subr_bus.c#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/subr_rman.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/syscalls.c#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/systrace_args.c#1 branch
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/uipc_sockbuf.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/uipc_socket.c#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/uipc_socket2.c#6 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/uipc_syscalls.c#6 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/uipc_usrreq.c#6 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/vfs_lookup.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/kern/vfs_syscalls.c#6 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/modules/Makefile#7 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/modules/powermac_nvram/Makefile#1 branch
.. //depot/projects/soc2006/rdivacky_linuxolator/net/bridgestp.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/net/bridgestp.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/net/if_bridge.c#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/net/if_bridgevar.h#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/net/if_faith.c#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/net/if_gif.c#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/net/if_gre.c#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/net/if_stf.c#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/net/if_var.h#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/net/if_vlan.c#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/net/net_osdep.h#2 delete
.. //depot/projects/soc2006/rdivacky_linuxolator/netatalk/ddp_pcb.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netatalk/ddp_usrreq.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netgraph/ng_ether.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet/in_gif.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet/ip_encap.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet/ip_fw2.c#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet/tcp_subr.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/ah_aesxcbcmac.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/ah_core.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/ah_input.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/ah_output.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/esp_aesctr.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/esp_core.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/esp_input.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/esp_output.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/esp_rijndael.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/frag6.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/icmp6.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/in6.c#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/in6_cksum.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/in6_gif.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/in6_ifattach.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/in6_proto.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/in6_src.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/ip6_forward.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/ip6_input.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/ip6_mroute.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/ip6_output.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/ipcomp_core.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/ipcomp_input.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/ipcomp_output.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/ipsec.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/mld6.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/nd6.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/nd6_nbr.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/nd6_rtr.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netinet6/udp6_output.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netkey/key.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netkey/keydb.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netncp/ncp_sock.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/netsmb/smb_trantcp.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/nfsserver/nfs.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/nfsserver/nfs_srvcache.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/nfsserver/nfs_srvsubs.c#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/nfsserver/nfs_syscalls.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/pci/if_rlreg.h#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/pci/ncr.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/powerpc/conf/GENERIC#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/powerpc/powerpc/intr_machdep.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/powerpc/powerpc/machdep.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/powerpc/powerpc/mmu_if.m#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/powerpc/powerpc/mmu_oea.c#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/powerpc/powerpc/pmap_dispatch.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/sparc64/sparc64/pmap.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/sys/kernel.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/sys/param.h#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/sys/socketvar.h#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/sys/stat.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/sys/syscall.h#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/sys/syscall.mk#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/sys/sysent.h#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/sys/sysproto.h#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/sys/systm.h#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/sys/time.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/sys/types.h#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/ufs/ufs/ufs_lookup.c#3 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/vm/pmap.h#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/vm/swap_pager.c#2 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/vm/vm_fault.c#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/vm/vm_object.c#4 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/vm/vm_page.c#5 integrate
.. //depot/projects/soc2006/rdivacky_linuxolator/vm/vm_pageout.c#2 integrate
Differences ...
==== //depot/projects/soc2006/rdivacky_linuxolator/amd64/amd64/identcpu.c#3 (text+ko) ====
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.147 2006/07/12 06:04:11 jkim Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.148 2006/08/01 01:23:39 obrien Exp $");
#include "opt_cpu.h"
@@ -296,8 +296,8 @@
"\034RDTSCP" /* RDTSCP */
"\035<b28>" /* Undefined */
"\036LM" /* 64 bit long mode */
- "\0373DNow+" /* AMD 3DNow! Extensions */
- "\0403DNow" /* AMD 3DNow! */
+ "\0373DNow!+" /* AMD 3DNow! Extensions */
+ "\0403DNow!" /* AMD 3DNow! */
);
}
==== //depot/projects/soc2006/rdivacky_linuxolator/amd64/amd64/pmap.c#6 (text+ko) ====
@@ -77,7 +77,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.567 2006/07/20 17:48:40 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.569 2006/08/06 06:29:16 alc Exp $");
/*
* Manages physical address maps.
@@ -2506,7 +2506,6 @@
retry:
p = vm_page_lookup(object, pindex);
if (p != NULL) {
- vm_page_lock_queues();
if (vm_page_sleep_if_busy(p, FALSE, "init4p"))
goto retry;
} else {
@@ -2525,8 +2524,8 @@
p = vm_page_lookup(object, pindex);
vm_page_lock_queues();
vm_page_wakeup(p);
+ vm_page_unlock_queues();
}
- vm_page_unlock_queues();
ptepa = VM_PAGE_TO_PHYS(p);
if (ptepa & (NBPDR - 1))
@@ -2972,7 +2971,7 @@
* Clear the write and modified bits in each of the given page's mappings.
*/
void
-pmap_clear_write(vm_page_t m)
+pmap_remove_write(vm_page_t m)
{
pv_entry_t pv;
pmap_t pmap;
@@ -3002,23 +3001,6 @@
}
/*
- * pmap_page_protect:
- *
- * Lower the permission for all mappings to a given page.
- */
-void
-pmap_page_protect(vm_page_t m, vm_prot_t prot)
-{
- if ((prot & VM_PROT_WRITE) == 0) {
- if (prot & (VM_PROT_READ | VM_PROT_EXECUTE)) {
- pmap_clear_write(m);
- } else {
- pmap_remove_all(m);
- }
- }
-}
-
-/*
* pmap_ts_referenced:
*
* Return a count of reference bits for a page, clearing those bits.
==== //depot/projects/soc2006/rdivacky_linuxolator/amd64/include/pmap.h#2 (text+ko) ====
@@ -39,7 +39,7 @@
*
* from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90
* from: @(#)pmap.h 7.4 (Berkeley) 5/12/91
- * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.132 2006/05/01 22:07:00 jhb Exp $
+ * $FreeBSD: src/sys/amd64/include/pmap.h,v 1.133 2006/08/02 16:24:23 alc Exp $
*/
#ifndef _MACHINE_PMAP_H_
@@ -81,6 +81,8 @@
#define PGEX_P 0x01 /* Protection violation vs. not present */
#define PGEX_W 0x02 /* during a Write cycle */
#define PGEX_U 0x04 /* access from User mode (UPL) */
+#define PGEX_RSV 0x08 /* reserved PTE field is non-zero */
+#define PGEX_I 0x10 /* during an instruction fetch */
/*
* Pte related macros. This is complicated by having to deal with
==== //depot/projects/soc2006/rdivacky_linuxolator/arm/arm/pmap.c#5 (text+ko) ====
@@ -147,7 +147,7 @@
#include "opt_vm.h"
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.66 2006/07/20 23:26:22 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.67 2006/08/01 19:06:04 alc Exp $");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -2759,32 +2759,6 @@
/*
- * pmap_page_protect:
- *
- * Lower the permission for all mappings to a given page.
- */
-void
-pmap_page_protect(vm_page_t m, vm_prot_t prot)
-{
- switch(prot) {
- case VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE:
- case VM_PROT_READ|VM_PROT_WRITE:
- return;
-
- case VM_PROT_READ:
- case VM_PROT_READ|VM_PROT_EXECUTE:
- pmap_clearbit(m, PVF_WRITE);
- break;
-
- default:
- pmap_remove_all(m);
- break;
- }
-
-}
-
-
-/*
* Remove all pages from specified address space
* this aids process exit speeds. Also, this code
* is special cased for current process only, but
@@ -4464,7 +4438,7 @@
* Clear the write and modified bits in each of the given page's mappings.
*/
void
-pmap_clear_write(vm_page_t m)
+pmap_remove_write(vm_page_t m)
{
if (m->md.pvh_attrs & PVF_WRITE)
==== //depot/projects/soc2006/rdivacky_linuxolator/boot/i386/loader/main.c#2 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/i386/loader/main.c,v 1.36 2005/12/21 02:17:58 sobomax Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/i386/loader/main.c,v 1.37 2006/08/04 07:56:32 yar Exp $");
/*
* MD bootstrap main() and assorted miscellaneous
@@ -226,7 +226,7 @@
/*
* If we are booted by an old bootstrap, we have to guess at the BIOS
- * unit number. We will loose if there is more than one disk type
+ * unit number. We will lose if there is more than one disk type
* and we are not booting from the lowest-numbered disk type
* (ie. SCSI when IDE also exists).
*/
==== //depot/projects/soc2006/rdivacky_linuxolator/boot/pc98/loader/main.c#2 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/pc98/loader/main.c,v 1.22 2005/12/21 06:10:42 nyan Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/pc98/loader/main.c,v 1.23 2006/08/04 07:56:32 yar Exp $");
/*
* MD bootstrap main() and assorted miscellaneous
@@ -218,7 +218,7 @@
/*
* If we are booted by an old bootstrap, we have to guess at the BIOS
- * unit number. We will loose if there is more than one disk type
+ * unit number. We will lose if there is more than one disk type
* and we are not booting from the lowest-numbered disk type
* (ie. SCSI when IDE also exists).
*/
==== //depot/projects/soc2006/rdivacky_linuxolator/compat/svr4/svr4_sockio.c#2 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_sockio.c,v 1.17 2005/08/09 10:19:41 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_sockio.c,v 1.18 2006/08/04 21:15:09 brooks Exp $");
#include <sys/param.h>
#include <sys/proc.h>
@@ -104,7 +104,7 @@
*/
IFNET_RLOCK();
TAILQ_FOREACH(ifp, &ifnet, if_link)
- if (TAILQ_FIRST(&ifp->if_addrhead) == NULL)
+ if (TAILQ_EMPTY(&ifp->if_addrhead))
ifnum++;
else
TAILQ_FOREACH(ifa, &ifp->if_addrhead,
==== //depot/projects/soc2006/rdivacky_linuxolator/compat/svr4/svr4_stream.c#5 (text+ko) ====
@@ -36,11 +36,10 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_stream.c,v 1.61 2006/07/28 16:56:17 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_stream.c,v 1.62 2006/08/05 22:04:21 rwatson Exp $");
#include "opt_compat.h"
#include "opt_ktrace.h"
-#include "opt_mac.h"
#include <sys/param.h>
#include <sys/systm.h>
@@ -50,7 +49,6 @@
#include <sys/lock.h>
#include <sys/malloc.h>
#include <sys/file.h> /* Must come after sys/malloc.h */
-#include <sys/mac.h>
#include <sys/mbuf.h>
#include <sys/mutex.h>
#include <sys/proc.h>
==== //depot/projects/soc2006/rdivacky_linuxolator/conf/files.powerpc#4 (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.powerpc,v 1.56 2006/07/26 19:44:42 marcel Exp $
+# $FreeBSD: src/sys/conf/files.powerpc,v 1.57 2006/08/01 22:19:01 sobomax Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -128,3 +128,5 @@
powerpc/psim/uart_iobus.c optional uart psim
dev/scc/scc_bfe_macio.c optional scc powermac
+
+dev/powermac_nvram/powermac_nvram.c optional powermac powermac_nvram
==== //depot/projects/soc2006/rdivacky_linuxolator/conf/options#7 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.555 2006/07/29 18:38:53 marcel Exp $
+# $FreeBSD: src/sys/conf/options,v 1.556 2006/08/03 05:19:33 jb Exp $
#
# On the handling of kernel options
#
@@ -93,6 +93,7 @@
GEOM_UZIP opt_geom.h
GEOM_VOL opt_geom.h
GEOM_ZERO opt_geom.h
+KSE opt_global.h
KSTACK_MAX_PAGES
KSTACK_PAGES
KTRACE
@@ -598,6 +599,7 @@
PCFCLOCK_VERBOSE opt_pcfclock.h
PCFCLOCK_MAX_RETRIES opt_pcfclock.h
+KDTRACE opt_kdtrace.h
KTR opt_global.h
KTR_ALQ opt_ktr.h
KTR_MASK opt_ktr.h
==== //depot/projects/soc2006/rdivacky_linuxolator/ddb/db_ps.c#3 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ddb/db_ps.c,v 1.61 2006/07/12 21:22:43 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/ddb/db_ps.c,v 1.63 2006/08/01 22:30:55 jhb Exp $");
#include <sys/param.h>
#include <sys/cons.h>
@@ -57,10 +57,10 @@
*
* 1 2 3 4 5 6 7
* 1234567890123456789012345678901234567890123456789012345678901234567890
- * pid uid ppid pgrp state wmesg wchan cmd
- * <pid> <ui> <ppi> <pgi> <stat> < wmesg > < wchan > <name>
- * <pid> <ui> <ppi> <pgi> <stat> (threaded) <command>
- * <tid > <stat> < wmesg > < wchan > <name>
+ * pid ppid pgrp uid state wmesg wchan cmd
+ * <pid> <ppi> <pgi> <uid> <stat> < wmesg > < wchan > <name>
+ * <pid> <ppi> <pgi> <uid> <stat> (threaded) <command>
+ * <tid > <stat> < wmesg > < wchan > <name>
*
* For machines with 64-bit pointers, we expand the wchan field 8 more
* characters.
@@ -83,9 +83,9 @@
p = &proc0;
#ifdef __LP64__
- db_printf(" pid uid ppid pgrp state wmesg wchan cmd\n");
+ db_printf(" pid ppid pgrp uid state wmesg wchan cmd\n");
#else
- db_printf(" pid uid ppid pgrp state wmesg wchan cmd\n");
+ db_printf(" pid ppid pgrp uid state wmesg wchan cmd\n");
#endif
while (--np >= 0 && !db_pager_quit) {
if (p == NULL) {
@@ -98,9 +98,9 @@
cred = p->p_ucred;
pgrp = p->p_pgrp;
- db_printf("%5d %4d %5d %5d ", p->p_pid,
- cred != NULL ? cred->cr_ruid : 0, pp->p_pid,
- pgrp != NULL ? pgrp->pg_id : 0);
+ db_printf("%5d %5d %5d %5d ", p->p_pid, pp->p_pid,
+ pgrp != NULL ? pgrp->pg_id : 0,
+ cred != NULL ? cred->cr_ruid : 0);
/* Determine our primary process state. */
switch (p->p_state) {
@@ -207,7 +207,7 @@
void *wchan;
if (all) {
- db_printf(" %9d ", td->td_tid);
+ db_printf("%6d ", td->td_tid);
switch (td->td_state) {
case TDS_RUNNING:
snprintf(state, sizeof(state), "Run");
==== //depot/projects/soc2006/rdivacky_linuxolator/dev/ata/ata-chipset.c#5 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.166 2006/07/24 10:44:50 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.167 2006/08/05 11:41:46 sos Exp $");
#include "opt_ata.h"
#include <sys/param.h>
@@ -2772,17 +2772,17 @@
{ ATA_NFORCE3_PRO_S1, 0, 0, 0, ATA_SA150, "nForce3 Pro" },
{ ATA_NFORCE3_PRO_S2, 0, 0, 0, ATA_SA150, "nForce3 Pro" },
{ ATA_NFORCE_MCP04, 0, AMDNVIDIA, NVIDIA, ATA_UDMA6, "nForce MCP" },
- { ATA_NFORCE_MCP04_S1, 0, 0, NV4BYTE, ATA_SA150, "nForce MCP" },
- { ATA_NFORCE_MCP04_S2, 0, 0, NV4BYTE, ATA_SA150, "nForce MCP" },
+ { ATA_NFORCE_MCP04_S1, 0, 0, NV4, ATA_SA150, "nForce MCP" },
+ { ATA_NFORCE_MCP04_S2, 0, 0, NV4, ATA_SA150, "nForce MCP" },
{ ATA_NFORCE_CK804, 0, AMDNVIDIA, NVIDIA, ATA_UDMA6, "nForce CK804" },
- { ATA_NFORCE_CK804_S1, 0, 0, NV4BYTE, ATA_SA300, "nForce CK804" },
- { ATA_NFORCE_CK804_S2, 0, 0, NV4BYTE, ATA_SA300, "nForce CK804" },
+ { ATA_NFORCE_CK804_S1, 0, 0, NV4, ATA_SA300, "nForce CK804" },
+ { ATA_NFORCE_CK804_S2, 0, 0, NV4, ATA_SA300, "nForce CK804" },
{ ATA_NFORCE_MCP51, 0, AMDNVIDIA, NVIDIA, ATA_UDMA6, "nForce MCP51" },
- { ATA_NFORCE_MCP51_S1, 0, 0, NV4WORD, ATA_SA300, "nForce MCP51" },
- { ATA_NFORCE_MCP51_S2, 0, 0, NV4WORD, ATA_SA300, "nForce MCP51" },
+ { ATA_NFORCE_MCP51_S1, 0, 0, NV4LONG, ATA_SA300, "nForce MCP51" },
+ { ATA_NFORCE_MCP51_S2, 0, 0, NV4LONG, ATA_SA300, "nForce MCP51" },
{ ATA_NFORCE_MCP55, 0, AMDNVIDIA, NVIDIA, ATA_UDMA6, "nForce MCP55" },
- { ATA_NFORCE_MCP55_S1, 0, 0, NV4WORD, ATA_SA300, "nForce MCP55" },
- { ATA_NFORCE_MCP55_S2, 0, 0, NV4WORD, ATA_SA300, "nForce MCP55" },
+ { ATA_NFORCE_MCP55_S1, 0, 0, NV4LONG, ATA_SA300, "nForce MCP55" },
+ { ATA_NFORCE_MCP55_S2, 0, 0, NV4LONG, ATA_SA300, "nForce MCP55" },
{ 0, 0, 0, 0, 0, 0}} ;
char buffer[64] ;
@@ -2821,19 +2821,19 @@
/* enable control access */
pci_write_config(dev, 0x50, pci_read_config(dev, 0x50, 1) | 0x04,1);
- if (ctlr->chip->cfg2 == NV4BYTE) {
+ if (ctlr->chip->cfg2 & NV4LONG) {
/* clear interrupt status */
- ATA_OUTB(ctlr->r_res2, offset, 0xff);
+ ATA_OUTL(ctlr->r_res2, offset, 0x00ff00ff);
/* enable device and PHY state change interrupts */
- ATA_OUTB(ctlr->r_res2, offset + 1, 0xdd);
+ ATA_OUTL(ctlr->r_res2, offset + 4, 0x00dd00dd);
}
else {
/* clear interrupt status */
- ATA_OUTL(ctlr->r_res2, offset, 0x00ff00ff);
+ ATA_OUTB(ctlr->r_res2, offset, 0xff);
/* enable device and PHY state change interrupts */
- ATA_OUTL(ctlr->r_res2, offset + 4, 0x00dd00dd);
+ ATA_OUTB(ctlr->r_res2, offset + 1, 0xdd);
}
/* enable PCI interrupt */
@@ -2881,18 +2881,18 @@
struct ata_channel *ch = device_get_softc(dev);
int offset = ctlr->chip->cfg2 & NV4 ? 0x0440 : 0x0010;
struct ata_connect_task *tp;
- int shift = ch->unit << (ctlr->chip->cfg2 == NV4BYTE ? 2 : 4);
+ int shift = ch->unit << (ctlr->chip->cfg2 & NV4LONG ? 4 : 2);
u_int32_t status;
/* get and clear interrupt status */
- if (ctlr->chip->cfg2 == NV4BYTE) {
+ if (ctlr->chip->cfg2 & NV4LONG) {
+ status = ATA_INL(ctlr->r_res2, offset);
+ ATA_OUTL(ctlr->r_res2, offset, (0x0f << shift));
+ }
+ else {
status = ATA_INB(ctlr->r_res2, offset);
ATA_OUTB(ctlr->r_res2, offset, (0x0f << shift));
}
- else {
- status = ATA_INL(ctlr->r_res2, offset);
- ATA_OUTL(ctlr->r_res2, offset, (0x0f << shift));
- }
/* check for and handle connect events */
if (((status & (0x0c << shift)) == (0x04 << shift)) &&
==== //depot/projects/soc2006/rdivacky_linuxolator/dev/ata/ata-pci.h#4 (text+ko) ====
@@ -23,7 +23,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/ata/ata-pci.h,v 1.66 2006/07/24 10:44:50 sos Exp $
+ * $FreeBSD: src/sys/dev/ata/ata-pci.h,v 1.67 2006/08/05 11:41:46 sos Exp $
*/
/* structure holding chipset config info */
@@ -392,8 +392,7 @@
#define AMDBUG 0x0002
#define NVIDIA 0x0004
#define NV4 0x0010
-#define NV4BYTE 0x0030
-#define NV4WORD 0x0050
+#define NV4LONG 0x0030
#define VIACLK 0x0100
#define VIABUG 0x0200
#define VIABAR 0x0400
==== //depot/projects/soc2006/rdivacky_linuxolator/dev/ath/if_ath.c#5 (text+ko) ====
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.150 2006/07/26 03:48:41 sam Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.151 2006/08/05 05:07:17 sam Exp $");
/*
* Driver for the Atheros Wireless LAN controller.
@@ -180,6 +180,8 @@
static void ath_setcurmode(struct ath_softc *, enum ieee80211_phymode);
static void ath_sysctlattach(struct ath_softc *);
+static int ath_raw_xmit(struct ieee80211_node *,
+ struct mbuf *, const struct ieee80211_bpf_params *);
static void ath_bpfattach(struct ath_softc *);
static void ath_announce(struct ath_softc *);
@@ -607,6 +609,7 @@
ic->ic_crypto.cs_key_set = ath_key_set;
ic->ic_crypto.cs_key_update_begin = ath_key_update_begin;
ic->ic_crypto.cs_key_update_end = ath_key_update_end;
+ ic->ic_raw_xmit = ath_raw_xmit;
/* complete initialization */
ieee80211_media_init(ic, ath_media_change, ieee80211_media_status);
@@ -3353,6 +3356,126 @@
}
static int
+ath_tx_dmasetup(struct ath_softc *sc, struct ath_buf *bf, struct mbuf *m0)
+{
+ struct mbuf *m;
+ int error;
+
+ /*
+ * Load the DMA map so any coalescing is done. This
+ * also calculates the number of descriptors we need.
+ */
+ error = bus_dmamap_load_mbuf_sg(sc->sc_dmat, bf->bf_dmamap, m0,
+ bf->bf_segs, &bf->bf_nseg,
+ BUS_DMA_NOWAIT);
+ if (error == EFBIG) {
+ /* XXX packet requires too many descriptors */
+ bf->bf_nseg = ATH_TXDESC+1;
+ } else if (error != 0) {
+ sc->sc_stats.ast_tx_busdma++;
+ m_freem(m0);
+ return error;
+ }
+ /*
+ * Discard null packets and check for packets that
+ * require too many TX descriptors. We try to convert
+ * the latter to a cluster.
+ */
+ if (bf->bf_nseg > ATH_TXDESC) { /* too many desc's, linearize */
+ sc->sc_stats.ast_tx_linear++;
+ m = ath_defrag(m0, M_DONTWAIT, ATH_TXDESC);
+ if (m == NULL) {
+ m_freem(m0);
+ sc->sc_stats.ast_tx_nombuf++;
+ return ENOMEM;
+ }
+ m0 = m;
+ error = bus_dmamap_load_mbuf_sg(sc->sc_dmat, bf->bf_dmamap, m0,
+ bf->bf_segs, &bf->bf_nseg,
+ BUS_DMA_NOWAIT);
+ if (error != 0) {
+ sc->sc_stats.ast_tx_busdma++;
+ m_freem(m0);
+ return error;
+ }
+ KASSERT(bf->bf_nseg <= ATH_TXDESC,
+ ("too many segments after defrag; nseg %u", bf->bf_nseg));
+ } else if (bf->bf_nseg == 0) { /* null packet, discard */
+ sc->sc_stats.ast_tx_nodata++;
+ m_freem(m0);
+ return EIO;
+ }
+ DPRINTF(sc, ATH_DEBUG_XMIT, "%s: m %p len %u\n",
+ __func__, m0, m0->m_pkthdr.len);
+ bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, BUS_DMASYNC_PREWRITE);
+ bf->bf_m = m0;
+
+ return 0;
+}
+
+static void
+ath_tx_handoff(struct ath_softc *sc, struct ath_txq *txq, struct ath_buf *bf)
+{
+ struct ath_hal *ah = sc->sc_ah;
+ struct ath_desc *ds, *ds0;
+ int i;
+
+ /*
+ * Fillin the remainder of the descriptor info.
+ */
+ ds0 = ds = bf->bf_desc;
+ for (i = 0; i < bf->bf_nseg; i++, ds++) {
+ ds->ds_data = bf->bf_segs[i].ds_addr;
+ if (i == bf->bf_nseg - 1)
+ ds->ds_link = 0;
+ else
+ ds->ds_link = bf->bf_daddr + sizeof(*ds) * (i + 1);
+ ath_hal_filltxdesc(ah, ds
+ , bf->bf_segs[i].ds_len /* segment length */
+ , i == 0 /* first segment */
+ , i == bf->bf_nseg - 1 /* last segment */
+ , ds0 /* first descriptor */
+ );
+ DPRINTF(sc, ATH_DEBUG_XMIT,
+ "%s: %d: %08x %08x %08x %08x %08x %08x\n",
+ __func__, i, ds->ds_link, ds->ds_data,
+ 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. 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 != &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 {
+ if (txq->axq_link != NULL)
+ *txq->axq_link = bf->bf_daddr;
+ txq->axq_link = &bf->bf_desc[bf->bf_nseg - 1].ds_link;
+ }
+ ATH_TXQ_UNLOCK(txq);
+}
+
+static int
ath_tx_start(struct ath_softc *sc, struct ieee80211_node *ni, struct ath_buf *bf,
struct mbuf *m0)
{
@@ -3360,11 +3483,11 @@
struct ath_hal *ah = sc->sc_ah;
struct ifnet *ifp = sc->sc_ifp;
const struct chanAccParams *cap = &ic->ic_wme.wme_chanParams;
- int i, error, iswep, ismcast, ismrr;
+ int error, iswep, ismcast, ismrr;
int keyix, hdrlen, pktlen, try0;
u_int8_t rix, txrate, ctsrate;
u_int8_t cix = 0xff; /* NB: silence compiler */
- struct ath_desc *ds, *ds0;
+ struct ath_desc *ds;
struct ath_txq *txq;
struct ieee80211_frame *wh;
u_int subtype, flags, ctsduration;
@@ -3372,7 +3495,6 @@
const HAL_RATE_TABLE *rt;
HAL_BOOL shortPreamble;
struct ath_node *an;
- struct mbuf *m;
u_int pri;
wh = mtod(m0, struct ieee80211_frame *);
@@ -3438,50 +3560,10 @@
* Load the DMA map so any coalescing is done. This
* also calculates the number of descriptors we need.
*/
- error = bus_dmamap_load_mbuf_sg(sc->sc_dmat, bf->bf_dmamap, m0,
- bf->bf_segs, &bf->bf_nseg,
- BUS_DMA_NOWAIT);
- if (error == EFBIG) {
- /* XXX packet requires too many descriptors */
- bf->bf_nseg = ATH_TXDESC+1;
- } else if (error != 0) {
- sc->sc_stats.ast_tx_busdma++;
- m_freem(m0);
- return error;
- }
- /*
- * Discard null packets and check for packets that
- * require too many TX descriptors. We try to convert
- * the latter to a cluster.
- */
- if (bf->bf_nseg > ATH_TXDESC) { /* too many desc's, linearize */
- sc->sc_stats.ast_tx_linear++;
- m = ath_defrag(m0, M_DONTWAIT, ATH_TXDESC);
- if (m == NULL) {
- m_freem(m0);
- sc->sc_stats.ast_tx_nombuf++;
- return ENOMEM;
- }
- m0 = m;
- error = bus_dmamap_load_mbuf_sg(sc->sc_dmat, bf->bf_dmamap, m0,
- bf->bf_segs, &bf->bf_nseg,
- BUS_DMA_NOWAIT);
- if (error != 0) {
- sc->sc_stats.ast_tx_busdma++;
- m_freem(m0);
- return error;
- }
- KASSERT(bf->bf_nseg <= ATH_TXDESC,
- ("too many segments after defrag; nseg %u", bf->bf_nseg));
- } else if (bf->bf_nseg == 0) { /* null packet, discard */
- sc->sc_stats.ast_tx_nodata++;
- m_freem(m0);
- return EIO;
- }
- DPRINTF(sc, ATH_DEBUG_XMIT, "%s: m %p len %u\n", __func__, m0, pktlen);
- bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, BUS_DMASYNC_PREWRITE);
- bf->bf_m = m0;
+ error = ath_tx_dmasetup(sc, bf, m0);
bf->bf_node = ni; /* NB: held reference */
+ m0 = bf->bf_m; /* NB: may have changed */
+ wh = mtod(m0, struct ieee80211_frame *);
/* setup descriptors */
ds = bf->bf_desc;
@@ -3763,60 +3845,7 @@
if (ismrr)
ath_rate_setupxtxdesc(sc, an, ds, shortPreamble, rix);
- /*
- * Fillin the remainder of the descriptor info.
- */
- ds0 = ds;
- for (i = 0; i < bf->bf_nseg; i++, ds++) {
- ds->ds_data = bf->bf_segs[i].ds_addr;
- if (i == bf->bf_nseg - 1)
- ds->ds_link = 0;
- else
- ds->ds_link = bf->bf_daddr + sizeof(*ds) * (i + 1);
- ath_hal_filltxdesc(ah, ds
- , bf->bf_segs[i].ds_len /* segment length */
- , i == 0 /* first segment */
- , i == bf->bf_nseg - 1 /* last segment */
- , ds0 /* first descriptor */
- );
- DPRINTF(sc, ATH_DEBUG_XMIT,
- "%s: %d: %08x %08x %08x %08x %08x %08x\n",
- __func__, i, ds->ds_link, ds->ds_data,
- 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. 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 != &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 {
- if (txq->axq_link != NULL)
- *txq->axq_link = bf->bf_daddr;
- txq->axq_link = &bf->bf_desc[bf->bf_nseg - 1].ds_link;
- }
- ATH_TXQ_UNLOCK(txq);
-
+ ath_tx_handoff(sc, txq, bf);
return 0;
}
@@ -5480,6 +5509,232 @@
sc->sc_rx_th.wr_ihdr.it_present = htole32(ATH_RX_RADIOTAP_PRESENT);
}
+static int
+ath_tx_raw_start(struct ath_softc *sc, struct ieee80211_node *ni,
+ struct ath_buf *bf, struct mbuf *m0,
+ const struct ieee80211_bpf_params *params)
+{
+ struct ieee80211com *ic = &sc->sc_ic;
+ struct ath_hal *ah = sc->sc_ah;
+ int error, ismcast, ismrr;
+ int hdrlen, pktlen, try0, txantenna;
+ u_int8_t rix, cix, txrate, ctsrate, rate1, rate2, rate3;
+ struct ath_txq *txq;
+ struct ieee80211_frame *wh;
+ u_int flags, ctsduration;
+ HAL_PKT_TYPE atype;
+ const HAL_RATE_TABLE *rt;
+ struct ath_desc *ds;
+ u_int pri;
+
+ wh = mtod(m0, struct ieee80211_frame *);
+ ismcast = IEEE80211_IS_MULTICAST(wh->i_addr1);
+ hdrlen = ieee80211_anyhdrsize(wh);
+ /*
+ * Packet length must not include any
+ * pad bytes; deduct them here.
+ */
+ /* XXX honor IEEE80211_BPF_DATAPAD */
+ pktlen = m0->m_pkthdr.len - (hdrlen & 3) + IEEE80211_CRC_LEN;
+
+ error = ath_tx_dmasetup(sc, bf, m0);
+ if (error != 0)
+ return error;
+ m0 = bf->bf_m; /* NB: may have changed */
+ wh = mtod(m0, struct ieee80211_frame *);
+ bf->bf_node = ni; /* NB: held reference */
+
+ flags = HAL_TXDESC_CLRDMASK; /* XXX needed for crypto errs */
+ flags |= HAL_TXDESC_INTREQ; /* force interrupt */
+ if (params->ibp_flags & IEEE80211_BPF_RTS)
+ flags |= HAL_TXDESC_RTSENA;
+ else if (params->ibp_flags & IEEE80211_BPF_CTS)
+ flags |= HAL_TXDESC_CTSENA;
+ /* XXX leave ismcast to injector? */
+ if ((params->ibp_flags & IEEE80211_BPF_NOACK) || ismcast)
+ flags |= HAL_TXDESC_NOACK;
+
+ rt = sc->sc_currates;
+ KASSERT(rt != NULL, ("no rate table, mode %u", sc->sc_curmode));
+ rix = ath_tx_findrix(rt, params->ibp_rate0);
+ txrate = rt->info[rix].rateCode;
+ if (params->ibp_flags & IEEE80211_BPF_SHORTPRE)
+ txrate |= rt->info[rix].shortPreamble;
+ try0 = params->ibp_try0;
+ ismrr = (params->ibp_try1 != 0);
+ txantenna = params->ibp_pri >> 2;
+ if (txantenna == 0) /* XXX? */
+ txantenna = sc->sc_txantenna;
+ ctsduration = 0;
+ if (flags & (HAL_TXDESC_CTSENA | HAL_TXDESC_RTSENA)) {
+ cix = ath_tx_findrix(rt, params->ibp_ctsrate);
+ ctsrate = rt->info[cix].rateCode;
+ if (params->ibp_flags & IEEE80211_BPF_SHORTPRE) {
+ ctsrate |= rt->info[cix].shortPreamble;
+ if (flags & HAL_TXDESC_RTSENA) /* SIFS + CTS */
+ ctsduration += rt->info[cix].spAckDuration;
+ ctsduration += ath_hal_computetxtime(ah,
+ rt, pktlen, rix, AH_TRUE);
+ if ((flags & HAL_TXDESC_NOACK) == 0) /* SIFS + ACK */
+ ctsduration += rt->info[rix].spAckDuration;
+ } else {
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list