Date: Thu, 11 Apr 2002 21:59:16 -0700 (PDT) From: John Baldwin <jhb@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 9595 for review Message-ID: <200204120459.g3C4xGd37672@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://people.freebsd.org/~peter/p4db/chv.cgi?CH=9595 Change 9595 by jhb@jhb_laptop on 2002/04/11 21:58:21 IFC. Affected files ... ... //depot/projects/smpng/sys/alpha/alpha/machdep.c#41 integrate ... //depot/projects/smpng/sys/alpha/pci/lca_pci.c#3 integrate ... //depot/projects/smpng/sys/boot/common/module.c#4 integrate ... //depot/projects/smpng/sys/boot/efi/libefi/efifs.c#6 integrate ... //depot/projects/smpng/sys/boot/i386/boot2/boot2.c#8 integrate ... //depot/projects/smpng/sys/compat/linux/linux_misc.c#19 integrate ... //depot/projects/smpng/sys/compat/svr4/svr4_sysvec.c#6 integrate ... //depot/projects/smpng/sys/conf/files.ia64#13 integrate ... //depot/projects/smpng/sys/conf/options.ia64#6 integrate ... //depot/projects/smpng/sys/ddb/db_ps.c#7 integrate ... //depot/projects/smpng/sys/dev/ata/ata-dma.c#19 integrate ... //depot/projects/smpng/sys/dev/ata/ata-pci.c#19 integrate ... //depot/projects/smpng/sys/dev/ata/ata-raid.c#12 integrate ... //depot/projects/smpng/sys/dev/ata/ata-raid.h#9 integrate ... //depot/projects/smpng/sys/dev/ciss/ciss.c#4 integrate ... //depot/projects/smpng/sys/dev/pccard/pccarddevs#14 integrate ... //depot/projects/smpng/sys/dev/pccard/pccarddevs.h#14 integrate ... //depot/projects/smpng/sys/dev/sound/pcm/feeder_fmt.c#3 integrate ... //depot/projects/smpng/sys/dev/usb/umass.c#14 integrate ... //depot/projects/smpng/sys/dev/wi/if_wavelan_ieee.h#7 integrate ... //depot/projects/smpng/sys/dev/wi/if_wi.c#31 integrate ... //depot/projects/smpng/sys/dev/wi/if_wi_pccard.c#4 integrate ... //depot/projects/smpng/sys/dev/wi/if_wi_pci.c#3 integrate ... //depot/projects/smpng/sys/dev/wi/if_wireg.h#13 integrate ... //depot/projects/smpng/sys/dev/wi/if_wivar.h#4 integrate ... //depot/projects/smpng/sys/dev/wi/wi_hostap.c#1 branch ... //depot/projects/smpng/sys/dev/wi/wi_hostap.h#1 branch ... //depot/projects/smpng/sys/i386/i386/machdep.c#36 integrate ... //depot/projects/smpng/sys/i386/include/cpufunc.h#14 integrate ... //depot/projects/smpng/sys/ia64/ia32/Makefile#1 branch ... //depot/projects/smpng/sys/ia64/ia32/ia32_proto.h#1 branch ... //depot/projects/smpng/sys/ia64/ia32/ia32_syscall.h#1 branch ... //depot/projects/smpng/sys/ia64/ia32/ia32_sysent.c#1 branch ... //depot/projects/smpng/sys/ia64/ia32/imgact_ia32.c#1 branch ... //depot/projects/smpng/sys/ia64/ia32/imgact_ia32.h#1 branch ... //depot/projects/smpng/sys/ia64/ia32/syscalls.conf#1 branch ... //depot/projects/smpng/sys/ia64/ia32/syscalls.master#1 branch ... //depot/projects/smpng/sys/ia64/ia64/support.s#8 integrate ... //depot/projects/smpng/sys/ia64/ia64/swtch.s#8 integrate ... //depot/projects/smpng/sys/ia64/ia64/trap.c#27 integrate ... //depot/projects/smpng/sys/ia64/include/ia64_cpu.h#8 integrate ... //depot/projects/smpng/sys/ia64/include/pcb.h#3 integrate ... //depot/projects/smpng/sys/ia64/include/signal.h#3 integrate ... //depot/projects/smpng/sys/kern/init_sysent.c#11 integrate ... //depot/projects/smpng/sys/kern/kern_intr.c#17 integrate ... //depot/projects/smpng/sys/kern/syscalls.c#11 integrate ... //depot/projects/smpng/sys/kern/syscalls.master#10 integrate ... //depot/projects/smpng/sys/kern/uipc_mbuf.c#5 integrate ... //depot/projects/smpng/sys/libkern/bsearch.c#4 integrate ... //depot/projects/smpng/sys/net/if_ef.c#4 integrate ... //depot/projects/smpng/sys/net/if_ieee80211.h#2 integrate ... //depot/projects/smpng/sys/netinet/in.h#11 integrate ... //depot/projects/smpng/sys/netinet/ip_ecn.c#2 integrate ... //depot/projects/smpng/sys/netinet/tcp_input.c#15 integrate ... //depot/projects/smpng/sys/netinet/tcp_subr.c#18 integrate ... //depot/projects/smpng/sys/pc98/i386/machdep.c#32 integrate ... //depot/projects/smpng/sys/pci/if_rl.c#10 integrate ... //depot/projects/smpng/sys/pci/if_rlreg.h#4 integrate ... //depot/projects/smpng/sys/security/lomac/kernel_log.c#4 integrate ... //depot/projects/smpng/sys/sys/syscall.h#11 integrate ... //depot/projects/smpng/sys/sys/syscall.mk#11 integrate ... //depot/projects/smpng/sys/sys/sysproto.h#13 integrate Differences ... ==== //depot/projects/smpng/sys/alpha/alpha/machdep.c#41 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.176 2002/04/09 11:18:26 phk Exp $ + * $FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.177 2002/04/11 17:13:08 alc Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -1408,6 +1408,8 @@ * context left by sendsig. Check carefully to * make sure that the user has not modified the * state to gain improper privileges. + * + * MPSAFE */ int osigreturn(struct thread *td, ==== //depot/projects/smpng/sys/alpha/pci/lca_pci.c#3 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/alpha/pci/lca_pci.c,v 1.13 2002/02/28 18:18:41 gallatin Exp $ + * $FreeBSD: src/sys/alpha/pci/lca_pci.c,v 1.14 2002/04/11 13:24:20 ticso Exp $ */ #include <sys/param.h> @@ -104,7 +104,7 @@ static int lca_pcib_maxslots(device_t dev) { - return 31; + return 15; } #define LCA_CFGOFF(b, s, f, r) \ ==== //depot/projects/smpng/sys/boot/common/module.c#4 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/boot/common/module.c,v 1.22 2001/11/16 21:08:40 iedowse Exp $ + * $FreeBSD: src/sys/boot/common/module.c,v 1.23 2002/04/11 10:00:44 peter Exp $ */ /* @@ -937,6 +937,8 @@ mdp->d_flags = 0; STAILQ_INSERT_TAIL(&moduledir_list, mdp, d_link); } + if (*ep == 0) + break; } /* * Delete unused directories if any ==== //depot/projects/smpng/sys/boot/efi/libefi/efifs.c#6 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/boot/efi/libefi/efifs.c,v 1.5 2002/03/30 01:36:03 marcel Exp $ + * $FreeBSD: src/sys/boot/efi/libefi/efifs.c,v 1.6 2002/04/11 09:50:11 peter Exp $ */ #include <sys/param.h> @@ -233,6 +233,8 @@ sb->st_mode = S_IRUSR | S_IWUSR; if (info->Attribute & EFI_FILE_DIRECTORY) sb->st_mode |= S_IFDIR; + else + sb->st_mode |= S_IFREG; sb->st_size = info->FileSize; free(buf); ==== //depot/projects/smpng/sys/boot/i386/boot2/boot2.c#8 (text+ko) ==== @@ -14,7 +14,7 @@ */ /* - * $FreeBSD: src/sys/boot/i386/boot2/boot2.c,v 1.38 2002/03/23 19:40:27 pb Exp $ + * $FreeBSD: src/sys/boot/i386/boot2/boot2.c,v 1.39 2002/04/11 09:21:10 pb Exp $ */ #include <sys/param.h> @@ -37,6 +37,11 @@ #include "boot2.h" #include "lib.h" +#define IO_KEYBOARD 1 +#define IO_SERIAL 2 + +#define SECOND 18 /* Circa that many ticks in a second. */ + #define RBX_ASKNAME 0x0 /* -a */ #define RBX_SINGLE 0x1 /* -s */ #define RBX_DFLTROOT 0x5 /* -r */ @@ -138,7 +143,7 @@ static struct bootinfo bootinfo; static int ls; static uint32_t fs_off; -static uint8_t ioctrl = 0x1; +static uint8_t ioctrl = IO_KEYBOARD; void exit(int); static void load(const char *); @@ -281,34 +286,43 @@ bootinfo.bi_memsizes_valid++; for (i = 0; i < N_BIOS_GEOM; i++) bootinfo.bi_bios_geom[i] = drvinfo(i); - autoboot = 2; + + /* Process configuration file */ + + autoboot = 1; readfile(PATH_CONFIG, cmd, sizeof(cmd)); if (*cmd) { printf("%s: %s", PATH_CONFIG, cmd); if (parse(cmd)) autoboot = 0; + /* Do not process this command twice */ *cmd = 0; } + + /* + * Try to exec stage 3 boot loader. If interrupted by a keypress, + * or in case of failure, try to load a kernel directly instead. + */ + if (autoboot && !*kname) { - if (autoboot == 2) { - memcpy(kname, PATH_BOOT3, sizeof(PATH_BOOT3)); - if (!keyhit(0x37)) { - load(kname); - autoboot = 1; - } + memcpy(kname, PATH_BOOT3, sizeof(PATH_BOOT3)); + if (!keyhit(3*SECOND)) { + load(kname); + memcpy(kname, PATH_KERNEL, sizeof(PATH_KERNEL)); } - if (autoboot == 1) - memcpy(kname, PATH_KERNEL, sizeof(PATH_KERNEL)); } + + /* Present the user with the boot2 prompt. */ + for (;;) { printf(" \n>> FreeBSD/i386 BOOT\n" "Default: %u:%s(%u,%c)%s\n" "boot: ", dsk.drive & DRV_MASK, dev_nm[dsk.type], dsk.unit, 'a' + dsk.part, kname); - if (ioctrl & 0x2) + if (ioctrl & IO_SERIAL) sio_flush(); - if (!autoboot || keyhit(0x5a)) + if (!autoboot || keyhit(5*SECOND)) getstr(cmd, sizeof(cmd)); else putchar('\n'); @@ -447,9 +461,9 @@ opts |= 1 << RBX_DUAL | 1 << RBX_SERIAL; opts &= ~(1 << RBX_PROBEKBD); } - ioctrl = opts & 1 << RBX_DUAL ? 0x3 : - opts & 1 << RBX_SERIAL ? 0x2 : 0x1; - if (ioctrl & 0x2) + ioctrl = opts & 1 << RBX_DUAL ? (IO_SERIAL|IO_KEYBOARD) : + opts & 1 << RBX_SERIAL ? IO_SERIAL : IO_KEYBOARD; + if (ioctrl & IO_SERIAL) sio_init(); } else { for (q = arg--; *q && *q != '('; q++); @@ -794,9 +808,9 @@ static int xputc(int c) { - if (ioctrl & 0x1) + if (ioctrl & IO_KEYBOARD) putc(c); - if (ioctrl & 0x2) + if (ioctrl & IO_SERIAL) sio_putc(c); return c; } @@ -807,9 +821,9 @@ if (opts & 1 << RBX_NOINTR) return 0; for (;;) { - if (ioctrl & 0x1 && getc(1)) + if (ioctrl & IO_KEYBOARD && getc(1)) return fn ? 1 : getc(0); - if (ioctrl & 0x2 && sio_ischar()) + if (ioctrl & IO_SERIAL && sio_ischar()) return fn ? 1 : sio_getc(); if (fn) return 0; ==== //depot/projects/smpng/sys/compat/linux/linux_misc.c#19 (text+ko) ==== @@ -25,7 +25,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/compat/linux/linux_misc.c,v 1.117 2002/04/01 21:30:29 jhb Exp $ + * $FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.118 2002/04/11 21:00:05 jhb Exp $ */ #include "opt_compat.h" ==== //depot/projects/smpng/sys/compat/svr4/svr4_sysvec.c#6 (text+ko) ==== @@ -27,7 +27,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/compat/svr4/svr4_sysvec.c,v 1.23 2002/02/27 18:31:42 jhb Exp $ + * $FreeBSD: src/sys/compat/svr4/svr4_sysvec.c,v 1.24 2002/04/11 21:00:38 jhb Exp $ */ /* XXX we use functions that might not exist. */ ==== //depot/projects/smpng/sys/conf/files.ia64#13 (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.ia64,v 1.29 2002/04/03 04:42:14 marcel Exp $ +# $FreeBSD: src/sys/conf/files.ia64,v 1.30 2002/04/10 19:35:50 dfr Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -22,6 +22,8 @@ ia64/acpica/acpi_wakeup.c optional acpica ia64/acpica/OsdEnvironment.c optional acpica ia64/acpica/madt.c optional acpica +ia64/ia32/ia32_sysent.c optional ia32 +ia64/ia32/imgact_ia32.c optional ia32 ia64/ia64/ia64-gdbstub.c optional ddb ia64/ia64/ia64dump.c standard ia64/ia64/autoconf.c standard ==== //depot/projects/smpng/sys/conf/options.ia64#6 (text+ko) ==== @@ -1,8 +1,10 @@ -# $FreeBSD: src/sys/conf/options.ia64,v 1.8 2001/09/29 11:46:22 dfr Exp $ +# $FreeBSD: src/sys/conf/options.ia64,v 1.9 2002/04/10 19:35:50 dfr Exp $ # Options specific to the ia64 platform kernels ITANIUM opt_global.h +IA32 opt_ia32.h + PAGE_SIZE_4K opt_global.h PAGE_SIZE_8K opt_global.h PAGE_SIZE_16K opt_global.h ==== //depot/projects/smpng/sys/ddb/db_ps.c#7 (text+ko) ==== @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/ddb/db_ps.c,v 1.27 2002/02/07 20:58:43 julian Exp $ + * $FreeBSD: src/sys/ddb/db_ps.c,v 1.28 2002/04/11 21:01:34 jhb Exp $ */ #include <sys/param.h> #include <sys/systm.h> ==== //depot/projects/smpng/sys/dev/ata/ata-dma.c#19 (text+ko) ==== @@ -25,7 +25,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-dma.c,v 1.94 2002/04/07 07:53:34 sos Exp $ + * $FreeBSD: src/sys/dev/ata/ata-dma.c,v 1.95 2002/04/11 11:04:23 sos Exp $ */ #include <sys/param.h> @@ -970,6 +970,7 @@ case 0x4d69105a: /* Promise TX2 ATA133 controllers */ case 0x5275105a: /* Promise TX2 ATA133 controllers */ + case 0x6269105a: /* Promise TX2 ATA133 controllers */ ATA_OUTB(atadev->channel->r_bmio, ATA_BMDEVSPEC_0, 0x0b); if (udmamode >= 6 && !(ATA_INB(atadev->channel->r_bmio, ATA_BMDEVSPEC_1) & 0x04)) { ==== //depot/projects/smpng/sys/dev/ata/ata-pci.c#19 (text+ko) ==== @@ -25,7 +25,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.c,v 1.39 2002/04/07 07:53:34 sos Exp $ + * $FreeBSD: src/sys/dev/ata/ata-pci.c,v 1.40 2002/04/11 11:04:23 sos Exp $ */ #include "opt_ata.h" @@ -270,6 +270,7 @@ case 0x4d69105a: case 0x5275105a: + case 0x6269105a: return "Promise TX2 ATA133 controller"; case 0x00041103: @@ -572,6 +573,7 @@ case 0x6268105a: /* Promise TX2 ATA100 */ case 0x4d69105a: /* Promise TX2 ATA133 */ case 0x5275105a: /* Promise TX2 ATA133 */ + case 0x6269105a: /* Promise TX2 ATA133 */ ATA_OUTB(ch->r_bmio, ATA_BMDEVSPEC_0, 0x0b); if (!(ATA_INB(ch->r_bmio, ATA_BMDEVSPEC_1) & 0x20)) return 1; ==== //depot/projects/smpng/sys/dev/ata/ata-raid.c#12 (text+ko) ==== @@ -25,7 +25,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-raid.c,v 1.45 2002/04/10 11:18:07 sos Exp $ + * $FreeBSD: src/sys/dev/ata/ata-raid.c,v 1.46 2002/04/11 11:04:23 sos Exp $ */ #include "opt_ata.h" @@ -122,6 +122,7 @@ switch(adp->device->channel->chiptype) { case 0x4d33105a: case 0x4d38105a: case 0x4d30105a: case 0x0d30105a: case 0x4d68105a: case 0x6268105a: + case 0x6269105a: /* test RAID bit in PCI reg XXX */ return (ar_promise_read_conf(adp, ar_table, 0)); ==== //depot/projects/smpng/sys/dev/ata/ata-raid.h#9 (text+ko) ==== @@ -25,7 +25,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-raid.h,v 1.17 2002/04/02 13:47:23 sos Exp $ + * $FreeBSD: src/sys/dev/ata/ata-raid.h,v 1.18 2002/04/11 08:52:32 sos Exp $ */ /* misc defines */ @@ -158,8 +158,8 @@ u_int32_t dummy_0; u_int64_t magic_0; -#define PR_MAGIC0(x) ((u_int64_t)x.device->channel->unit << 48) | \ - ((u_int64_t)(x.device->unit != 0) << 56) +#define PR_MAGIC0(x) (x.device ? ((u_int64_t)x.device->channel->unit<<48) | \ + ((u_int64_t)(x.device->unit != 0) << 56) : 0) u_int16_t magic_1; u_int32_t magic_2; u_int8_t filler1[470]; ==== //depot/projects/smpng/sys/dev/ciss/ciss.c#4 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/ciss/ciss.c,v 1.3 2001/12/18 08:01:48 peter Exp $ + * $FreeBSD: src/sys/dev/ciss/ciss.c,v 1.4 2002/04/11 09:28:09 ps Exp $ */ /* @@ -1999,8 +1999,9 @@ * Create a SIM. */ if ((sc->ciss_cam_sim = cam_sim_alloc(ciss_cam_action, ciss_cam_poll, "ciss", sc, - device_get_unit(sc->ciss_dev), 1, + device_get_unit(sc->ciss_dev), sc->ciss_cfg->max_outstanding_commands, + 1, sc->ciss_cam_devq)) == NULL) { ciss_printf(sc, "can't allocate CAM SIM\n"); return(ENOMEM); ==== //depot/projects/smpng/sys/dev/pccard/pccarddevs#14 (text+ko) ==== @@ -1,4 +1,4 @@ -$FreeBSD: src/sys/dev/pccard/pccarddevs,v 1.31 2002/04/05 16:25:03 imp Exp $ +$FreeBSD: src/sys/dev/pccard/pccarddevs,v 1.32 2002/04/11 21:18:17 imp Exp $ /* $NetBSD: pcmciadevs,v 1.163 2002/03/04 16:41:50 martin Exp $ */ /* $OpenBSD: pcmciadevs,v 1.85 2002/03/29 18:54:07 millert Exp $ */ @@ -90,6 +90,7 @@ vendor NWN 0x0602 No Wires Needed vendor BREEZECOM 0x0a02 BreezeCOM vendor NEWMEDIA2 0x10cd NewMedia +vendor ACTIONTEC 0x1668 ACTIONTEC vendor LASAT 0x3401 Lasat Communications A/S vendor BONDWELL 0x3b01 Bondwell vendor LEXARMEDIA 0x4e01 Lexar Media @@ -127,6 +128,9 @@ product 3COM 3C1 0x0cf1 3Com Megahertz 3C1 10Mbps LAN CF+ Card product 3COM 3CRWE62092A 0x2092 3Com 3CRWE62092A Wireless LAN +/* ACTIONTEC */ +product ACTIONTEC HWC01170 0x0101 ACTIONTEC Wireless LAN PC CARD + /* Adaptec Products */ product ADAPTEC APA1460 0x0001 Adaptec APA-1460 SlimSCSI product ADAPTEC APA1460A 0x0002 Adaptec APA-1460A SlimSCSI ==== //depot/projects/smpng/sys/dev/pccard/pccarddevs.h#14 (text+ko) ==== @@ -1,10 +1,10 @@ -/* $FreeBSD: src/sys/dev/pccard/pccarddevs.h,v 1.31 2002/04/05 16:25:34 imp Exp $ */ +/* $FreeBSD: src/sys/dev/pccard/pccarddevs.h,v 1.32 2002/04/11 21:19:04 imp Exp $ */ /* * THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT. * * generated from: - * FreeBSD: src/sys/dev/pccard/pccarddevs,v 1.31 2002/04/05 16:25:03 imp Exp + * FreeBSD: src/sys/dev/pccard/pccarddevs,v 1.32 2002/04/11 21:18:17 imp Exp */ /* $NetBSD: pcmciadevs,v 1.163 2002/03/04 16:41:50 martin Exp $ */ /* $OpenBSD: pcmciadevs,v 1.85 2002/03/29 18:54:07 millert Exp $ */ @@ -97,6 +97,7 @@ #define PCMCIA_VENDOR_NWN 0x0602 /* No Wires Needed */ #define PCMCIA_VENDOR_BREEZECOM 0x0a02 /* BreezeCOM */ #define PCMCIA_VENDOR_NEWMEDIA2 0x10cd /* NewMedia */ +#define PCMCIA_VENDOR_ACTIONTEC 0x1668 /* ACTIONTEC */ #define PCMCIA_VENDOR_LASAT 0x3401 /* Lasat Communications A/S */ #define PCMCIA_VENDOR_BONDWELL 0x3b01 /* Bondwell */ #define PCMCIA_VENDOR_LEXARMEDIA 0x4e01 /* Lexar Media */ @@ -156,6 +157,11 @@ #define PCMCIA_PRODUCT_3COM_3CRWE62092A 0x2092 #define PCMCIA_STR_3COM_3CRWE62092A "3Com 3CRWE62092A Wireless LAN" +/* ACTIONTEC */ +#define PCMCIA_CIS_ACTIONTEC_HWC01170 { NULL, NULL, NULL, NULL } +#define PCMCIA_PRODUCT_ACTIONTEC_HWC01170 0x0101 +#define PCMCIA_STR_ACTIONTEC_HWC01170 "ACTIONTEC Wireless LAN PC CARD" + /* Adaptec Products */ #define PCMCIA_CIS_ADAPTEC_APA1460 { NULL, NULL, NULL, NULL } #define PCMCIA_PRODUCT_ADAPTEC_APA1460 0x0001 ==== //depot/projects/smpng/sys/dev/sound/pcm/feeder_fmt.c#3 (text+ko) ==== @@ -28,7 +28,7 @@ #include "feeder_if.h" -SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pcm/feeder_fmt.c,v 1.6 2001/08/23 11:30:52 cg Exp $"); +SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pcm/feeder_fmt.c,v 1.7 2002/04/11 15:31:01 jhb Exp $"); MALLOC_DEFINE(M_FMTFEEDER, "fmtfeed", "pcm format feeder"); @@ -446,7 +446,7 @@ feed_sign(struct pcm_feeder *f, struct pcm_channel *c, u_int8_t *b, u_int32_t count, void *source) { int i = 0, j = FEEDER_FEED(f->source, c, b, count, source); - int ssz = (int)f->data, ofs = ssz - 1; + intptr_t ssz = (intptr_t)f->data, ofs = ssz - 1; while (i < j) { b[i + ofs] ^= 0x80; ==== //depot/projects/smpng/sys/dev/usb/umass.c#14 (text+ko) ==== @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/usb/umass.c,v 1.58 2002/04/10 13:22:12 n_hibma Exp $ + * $FreeBSD: src/sys/dev/usb/umass.c,v 1.60 2002/04/11 21:09:41 jhb Exp $ * $NetBSD: umass.c,v 1.28 2000/04/02 23:46:53 augustss Exp $ */ @@ -517,7 +517,7 @@ Static void umass_cam_rescan_callback (struct cam_periph *periph,union ccb *ccb); -Static void umass_cam_rescan (struct umass_softc *sc); +Static void umass_cam_rescan (void *addr); Static int umass_cam_attach_sim (void); Static int umass_cam_attach (struct umass_softc *sc); @@ -2097,8 +2097,15 @@ } Static void -umass_cam_rescan(struct umass_softc *sc) +umass_cam_rescan(void *addr) { + /* Note: The sc is only passed in for debugging prints. If the device + * is disconnected before umass_cam_rescan has been able to run the + * driver might bomb. + */ +#ifdef UMASS_DEBUG + struct umass_softc *sc = (struct umass_softc *) addr; +#endif struct cam_path *path; union ccb *ccb = malloc(sizeof(union ccb), M_USBDEV, M_WAITOK); @@ -2155,7 +2162,11 @@ * after booting has completed, when interrupts have been * enabled. */ - umass_cam_rescan(sc); + + /* XXX This will bomb if the driver is unloaded between attach + * and execution of umass_cam_rescan. + */ + timeout(umass_cam_rescan, sc, MS_TO_TICKS(200)); } return(0); /* always succesfull */ ==== //depot/projects/smpng/sys/dev/wi/if_wavelan_ieee.h#7 (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/dev/wi/if_wavelan_ieee.h,v 1.11 2002/04/04 06:28:16 imp Exp $ + * $FreeBSD: src/sys/dev/wi/if_wavelan_ieee.h,v 1.12 2002/04/11 07:21:16 imp Exp $ */ #ifndef _IF_WAVELAN_IEEE_H @@ -50,6 +50,7 @@ #ifndef SIOCGWAVELAN #define SIOCGWAVELAN SIOCGIFGENERIC #endif +#define WI_RID_MONITOR_MODE 0x0500 /* * Technically I don't think there's a limit to a record @@ -113,6 +114,13 @@ #define WI_STYPE_MGMT_AUTH 0x00B0 /* authentication */ #define WI_STYPE_MGMT_DEAUTH 0x00C0 /* deauthentication */ +#define WI_STYPE_CTL_PSPOLL 0x00A0 +#define WI_STYPE_CTL_RTS 0x00B0 +#define WI_STYPE_CTL_CTS 0x00C0 +#define WI_STYPE_CTL_ACK 0x00D0 +#define WI_STYPE_CTL_CFEND 0x00E0 +#define WI_STYPE_CTL_CFENDACK 0x00F0 + struct wi_mgmt_hdr { u_int16_t frame_ctl; u_int16_t duration; @@ -209,7 +217,7 @@ #define IV_EVERY100_FRAME 0x60 /* every 100 frame IV reuse */ #define HOST_DECRYPT 0x80 #define WI_RID_WEP_MAPTABLE 0xFC29 -#define WI_RID_AUTH_CNTL 0xFC2A +#define WI_RID_CNFAUTHMODE 0xFC2A #define WI_RID_ROAMING_MODE 0xFC2D #define WI_RID_BASIC_RATE 0xFCB3 #define WI_RID_SUPPORT_RATE 0xFCB4 @@ -221,7 +229,11 @@ #define WI_RID_CREATE_IBSS 0xFC81 /* create IBSS */ #define WI_RID_FRAG_THRESH 0xFC82 /* frag len, unicast msg xmit */ #define WI_RID_RTS_THRESH 0xFC83 /* frame len for RTS/CTS handshake */ -#define WI_RID_TX_RATE 0xFC84 /* data rate for message xmit */ +#define WI_RID_TX_RATE 0xFC84 /* data rate for message xmit + * 0 == Fixed 1mbps + * 1 == Fixed 2mbps + * 2 == auto fallback + */ #define WI_RID_PROMISC 0xFC85 /* enable promisc mode */ #define WI_RID_FRAG_THRESH0 0xFC90 #define WI_RID_FRAG_THRESH1 0xFC91 ==== //depot/projects/smpng/sys/dev/wi/if_wi.c#31 (text+ko) ==== @@ -95,12 +95,16 @@ #include <net/bpf.h> #include <dev/wi/if_wavelan_ieee.h> +#ifdef WI_HOSTAP +#include <dev/wi/wi_hostap.h> +#include <sys/random.h> +#endif #include <dev/wi/if_wivar.h> #include <dev/wi/if_wireg.h> #if !defined(lint) static const char rcsid[] = - "$FreeBSD: src/sys/dev/wi/if_wi.c,v 1.93 2002/04/04 22:22:31 imp Exp $"; + "$FreeBSD: src/sys/dev/wi/if_wi.c,v 1.96 2002/04/12 03:42:37 imp Exp $"; #endif static void wi_intr(void *); @@ -124,7 +128,6 @@ static int wi_alloc_nicmem(struct wi_softc *, int, int *); static void wi_inquire(void *); static void wi_setdef(struct wi_softc *, struct wi_req *); -static int wi_mgmt_xmit(struct wi_softc *, caddr_t, int); #ifdef WICACHE static @@ -214,6 +217,7 @@ struct ifnet *ifp; int error; + /* XXX maybe we need the splimp stuff here XXX */ sc = device_get_softc(dev); ifp = &sc->arpcom.ac_if; @@ -290,6 +294,7 @@ sc->wi_max_sleep = WI_DEFAULT_MAX_SLEEP; sc->wi_roaming = WI_DEFAULT_ROAMING; sc->wi_authtype = WI_DEFAULT_AUTHTYPE; + sc->wi_authmode = IEEE80211_AUTH_OPEN; /* * Read the default channel from the NIC. This may vary @@ -311,11 +316,18 @@ sc->wi_has_wep = gen.wi_val; if (bootverbose) { - device_printf(sc->dev, - "%s:wi_has_wep = %d\n", - __func__, sc->wi_has_wep); + device_printf(sc->dev, "%s:wi_has_wep = %d\n", + __func__, sc->wi_has_wep); } + /* + * Find supported rates. + */ + gen.wi_type = WI_RID_TX_RATE; + gen.wi_len = 2; + wi_read_record(sc, &gen); + sc->wi_supprates = gen.wi_val; + bzero((char *)&sc->wi_stats, sizeof(sc->wi_stats)); wi_init(sc); @@ -339,6 +351,20 @@ ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_AUTO, IFM_IEEE80211_ADHOC, 0), 0); ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_AUTO, 0, 0), 0); +#ifdef IFM_IEEE80211_HOSTAP + if (sc->sc_firmware_type == WI_INTERSIL) { + ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_IEEE80211_DS1, + IFM_IEEE80211_HOSTAP, 0), 0); + ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_IEEE80211_DS2, + IFM_IEEE80211_HOSTAP, 0), 0); + ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_IEEE80211_DS5, + IFM_IEEE80211_HOSTAP, 0), 0); + ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_IEEE80211_DS11, + IFM_IEEE80211_HOSTAP, 0), 0); + ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_AUTO, + IFM_IEEE80211_HOSTAP, 0), 0); + } +#endif #undef ADD ifmedia_set(&sc->ifmedia, IFM_MAKEWORD(IFM_IEEE80211, IFM_AUTO, 0, 0)); @@ -587,6 +613,38 @@ eh = mtod(m, struct ether_header *); m->m_pkthdr.rcvif = ifp; +#ifdef WI_HOSTAP + if (rx_frame.wi_status == WI_STAT_MGMT && + sc->wi_ptype == WI_PORTTYPE_AP) { + if ((WI_802_11_OFFSET_RAW + rx_frame.wi_dat_len + 2) > + MCLBYTES) { + device_printf(sc->dev, "oversized mgmt packet " + "received in hostap mode " + "(wi_dat_len=%d, wi_status=0x%x)\n", + rx_frame.wi_dat_len, rx_frame.wi_status); + m_freem(m); + ifp->if_ierrors++; + return; + } + + /* Put the whole header in there. */ + bcopy(&rx_frame, mtod(m, void *), + sizeof(struct wi_frame)); + if (wi_read_data(sc, id, WI_802_11_OFFSET_RAW, + mtod(m, caddr_t) + WI_802_11_OFFSET_RAW, + rx_frame.wi_dat_len + 2)) { + m_freem(m); + ifp->if_ierrors++; + return; + } + m->m_pkthdr.len = m->m_len = + WI_802_11_OFFSET_RAW + rx_frame.wi_dat_len; + /* XXX: consider giving packet to bhp? */ + wihap_mgmt_input(sc, &rx_frame, m); + return; + } +#endif /* WI_HOSTAP */ + if (rx_frame.wi_status == WI_STAT_1042 || rx_frame.wi_status == WI_STAT_TUNNEL || rx_frame.wi_status == WI_STAT_WMP_MSG) { @@ -653,6 +711,18 @@ ifp->if_ipackets++; +#ifdef WI_HOSTAP + if (sc->wi_ptype == WI_PORTTYPE_AP) { + /* + * Give host AP code first crack at data + * packets. If it decides to handle it (or + * drop it), it will return a non-zero. + * Otherwise, it is destined for this host. + */ + if (wihap_data_input(sc, &rx_frame, m)) + return; + } +#endif /* Receive packet. */ m_adj(m, sizeof(struct ether_header)); #ifdef WICACHE @@ -688,6 +758,7 @@ { struct wi_softc *sc; struct ifnet *ifp; + int s; sc = xsc; ifp = &sc->arpcom.ac_if; @@ -698,7 +769,9 @@ if (ifp->if_flags & IFF_OACTIVE) return; + s = splimp(); wi_cmd(sc, WI_CMD_INQUIRE, WI_INFO_COUNTERS, 0, 0); + splx(s); return; } @@ -887,7 +960,7 @@ wi_reset(sc) struct wi_softc *sc; { -#define WI_INIT_TRIES 5 +#define WI_INIT_TRIES 3 int i; int tries; @@ -904,8 +977,12 @@ break; DELAY(WI_DELAY * 1000); } - if (i == WI_INIT_TRIES) + sc->sc_enabled = 1; + + if (i == tries) { device_printf(sc->dev, "init failed\n"); + return; + } CSR_WRITE_2(sc, WI_INT_EN, 0); CSR_WRITE_2(sc, WI_EVENT_ACK, 0xFFFF); @@ -913,8 +990,6 @@ /* Calibrate timer. */ WI_SETVAL(WI_RID_TICK_TIME, 8); - sc->sc_enabled = 1; - return; } @@ -1000,7 +1075,7 @@ oltv->wi_len = 2; oltv->wi_val = ltv->wi_val; break; - case WI_RID_AUTH_CNTL: + case WI_RID_CNFAUTHMODE: oltv->wi_len = 2; if (le16toh(ltv->wi_val) & 0x01) oltv->wi_val = htole16(1); @@ -1045,10 +1120,18 @@ case WI_RID_ENCRYPTION: p2ltv.wi_type = WI_RID_P2_ENCRYPTION; p2ltv.wi_len = 2; - if (le16toh(ltv->wi_val)) + if (le16toh(ltv->wi_val)) { p2ltv.wi_val =htole16(PRIVACY_INVOKED | EXCLUDE_UNENCRYPTED); - else +#ifdef WI_HOSTAP + if (sc->wi_ptype == WI_PORTTYPE_AP) + /* + * Disable tx encryption... + * it's broken. + */ + p2ltv.wi_val |= htole16(HOST_ENCRYPT); +#endif + } else p2ltv.wi_val = htole16(HOST_ENCRYPT | HOST_DECRYPT); ltv = &p2ltv; @@ -1082,8 +1165,8 @@ } return 0; } - case WI_RID_AUTH_CNTL: - p2ltv.wi_type = WI_RID_AUTH_CNTL; + case WI_RID_CNFAUTHMODE: + p2ltv.wi_type = WI_RID_CNFAUTHMODE; p2ltv.wi_len = 2; if (le16toh(ltv->wi_val) == 1) p2ltv.wi_val = htole16(0x01); @@ -1370,7 +1453,7 @@ case WI_RID_MAX_SLEEP: sc->wi_max_sleep = le16toh(wreq->wi_val[0]); break; - case WI_RID_AUTH_CNTL: + case WI_RID_CNFAUTHMODE: sc->wi_authtype = le16toh(wreq->wi_val[0]); break; case WI_RID_ROAMING_MODE: @@ -1630,7 +1713,7 @@ ireq->i_val = sc->wi_tx_key; break; case IEEE80211_IOC_AUTHMODE: - ireq->i_val = IEEE80211_AUTH_NONE; + ireq->i_val = sc->wi_authmode; break; case IEEE80211_IOC_STATIONNAME: error = copyout(sc->wi_node_name, @@ -1710,7 +1793,7 @@ sc->wi_tx_key = ireq->i_val; break; case IEEE80211_IOC_AUTHMODE: - error = EINVAL; + sc->wi_authmode = ireq->i_val; break; case IEEE80211_IOC_STATIONNAME: if (ireq->i_len > 32) { @@ -1761,7 +1844,18 @@ /* Reinitialize WaveLAN. */ wi_init(sc); + break; +#ifdef WI_HOSTAP + case SIOCHOSTAP_ADD: + case SIOCHOSTAP_DEL: + case SIOCHOSTAP_GET: + case SIOCHOSTAP_GETALL: + case SIOCHOSTAP_GFLAGS: + case SIOCHOSTAP_SFLAGS: + /* Send all Host AP specific ioctl's to Host AP code. */ + error = wihap_ioctl(sc, command, data); break; +#endif default: error = EINVAL; break; @@ -1832,6 +1926,9 @@ /* Program the nodename. */ WI_SETSTR(WI_RID_NODENAME, sc->wi_node_name); + /* Specify the authentication mode. */ + WI_SETVAL(WI_RID_CNFAUTHMODE, sc->wi_authmode); + /* Set our MAC address. */ mac.wi_len = 4; mac.wi_type = WI_RID_MAC_NODE; @@ -1861,7 +1958,7 @@ /* firm ver < 0.8 variant 2 */ WI_SETVAL(WI_RID_PROMISC, 1); } - WI_SETVAL(WI_RID_AUTH_CNTL, sc->wi_authtype); + WI_SETVAL(WI_RID_CNFAUTHMODE, sc->wi_authtype); } } @@ -1889,6 +1986,15 @@ /* enable interrupts */ CSR_WRITE_2(sc, WI_INT_EN, WI_INTRS); +#ifdef WI_HOSTAP + wihap_init(sc); + + /* + * Initialize ICV to something random. XXX: this doesn't work + * if init happens in early boot-up. Fix later. + */ + read_random(&sc->wi_icv, sizeof(sc->wi_icv)); +#endif ifp->if_flags |= IFF_RUNNING; ifp->if_flags &= ~IFF_OACTIVE; @@ -1898,7 +2004,142 @@ return; } +static u_int32_t crc32_tab[] = { + 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, + 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, + 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, + 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, + 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L, + 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, + 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, + 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, + 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, + 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL, + 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, + 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, + 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L, + 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, + 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, + 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L, + 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, + 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L, + 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, + 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, + 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL, >>> TRUNCATED FOR MAIL (1000 lines) <<< To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe p4-projects" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200204120459.g3C4xGd37672>