Date: Fri, 25 Apr 2008 06:47:27 GMT From: John Birrell <jb@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 140581 for review Message-ID: <200804250647.m3P6lR4s089302@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=140581 Change 140581 by jb@freebsd3 on 2008/04/25 06:47:18 IF7 Affected files ... .. //depot/projects/dtrace7/src/gnu/usr.bin/send-pr/categories#2 integrate .. //depot/projects/dtrace7/src/gnu/usr.bin/send-pr/send-pr.1#2 integrate .. //depot/projects/dtrace7/src/sbin/gpt/gpt.c#4 integrate .. //depot/projects/dtrace7/src/sbin/ifconfig/ifconfig.8#3 integrate .. //depot/projects/dtrace7/src/share/man/man4/textdump.4#2 integrate .. //depot/projects/dtrace7/src/sys/amd64/amd64/vm_machdep.c#2 integrate .. //depot/projects/dtrace7/src/sys/arm/arm/vm_machdep.c#2 integrate .. //depot/projects/dtrace7/src/sys/dev/usb/ehci_pci.c#4 integrate .. //depot/projects/dtrace7/src/sys/dev/usb/uhci_pci.c#3 integrate .. //depot/projects/dtrace7/src/sys/i386/i386/vm_machdep.c#2 integrate .. //depot/projects/dtrace7/src/sys/ia64/ia64/machdep.c#5 integrate .. //depot/projects/dtrace7/src/sys/ia64/ia64/vm_machdep.c#2 integrate .. //depot/projects/dtrace7/src/sys/kern/kern_thread.c#6 integrate .. //depot/projects/dtrace7/src/sys/net80211/ieee80211_radiotap.h#2 integrate .. //depot/projects/dtrace7/src/sys/pci/if_xl.c#3 integrate .. //depot/projects/dtrace7/src/sys/pci/if_xlreg.h#2 integrate .. //depot/projects/dtrace7/src/sys/powerpc/powerpc/vm_machdep.c#2 integrate .. //depot/projects/dtrace7/src/sys/sparc64/include/bus.h#2 integrate .. //depot/projects/dtrace7/src/sys/sparc64/sparc64/bus_machdep.c#2 integrate .. //depot/projects/dtrace7/src/sys/sparc64/sparc64/vm_machdep.c#2 integrate .. //depot/projects/dtrace7/src/sys/sun4v/sun4v/vm_machdep.c#2 integrate .. //depot/projects/dtrace7/src/sys/sys/proc.h#7 integrate .. //depot/projects/dtrace7/src/tools/tools/ath/athstats/Makefile#2 integrate .. //depot/projects/dtrace7/src/tools/tools/ath/athstats/athstats.c#2 integrate .. //depot/projects/dtrace7/src/tools/tools/ath/athstats/statfoo.c#2 integrate .. //depot/projects/dtrace7/src/usr.bin/procstat/procstat.1#2 integrate .. //depot/projects/dtrace7/src/usr.sbin/adduser/adduser.8#3 integrate .. //depot/projects/dtrace7/src/usr.sbin/pkg_install/info/main.c#3 integrate .. //depot/projects/dtrace7/src/usr.sbin/pkg_install/info/perform.c#2 integrate .. //depot/projects/dtrace7/src/usr.sbin/wpa/wpa_supplicant/Makefile#3 integrate Differences ... ==== //depot/projects/dtrace7/src/gnu/usr.bin/send-pr/categories#2 (text+ko) ==== @@ -1,7 +1,8 @@ -# $FreeBSD: src/gnu/usr.bin/send-pr/categories,v 1.18 2006/07/17 10:36:56 ceri Exp $ +# $FreeBSD: src/gnu/usr.bin/send-pr/categories,v 1.18.2.1 2008/04/23 04:00:23 linimon Exp $ advocacy alpha amd64 +arm bin conf docs ==== //depot/projects/dtrace7/src/gnu/usr.bin/send-pr/send-pr.1#2 (text+ko) ==== @@ -22,7 +22,7 @@ .\" .\" --------------------------------------------------------------------------- .\" -.\" $FreeBSD: src/gnu/usr.bin/send-pr/send-pr.1,v 1.20 2006/10/15 11:50:11 ceri Exp $ +.\" $FreeBSD: src/gnu/usr.bin/send-pr/send-pr.1,v 1.20.2.1 2008/04/23 04:00:23 linimon Exp $ .nh .TH SEND-PR 1 3.113 "October 2006" .SH NAME @@ -191,6 +191,9 @@ .B amd64 AMD64 processor specific problems. .TP +.B arm +ARM processor specific problems. +.TP .B bin Corrections or enhancements to system executables. .TP ==== //depot/projects/dtrace7/src/sbin/gpt/gpt.c#4 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sbin/gpt/gpt.c,v 1.16.2.3 2008/02/12 19:22:58 jhb Exp $"); +__FBSDID("$FreeBSD: src/sbin/gpt/gpt.c,v 1.16.2.4 2008/04/23 18:48:36 jhb Exp $"); #include <sys/param.h> #include <sys/types.h> @@ -317,6 +317,13 @@ return (0); } break; + case 'z': + if (strcmp(s, "zfs") == 0) { + uuid_t zfs = GPT_ENT_TYPE_FREEBSD_ZFS; + *uuid = zfs; + return (0); + } + break; } return (EINVAL); } ==== //depot/projects/dtrace7/src/sbin/ifconfig/ifconfig.8#3 (text+ko) ==== @@ -26,9 +26,9 @@ .\" SUCH DAMAGE. .\" .\" From: @(#)ifconfig.8 8.3 (Berkeley) 1/5/94 -.\" $FreeBSD: src/sbin/ifconfig/ifconfig.8,v 1.142.2.3 2008/04/10 04:01:26 thompsa Exp $ +.\" $FreeBSD: src/sbin/ifconfig/ifconfig.8,v 1.142.2.4 2008/04/25 05:33:16 sam Exp $ .\" -.Dd December 8, 2007 +.Dd February 29, 2008 .Dt IFCONFIG 8 .Os .Sh NAME @@ -779,6 +779,8 @@ .It Cm deftxkey Ar index Set the default key to use for transmission. Typically this is only set when using WEP encryption. +Note that you must set a default transmit key +for the system to know which key to use in encrypting outbound traffic. The .Cm weptxkey is an alias for this request; it is provided for backwards compatibility. @@ -1263,6 +1265,10 @@ If that is the case, then the first four keys (1-4) will be the standard temporary keys and any others will be adaptor specific keys such as permanent keys stored in NVRAM. +.Pp +Note that you must set a default transmit key with +.Cm deftxkey +for the system to know which key to use in encrypting outbound traffic. .It Cm wme Enable Wireless Multimedia Extensions (WME) support, if available, for the specified interface. ==== //depot/projects/dtrace7/src/share/man/man4/textdump.4#2 (text+ko) ==== @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH .\" DAMAGE. .\" -.\" $FreeBSD: src/share/man/man4/textdump.4,v 1.3.2.2 2008/03/31 22:02:28 rwatson Exp $ +.\" $FreeBSD: src/share/man/man4/textdump.4,v 1.3.2.3 2008/04/24 06:32:16 rwatson Exp $ .\" .Dd 26 December, 2007 .Dt textdump 4 @@ -48,7 +48,7 @@ By combining .Nm with other -.Xr DDB 4 +.Xr ddb 4 facilities, such as scripting and output capture, detailed bug information can be captured in a fully automated manner. .Sh FORMAT @@ -67,7 +67,7 @@ .Bl -tag -width version.txt .It Pa ddb.txt Captured -.Xr DDB 4 +.Xr ddb 4 output, if the capture facility has been used. May be disabled by clearing the .Dv debug.ddb.textdump.do_ddb @@ -110,7 +110,7 @@ dump will be regular memory dumps; however, by using the .Ic textdump set command in -.Xr DDB 4 , +.Xr ddb 4 , or by setting the .Dv debug.ddb.textdump.pending sysctl to 1 using @@ -118,7 +118,7 @@ it is possible to request that the next dump be a textdump. .Pp If at the -.Xr DDB 4 +.Xr ddb 4 command line, the commands .Ic textdump set , .Ic textdump status , ==== //depot/projects/dtrace7/src/sys/amd64/amd64/vm_machdep.c#2 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.255 2007/06/04 23:57:29 jeff Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.255.2.1 2008/04/24 22:41:59 marcel Exp $"); #include "opt_isa.h" #include "opt_cpu.h" @@ -240,7 +240,7 @@ } void -cpu_thread_setup(struct thread *td) +cpu_thread_alloc(struct thread *td) { td->td_pcb = (struct pcb *)(td->td_kstack + @@ -248,6 +248,11 @@ td->td_frame = (struct trapframe *)td->td_pcb - 1; } +void +cpu_thread_free(struct thread *td) +{ +} + /* * Initialize machine state (pcb and trap frame) for a new thread about to * upcall. Put enough state in the new thread's PCB to get it to go back ==== //depot/projects/dtrace7/src/sys/arm/arm/vm_machdep.c#2 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.34 2007/09/15 18:47:01 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.34.2.1 2008/04/24 22:42:00 marcel Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -333,7 +333,7 @@ } void -cpu_thread_setup(struct thread *td) +cpu_thread_alloc(struct thread *td) { td->td_pcb = (struct pcb *)(td->td_kstack + td->td_kstack_pages * PAGE_SIZE) - 1; @@ -344,8 +344,13 @@ pmap_use_minicache(td->td_kstack, td->td_kstack_pages * PAGE_SIZE); #endif #endif - +} + +void +cpu_thread_free(struct thread *td) +{ } + void cpu_thread_clean(struct thread *td) { ==== //depot/projects/dtrace7/src/sys/dev/usb/ehci_pci.c#4 (text+ko) ==== @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/usb/ehci_pci.c,v 1.28.2.2 2008/03/19 16:38:55 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb/ehci_pci.c,v 1.28.2.3 2008/04/23 18:50:19 jhb Exp $"); /* * USB Enhanced Host Controller Driver, a.k.a. USB 2.0 controller. @@ -117,6 +117,10 @@ static const char *ehci_device_ich6 = "Intel 82801FB (ICH6) USB 2.0 controller"; #define PCI_EHCI_DEVICEID_ICH7 0x27cc8086 static const char *ehci_device_ich7 = "Intel 82801GB/R (ICH7) USB 2.0 controller"; +#define PCI_EHCI_DEVICEID_ICH8_A 0x28368086 +static const char *ehci_device_ich8_a = "Intel 82801H (ICH8) USB 2.0 controller USB2-A"; +#define PCI_EHCI_DEVICEID_ICH8_B 0x283a8086 +static const char *ehci_device_ich8_b = "Intel 82801H (ICH8) USB 2.0 controller USB2-B"; #define PCI_EHCI_DEVICEID_63XX 0x268c8086 static const char *ehci_device_63XX = "Intel 63XXESB USB 2.0 controller"; @@ -230,6 +234,10 @@ return (ehci_device_ich6); case PCI_EHCI_DEVICEID_ICH7: return (ehci_device_ich7); + case PCI_EHCI_DEVICEID_ICH8_A: + return (ehci_device_ich8_a); + case PCI_EHCI_DEVICEID_ICH8_B: + return (ehci_device_ich8_b); case PCI_EHCI_DEVICEID_NEC: return (ehci_device_nec); case PCI_EHCI_DEVICEID_NF2: ==== //depot/projects/dtrace7/src/sys/dev/usb/uhci_pci.c#3 (text+ko) ==== @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/usb/uhci_pci.c,v 1.61.2.1 2007/11/26 18:21:42 jfv Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb/uhci_pci.c,v 1.61.2.2 2008/04/23 18:50:20 jhb Exp $"); /* Universal Host Controller Interface * @@ -151,6 +151,21 @@ #define PCI_UHCI_DEVICEID_63XXESB_4 0x268b8086 static const char *uhci_device_esb_4 = "Intel 631XESB/632XESB/3100 USB controller USB-4"; +#define PCI_UHCI_DEVICEID_ICH8_A 0x28308086 +static const char *uhci_device_ich8_a = "Intel 82801H (ICH8) USB controller USB-A"; + +#define PCI_UHCI_DEVICEID_ICH8_B 0x28318086 +static const char *uhci_device_ich8_b = "Intel 82801H (ICH8) USB controller USB-B"; + +#define PCI_UHCI_DEVICEID_ICH8_C 0x28328086 +static const char *uhci_device_ich8_c = "Intel 82801H (ICH8) USB controller USB-C"; + +#define PCI_UHCI_DEVICEID_ICH8_D 0x28348086 +static const char *uhci_device_ich8_d = "Intel 82801H (ICH8) USB controller USB-D"; + +#define PCI_UHCI_DEVICEID_ICH8_E 0x28358086 +static const char *uhci_device_ich8_e = "Intel 82801H (ICH8) USB controller USB-E"; + #define PCI_UHCI_DEVICEID_440MX 0x719a8086 static const char *uhci_device_440mx = "Intel 82443MX USB controller"; @@ -250,6 +265,16 @@ return (uhci_device_esb_3); } else if (device_id == PCI_UHCI_DEVICEID_63XXESB_4) { return (uhci_device_esb_4); + } else if (device_id == PCI_UHCI_DEVICEID_ICH8_A) { + return (uhci_device_ich8_a); + } else if (device_id == PCI_UHCI_DEVICEID_ICH8_B) { + return (uhci_device_ich8_b); + } else if (device_id == PCI_UHCI_DEVICEID_ICH8_C) { + return (uhci_device_ich8_c); + } else if (device_id == PCI_UHCI_DEVICEID_ICH8_D) { + return (uhci_device_ich8_d); + } else if (device_id == PCI_UHCI_DEVICEID_ICH8_E) { + return (uhci_device_ich8_e); } else if (device_id == PCI_UHCI_DEVICEID_440MX) { return (uhci_device_440mx); } else if (device_id == PCI_UHCI_DEVICEID_460GX) { ==== //depot/projects/dtrace7/src/sys/i386/i386/vm_machdep.c#2 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/i386/i386/vm_machdep.c,v 1.283 2007/07/07 16:59:01 attilio Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/vm_machdep.c,v 1.283.2.1 2008/04/24 22:42:00 marcel Exp $"); #include "opt_isa.h" #include "opt_npx.h" @@ -361,7 +361,7 @@ } void -cpu_thread_setup(struct thread *td) +cpu_thread_alloc(struct thread *td) { td->td_pcb = (struct pcb *)(td->td_kstack + @@ -370,6 +370,13 @@ td->td_pcb->pcb_ext = NULL; } +void +cpu_thread_free(struct thread *td) +{ + + cpu_thread_clean(td); +} + /* * Initialize machine state (pcb and trap frame) for a new thread about to * upcall. Put enough state in the new thread's PCB to get it to go back ==== //depot/projects/dtrace7/src/sys/ia64/ia64/machdep.c#5 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/ia64/ia64/machdep.c,v 1.225.2.3 2008/03/30 09:19:07 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/ia64/ia64/machdep.c,v 1.225.2.4 2008/04/24 22:42:00 marcel Exp $"); #include "opt_compat.h" #include "opt_ddb.h" @@ -812,7 +812,7 @@ * and make proc0's trapframe pointer point to it for sanity. * Initialise proc0's backing store to start after u area. */ - cpu_thread_setup(&thread0); + cpu_thread_alloc(&thread0); thread0.td_frame->tf_flags = FRAME_SYSCALL; thread0.td_pcb->pcb_special.sp = (u_int64_t)thread0.td_frame - 16; ==== //depot/projects/dtrace7/src/sys/ia64/ia64/vm_machdep.c#2 (text+ko) ==== @@ -38,7 +38,7 @@ * * from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91 * Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$ - * $FreeBSD: src/sys/ia64/ia64/vm_machdep.c,v 1.94 2007/06/04 23:57:31 jeff Exp $ + * $FreeBSD: src/sys/ia64/ia64/vm_machdep.c,v 1.94.2.1 2008/04/24 22:42:00 marcel Exp $ */ /*- * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University. @@ -107,7 +107,7 @@ } void -cpu_thread_setup(struct thread *td) +cpu_thread_alloc(struct thread *td) { intptr_t sp; @@ -121,6 +121,13 @@ } void +cpu_thread_free(struct thread *td) +{ + + mtx_destroy(&td->td_md.md_highfp_mtx); +} + +void cpu_thread_swapin(struct thread *td) { } ==== //depot/projects/dtrace7/src/sys/kern/kern_thread.c#6 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/kern/kern_thread.c,v 1.255.2.3 2008/04/11 08:47:35 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_thread.c,v 1.255.2.4 2008/04/24 22:42:00 marcel Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -329,7 +329,7 @@ uma_zfree(thread_zone, td); return (NULL); } - cpu_thread_setup(td); + cpu_thread_alloc(td); return (td); } @@ -341,7 +341,7 @@ thread_free(struct thread *td) { - cpu_thread_clean(td); + cpu_thread_free(td); if (td->td_altkstack != 0) vm_thread_dispose_altkstack(td); if (td->td_kstack != 0) ==== //depot/projects/dtrace7/src/sys/net80211/ieee80211_radiotap.h#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/net80211/ieee80211_radiotap.h,v 1.10 2007/07/01 06:59:30 thompsa Exp $ */ +/* $FreeBSD: src/sys/net80211/ieee80211_radiotap.h,v 1.10.2.1 2008/04/25 05:28:47 sam Exp $ */ /* $NetBSD: ieee80211_radiotap.h,v 1.16 2007/01/06 05:51:15 dyoung Exp $ */ /*- @@ -194,22 +194,19 @@ }; #ifndef _KERNEL -/* Channel flags. */ -#define IEEE80211_CHAN_TURBO 0x00010 /* Turbo channel */ -#define IEEE80211_CHAN_CCK 0x00020 /* CCK channel */ -#define IEEE80211_CHAN_OFDM 0x00040 /* OFDM channel */ -#define IEEE80211_CHAN_2GHZ 0x00080 /* 2 GHz spectrum channel. */ -#define IEEE80211_CHAN_5GHZ 0x00100 /* 5 GHz spectrum channel */ -#define IEEE80211_CHAN_PASSIVE 0x00200 /* Only passive scan allowed */ -#define IEEE80211_CHAN_DYN 0x00400 /* Dynamic CCK-OFDM channel */ -#define IEEE80211_CHAN_GFSK 0x00800 /* GFSK channel (FHSS PHY) */ -#define IEEE80211_CHAN_GSM 0x01000 /* 900 MHz spectrum channel */ -#define IEEE80211_CHAN_STURBO 0x02000 /* 11a static turbo channel only */ -#define IEEE80211_CHAN_HALF 0x04000 /* Half rate channel */ -#define IEEE80211_CHAN_QUARTER 0x08000 /* Quarter rate channel */ -#define IEEE80211_CHAN_HT20 0x10000 /* HT 20 channel */ -#define IEEE80211_CHAN_HT40U 0x20000 /* HT 40 channel w/ ext above */ -#define IEEE80211_CHAN_HT40D 0x40000 /* HT 40 channel w/ ext below */ +/* channel attributes */ +#define IEEE80211_CHAN_TURBO 0x00000010 /* Turbo channel */ +#define IEEE80211_CHAN_CCK 0x00000020 /* CCK channel */ +#define IEEE80211_CHAN_OFDM 0x00000040 /* OFDM channel */ +#define IEEE80211_CHAN_2GHZ 0x00000080 /* 2 GHz spectrum channel. */ +#define IEEE80211_CHAN_5GHZ 0x00000100 /* 5 GHz spectrum channel */ +#define IEEE80211_CHAN_PASSIVE 0x00000200 /* Only passive scan allowed */ +#define IEEE80211_CHAN_DYN 0x00000400 /* Dynamic CCK-OFDM channel */ +#define IEEE80211_CHAN_GFSK 0x00000800 /* GFSK channel (FHSS PHY) */ +#define IEEE80211_CHAN_GSM 0x00001000 /* 900 MHz spectrum channel */ +#define IEEE80211_CHAN_STURBO 0x00002000 /* 11a static turbo channel only */ +#define IEEE80211_CHAN_HALF 0x00004000 /* Half rate channel */ +#define IEEE80211_CHAN_QUARTER 0x00008000 /* Quarter rate channel */ #endif /* !_KERNEL */ /* For IEEE80211_RADIOTAP_FLAGS */ ==== //depot/projects/dtrace7/src/sys/pci/if_xl.c#3 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/pci/if_xl.c,v 1.210.2.1 2008/03/13 07:50:48 yongari Exp $"); +__FBSDID("$FreeBSD: src/sys/pci/if_xl.c,v 1.210.2.2 2008/04/23 21:28:29 marius Exp $"); /* * 3Com 3c90x Etherlink XL PCI NIC driver @@ -163,7 +163,7 @@ /* * Various supported device vendors/types and their names. */ -static struct xl_type xl_devs[] = { +static const struct xl_type xl_devs[] = { { TC_VENDORID, TC_DEVICEID_BOOMERANG_10BT, "3Com 3c900-TPO Etherlink XL" }, { TC_VENDORID, TC_DEVICEID_BOOMERANG_10BT_COMBO, @@ -230,7 +230,7 @@ static int xl_newbuf(struct xl_softc *, struct xl_chain_onefrag *); static void xl_stats_update(void *); static void xl_stats_update_locked(struct xl_softc *); -static int xl_encap(struct xl_softc *, struct xl_chain *, struct mbuf *); +static int xl_encap(struct xl_softc *, struct xl_chain *, struct mbuf **); static void xl_rxeof(struct xl_softc *); static void xl_rxeof_task(void *, int); static int xl_rx_resync(struct xl_softc *); @@ -278,8 +278,6 @@ static void xl_choose_media(struct xl_softc *sc, int *media); static void xl_choose_xcvr(struct xl_softc *, int); static void xl_dma_map_addr(void *, bus_dma_segment_t *, int, int); -static void xl_dma_map_rxbuf(void *, bus_dma_segment_t *, int, bus_size_t, int); -static void xl_dma_map_txbuf(void *, bus_dma_segment_t *, int, bus_size_t, int); #ifdef notdef static void xl_testpacket(struct xl_softc *); #endif @@ -332,46 +330,6 @@ *paddr = segs->ds_addr; } -static void -xl_dma_map_rxbuf(void *arg, bus_dma_segment_t *segs, int nseg, - bus_size_t mapsize, int error) -{ - u_int32_t *paddr; - - if (error) - return; - - KASSERT(nseg == 1, ("xl_dma_map_rxbuf: too many DMA segments")); - paddr = arg; - *paddr = segs->ds_addr; -} - -static void -xl_dma_map_txbuf(void *arg, bus_dma_segment_t *segs, int nseg, - bus_size_t mapsize, int error) -{ - struct xl_list *l; - int i, total_len; - - if (error) - return; - - KASSERT(nseg <= XL_MAXFRAGS, ("too many DMA segments")); - - total_len = 0; - l = arg; - for (i = 0; i < nseg; i++) { - KASSERT(segs[i].ds_len <= MCLBYTES, ("segment size too large")); - l->xl_frag[i].xl_addr = htole32(segs[i].ds_addr); - l->xl_frag[i].xl_len = htole32(segs[i].ds_len); - total_len += segs[i].ds_len; - } - l->xl_frag[nseg - 1].xl_len = htole32(segs[nseg - 1].ds_len | - XL_LAST_FRAG); - l->xl_status = htole32(total_len); - l->xl_next = 0; -} - /* * Murphy's law says that it's possible the chip can wedge and * the 'command in progress' bit may never clear. Hence, we wait @@ -1052,7 +1010,7 @@ static int xl_probe(device_t dev) { - struct xl_type *t; + const struct xl_type *t; t = xl_devs; @@ -1226,7 +1184,7 @@ sc = device_get_softc(dev); sc->xl_dev = dev; - + unit = device_get_unit(dev); mtx_init(&sc->xl_mtx, device_get_nameunit(dev), MTX_NETWORK_LOCK, @@ -1890,8 +1848,8 @@ { struct mbuf *m_new = NULL; bus_dmamap_t map; - int error; - u_int32_t baddr; + bus_dma_segment_t segs[1]; + int error, nseg; XL_LOCK_ASSERT(sc); @@ -1904,14 +1862,16 @@ /* Force longword alignment for packet payload. */ m_adj(m_new, ETHER_ALIGN); - error = bus_dmamap_load_mbuf(sc->xl_mtag, sc->xl_tmpmap, m_new, - xl_dma_map_rxbuf, &baddr, BUS_DMA_NOWAIT); + error = bus_dmamap_load_mbuf_sg(sc->xl_mtag, sc->xl_tmpmap, m_new, + segs, &nseg, BUS_DMA_NOWAIT); if (error) { m_freem(m_new); device_printf(sc->xl_dev, "can't map mbuf (error %d)\n", error); return (error); } + KASSERT(nseg == 1, + ("%s: too many DMA segments (%d)", __func__, nseg)); bus_dmamap_unload(sc->xl_mtag, c->xl_map); map = c->xl_map; @@ -1920,7 +1880,7 @@ c->xl_mbuf = m_new; c->xl_ptr->xl_frag.xl_len = htole32(m_new->m_len | XL_LAST_FRAG); c->xl_ptr->xl_status = 0; - c->xl_ptr->xl_frag.xl_addr = htole32(baddr); + c->xl_ptr->xl_frag.xl_addr = htole32(segs->ds_addr); bus_dmamap_sync(sc->xl_mtag, c->xl_map, BUS_DMASYNC_PREREAD); return (0); } @@ -2174,7 +2134,6 @@ BUS_DMASYNC_POSTREAD); idx = sc->xl_cdata.xl_tx_cons; while (idx != sc->xl_cdata.xl_tx_prod) { - cur_tx = &sc->xl_cdata.xl_tx_chain[idx]; if (!(le32toh(cur_tx->xl_ptr->xl_status) & @@ -2465,26 +2424,21 @@ * pointers to the fragment pointers. */ static int -xl_encap(struct xl_softc *sc, struct xl_chain *c, struct mbuf *m_head) +xl_encap(struct xl_softc *sc, struct xl_chain *c, struct mbuf **m_head) { - int error; + struct mbuf *m_new; + struct ifnet *ifp = sc->xl_ifp; + int error, i, nseg, total_len; u_int32_t status; - struct ifnet *ifp = sc->xl_ifp; XL_LOCK_ASSERT(sc); - /* - * Start packing the mbufs in this chain into - * the fragment pointers. Stop when we run out - * of fragments or hit the end of the mbuf chain. - */ - error = bus_dmamap_load_mbuf(sc->xl_mtag, c->xl_map, m_head, - xl_dma_map_txbuf, c->xl_ptr, BUS_DMA_NOWAIT); + error = bus_dmamap_load_mbuf_sg(sc->xl_mtag, c->xl_map, *m_head, + sc->xl_cdata.xl_tx_segs, &nseg, BUS_DMA_NOWAIT); if (error && error != EFBIG) { - m_freem(m_head); if_printf(ifp, "can't map mbuf (error %d)\n", error); - return (1); + return (error); } /* @@ -2496,25 +2450,47 @@ * and would waste cycles. */ if (error) { - struct mbuf *m_new; - - m_new = m_defrag(m_head, M_DONTWAIT); + m_new = m_collapse(*m_head, M_DONTWAIT, XL_MAXFRAGS); if (m_new == NULL) { - m_freem(m_head); - return (1); - } else { - m_head = m_new; + m_freem(*m_head); + *m_head = NULL; + return (ENOBUFS); } + *m_head = m_new; - error = bus_dmamap_load_mbuf(sc->xl_mtag, c->xl_map, - m_head, xl_dma_map_txbuf, c->xl_ptr, BUS_DMA_NOWAIT); + error = bus_dmamap_load_mbuf_sg(sc->xl_mtag, c->xl_map, + *m_head, sc->xl_cdata.xl_tx_segs, &nseg, BUS_DMA_NOWAIT); if (error) { - m_freem(m_head); + m_freem(*m_head); + *m_head = NULL; if_printf(ifp, "can't map mbuf (error %d)\n", error); - return (1); + return (error); } } + KASSERT(nseg <= XL_MAXFRAGS, + ("%s: too many DMA segments (%d)", __func__, nseg)); + if (nseg == 0) { + m_freem(*m_head); + *m_head = NULL; + return (EIO); + } + + total_len = 0; + for (i = 0; i < nseg; i++) { + KASSERT(sc->xl_cdata.xl_tx_segs[i].ds_len <= MCLBYTES, + ("segment size too large")); + c->xl_ptr->xl_frag[i].xl_addr = + htole32(sc->xl_cdata.xl_tx_segs[i].ds_addr); + c->xl_ptr->xl_frag[i].xl_len = + htole32(sc->xl_cdata.xl_tx_segs[i].ds_len); + total_len += sc->xl_cdata.xl_tx_segs[i].ds_len; + } + c->xl_ptr->xl_frag[nseg - 1].xl_len = + htole32(sc->xl_cdata.xl_tx_segs[nseg - 1].ds_len | XL_LAST_FRAG); + c->xl_ptr->xl_status = htole32(total_len); + c->xl_ptr->xl_next = 0; + if (sc->xl_type == XL_TYPE_905B) { status = XL_TXSTAT_RND_DEFEAT; @@ -2531,7 +2507,7 @@ c->xl_ptr->xl_status = htole32(status); } - c->xl_mbuf = m_head; + c->xl_mbuf = *m_head; bus_dmamap_sync(sc->xl_mtag, c->xl_map, BUS_DMASYNC_PREWRITE); return (0); } @@ -2564,7 +2540,6 @@ struct xl_softc *sc = ifp->if_softc; struct mbuf *m_head = NULL; struct xl_chain *prev = NULL, *cur_tx = NULL, *start_tx; - struct xl_chain *prev_tx; u_int32_t status; int error; @@ -2585,20 +2560,23 @@ start_tx = sc->xl_cdata.xl_tx_free; - while (sc->xl_cdata.xl_tx_free != NULL) { + for (; !IFQ_DRV_IS_EMPTY(&ifp->if_snd) && + sc->xl_cdata.xl_tx_free != NULL;) { IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head); if (m_head == NULL) break; /* Pick a descriptor off the free list. */ - prev_tx = cur_tx; cur_tx = sc->xl_cdata.xl_tx_free; /* Pack the data into the descriptor. */ - error = xl_encap(sc, cur_tx, m_head); + error = xl_encap(sc, cur_tx, &m_head); if (error) { - cur_tx = prev_tx; - continue; + if (m_head == NULL) + break; + ifp->if_drv_flags |= IFF_DRV_OACTIVE; + IFQ_DRV_PREPEND(&ifp->if_snd, m_head); + break; } sc->xl_cdata.xl_tx_free = cur_tx->xl_next; @@ -2628,7 +2606,7 @@ * Place the request for the upload interrupt * in the last descriptor in the chain. This way, if * we're chaining several packets at once, we'll only - * get an interupt once for the whole chain rather than + * get an interrupt once for the whole chain rather than * once for each packet. */ cur_tx->xl_ptr->xl_status = htole32(le32toh(cur_tx->xl_ptr->xl_status) | @@ -2691,7 +2669,6 @@ struct xl_softc *sc = ifp->if_softc; struct mbuf *m_head = NULL; struct xl_chain *prev = NULL, *cur_tx = NULL, *start_tx; - struct xl_chain *prev_tx; int error, idx; XL_LOCK_ASSERT(sc); @@ -2702,8 +2679,8 @@ idx = sc->xl_cdata.xl_tx_prod; start_tx = &sc->xl_cdata.xl_tx_chain[idx]; - while (sc->xl_cdata.xl_tx_chain[idx].xl_mbuf == NULL) { - + for (; !IFQ_DRV_IS_EMPTY(&ifp->if_snd) && + sc->xl_cdata.xl_tx_chain[idx].xl_mbuf == NULL;) { if ((XL_TX_LIST_CNT - sc->xl_cdata.xl_tx_cnt) < 3) { ifp->if_drv_flags |= IFF_DRV_OACTIVE; break; @@ -2713,14 +2690,16 @@ if (m_head == NULL) break; - prev_tx = cur_tx; cur_tx = &sc->xl_cdata.xl_tx_chain[idx]; /* Pack the data into the descriptor. */ - error = xl_encap(sc, cur_tx, m_head); + error = xl_encap(sc, cur_tx, &m_head); if (error) { - cur_tx = prev_tx; - continue; + if (m_head == NULL) + break; + ifp->if_drv_flags |= IFF_DRV_OACTIVE; + IFQ_DRV_PREPEND(&ifp->if_snd, m_head); + break; } /* Chain it together. */ @@ -2748,7 +2727,7 @@ * Place the request for the upload interrupt * in the last descriptor in the chain. This way, if * we're chaining several packets at once, we'll only - * get an interupt once for the whole chain rather than + * get an interrupt once for the whole chain rather than * once for each packet. */ cur_tx->xl_ptr->xl_status = htole32(le32toh(cur_tx->xl_ptr->xl_status) | @@ -3027,10 +3006,8 @@ case IFM_10_2: case IFM_10_5: xl_setmode(sc, ifm->ifm_media); + XL_UNLOCK(sc); return (0); - break; - default: - break; } if (sc->xl_media & XL_MEDIAOPT_MII || @@ -3198,7 +3175,6 @@ ifp->if_capenable |= IFCAP_POLLING; XL_UNLOCK(sc); return (error); - } if (!(ifr->ifr_reqcap & IFCAP_POLLING) && ifp->if_capenable & IFCAP_POLLING) { ==== //depot/projects/dtrace7/src/sys/pci/if_xlreg.h#2 (text+ko) ==== @@ -29,7 +29,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/pci/if_xlreg.h,v 1.59 2006/12/06 02:18:41 marius Exp $ + * $FreeBSD: src/sys/pci/if_xlreg.h,v 1.59.2.1 2008/04/23 21:28:29 marius Exp $ */ #define XL_EE_READ 0x0080 /* read, 5 bit address */ @@ -486,6 +486,7 @@ struct xl_chain_data { struct xl_chain_onefrag xl_rx_chain[XL_RX_LIST_CNT]; struct xl_chain xl_tx_chain[XL_TX_LIST_CNT]; + bus_dma_segment_t xl_tx_segs[XL_MAXFRAGS]; struct xl_chain_onefrag *xl_rx_head; @@ -589,7 +590,7 @@ struct resource *xl_irq; struct resource *xl_res; device_t xl_miibus; - struct xl_type *xl_info; /* 3Com adapter info */ + const struct xl_type *xl_info; /* 3Com adapter info */ bus_dma_tag_t xl_mtag; bus_dmamap_t xl_tmpmap; /* spare DMA map */ u_int8_t xl_unit; /* interface number */ ==== //depot/projects/dtrace7/src/sys/powerpc/powerpc/vm_machdep.c#2 (text+ko) ==== @@ -38,7 +38,7 @@ * * from: @(#)vm_machdep.c 7.3 (Berkeley) 5/13/91 * Utah $Hdr: vm_machdep.c 1.16.1.1 89/06/23$ - * $FreeBSD: src/sys/powerpc/powerpc/vm_machdep.c,v 1.115 2007/06/06 06:01:56 grehan Exp $ + * $FreeBSD: src/sys/powerpc/powerpc/vm_machdep.c,v 1.115.2.1 2008/04/24 22:42:00 marcel Exp $ */ /*- * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University. @@ -277,7 +277,7 @@ } void -cpu_thread_setup(struct thread *td) +cpu_thread_alloc(struct thread *td) { struct pcb *pcb; @@ -288,6 +288,11 @@ } void +cpu_thread_free(struct thread *td) +{ +} + +void cpu_thread_swapin(struct thread *td) { } ==== //depot/projects/dtrace7/src/sys/sparc64/include/bus.h#2 (text+ko) ==== @@ -69,7 +69,7 @@ * and * from: FreeBSD: src/sys/alpha/include/bus.h,v 1.9 2001/01/09 * - * $FreeBSD: src/sys/sparc64/include/bus.h,v 1.41 2007/01/18 18:32:25 marius Exp $ + * $FreeBSD: src/sys/sparc64/include/bus.h,v 1.41.2.1 2008/04/23 21:25:16 marius Exp $ */ #ifndef _MACHINE_BUS_H_ @@ -96,8 +96,8 @@ #define PCI_MEMORY_BUS_SPACE 4 #define LAST_BUS_SPACE 5 -extern int bus_type_asi[]; -extern int bus_stream_asi[]; +extern const int bus_type_asi[]; +extern const int bus_stream_asi[]; #define __BUS_SPACE_HAS_STREAM_METHODS 1 ==== //depot/projects/dtrace7/src/sys/sparc64/sparc64/bus_machdep.c#2 (text+ko) ==== @@ -95,11 +95,11 @@ * from: @(#)machdep.c 8.6 (Berkeley) 1/14/94 * from: NetBSD: machdep.c,v 1.111 2001/09/15 07:13:40 eeh Exp * and - * from: FreeBSD: src/sys/i386/i386/busdma_machdep.c,v 1.24 2001/08/15 + * from: FreeBSD: src/sys/i386/i386/busdma_machdep.c,v 1.24 2001/08/15 */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/sparc64/sparc64/bus_machdep.c,v 1.46 2007/05/29 06:30:26 yongari Exp $"); +__FBSDID("$FreeBSD: src/sys/sparc64/sparc64/bus_machdep.c,v 1.46.2.1 2008/04/23 21:25:16 marius Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -130,8 +130,8 @@ static void nexus_bus_barrier(bus_space_tag_t, bus_space_handle_t, bus_size_t, bus_size_t, int); -/* ASI's for bus access. */ -int bus_type_asi[] = { +/* ASIs for bus access */ +const int bus_type_asi[] = { ASI_PHYS_BYPASS_EC_WITH_EBIT, /* nexus */ ASI_PHYS_BYPASS_EC_WITH_EBIT, /* SBus */ ASI_PHYS_BYPASS_EC_WITH_EBIT_L, /* PCI configuration space */ @@ -140,7 +140,7 @@ 0 }; -int bus_stream_asi[] = { +const int bus_stream_asi[] = { ASI_PHYS_BYPASS_EC_WITH_EBIT, /* nexus */ ASI_PHYS_BYPASS_EC_WITH_EBIT, /* SBus */ ASI_PHYS_BYPASS_EC_WITH_EBIT, /* PCI configuration space */ @@ -244,7 +244,7 @@ newtag->dt_segments = NULL; - /* Take into account any restrictions imposed by our parent tag */ + /* Take into account any restrictions imposed by our parent tag. */ newtag->dt_lowaddr = ulmin(parent->dt_lowaddr, newtag->dt_lowaddr); newtag->dt_highaddr = ulmax(parent->dt_highaddr, newtag->dt_highaddr); >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200804250647.m3P6lR4s089302>