Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Jan 2009 18:07:57 GMT
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 156533 for review
Message-ID:  <200901221807.n0MI7vYr056307@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=156533

Change 156533 by hselasky@hselasky_laptop001 on 2009/01/22 18:07:20

	
	IFC @ 156531

Affected files ...

.. //depot/projects/usb/src/sys/amd64/amd64/cpu_switch.S#9 integrate
.. //depot/projects/usb/src/sys/amd64/conf/GENERIC#20 integrate
.. //depot/projects/usb/src/sys/arm/at91/at91_mci.c#9 integrate
.. //depot/projects/usb/src/sys/arm/include/vmparam.h#7 integrate
.. //depot/projects/usb/src/sys/arm/xscale/i8134x/i81342_mcu.c#2 integrate
.. //depot/projects/usb/src/sys/compat/linprocfs/linprocfs.c#14 integrate
.. //depot/projects/usb/src/sys/conf/NOTES#26 integrate
.. //depot/projects/usb/src/sys/conf/newvers.sh#7 integrate
.. //depot/projects/usb/src/sys/conf/options#18 integrate
.. //depot/projects/usb/src/sys/contrib/altq/altq/altq_subr.c#7 integrate
.. //depot/projects/usb/src/sys/dev/acpica/acpi_battery.c#5 integrate
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ah_regdomain.c#2 integrate
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c#2 integrate
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c#2 integrate
.. //depot/projects/usb/src/sys/dev/digi/con.CX-IBM.h#2 delete
.. //depot/projects/usb/src/sys/dev/digi/con.CX.h#2 delete
.. //depot/projects/usb/src/sys/dev/digi/con.EPCX.h#2 delete
.. //depot/projects/usb/src/sys/dev/digi/con.MBank.h#2 delete
.. //depot/projects/usb/src/sys/dev/iicbus/iicbus.c#8 integrate
.. //depot/projects/usb/src/sys/dev/mmc/mmc.c#6 integrate
.. //depot/projects/usb/src/sys/dev/ofw/ofw_iicbus.c#2 integrate
.. //depot/projects/usb/src/sys/dev/pci/pci.c#13 integrate
.. //depot/projects/usb/src/sys/dev/ppbus/if_plip.c#8 integrate
.. //depot/projects/usb/src/sys/dev/ppbus/immio.c#4 integrate
.. //depot/projects/usb/src/sys/dev/ppbus/lpbb.c#5 integrate
.. //depot/projects/usb/src/sys/dev/ppbus/lpt.c#6 integrate
.. //depot/projects/usb/src/sys/dev/ppbus/pcfclock.c#4 integrate
.. //depot/projects/usb/src/sys/dev/ppbus/ppb_1284.c#3 integrate
.. //depot/projects/usb/src/sys/dev/ppbus/ppb_base.c#4 integrate
.. //depot/projects/usb/src/sys/dev/ppbus/ppb_msq.c#4 integrate
.. //depot/projects/usb/src/sys/dev/ppbus/ppbconf.c#9 integrate
.. //depot/projects/usb/src/sys/dev/ppbus/ppbconf.h#6 integrate
.. //depot/projects/usb/src/sys/dev/ppbus/ppi.c#6 integrate
.. //depot/projects/usb/src/sys/dev/ppbus/pps.c#6 integrate
.. //depot/projects/usb/src/sys/dev/ppbus/vpo.c#7 integrate
.. //depot/projects/usb/src/sys/dev/ppbus/vpoio.c#4 integrate
.. //depot/projects/usb/src/sys/dev/ppc/ppc.c#8 integrate
.. //depot/projects/usb/src/sys/dev/ppc/ppc_acpi.c#5 integrate
.. //depot/projects/usb/src/sys/dev/ppc/ppc_isa.c#4 integrate
.. //depot/projects/usb/src/sys/dev/ppc/ppc_pci.c#3 integrate
.. //depot/projects/usb/src/sys/dev/ppc/ppc_puc.c#3 integrate
.. //depot/projects/usb/src/sys/dev/ppc/ppcreg.h#5 integrate
.. //depot/projects/usb/src/sys/dev/ppc/ppcvar.h#4 integrate
.. //depot/projects/usb/src/sys/dev/re/if_re.c#13 integrate
.. //depot/projects/usb/src/sys/dev/sound/pci/cmi.c#6 integrate
.. //depot/projects/usb/src/sys/dev/sound/pci/hda/hdac.c#20 integrate
.. //depot/projects/usb/src/sys/dev/syscons/teken/sequences#2 integrate
.. //depot/projects/usb/src/sys/dev/syscons/teken/teken.c#3 integrate
.. //depot/projects/usb/src/sys/dev/syscons/teken/teken.h#3 integrate
.. //depot/projects/usb/src/sys/dev/syscons/teken/teken_demo.c#3 integrate
.. //depot/projects/usb/src/sys/dev/syscons/teken/teken_scs.h#1 branch
.. //depot/projects/usb/src/sys/dev/syscons/teken/teken_subr.h#3 integrate
.. //depot/projects/usb/src/sys/dev/syscons/teken/teken_subr_compat.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/uftdi.c#41 integrate
.. //depot/projects/usb/src/sys/dev/usb/usbdevs#40 integrate
.. //depot/projects/usb/src/sys/dev/usb/usbdi.c#6 integrate
.. //depot/projects/usb/src/sys/dev/usb2/bluetooth/ng_ubt2.c#14 integrate
.. //depot/projects/usb/src/sys/dev/usb2/bluetooth/ng_ubt2_var.h#6 integrate
.. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_aue2.c#17 integrate
.. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_auereg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_axe2.c#17 integrate
.. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_axereg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cdce2.c#15 integrate
.. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cdcereg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cue2.c#16 integrate
.. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_cuereg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_kue2.c#16 integrate
.. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_kuereg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_rue2.c#16 integrate
.. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_ruereg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_udav2.c#16 integrate
.. //depot/projects/usb/src/sys/dev/usb2/ethernet/if_udavreg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb2/include/usb2_devid.h#26 edit
.. //depot/projects/usb/src/sys/dev/usb2/include/usb2_devtable.h#26 edit
.. //depot/projects/usb/src/sys/dev/usb2/serial/ufoma2.c#20 integrate
.. //depot/projects/usb/src/sys/dev/usb2/serial/uftdi2.c#17 edit
.. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#23 integrate
.. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rumvar.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb2/wlan/if_ural2.c#24 integrate
.. //depot/projects/usb/src/sys/dev/usb2/wlan/if_uralvar.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zyd2.c#27 integrate
.. //depot/projects/usb/src/sys/dev/usb2/wlan/if_zydreg.h#2 integrate
.. //depot/projects/usb/src/sys/gnu/fs/ext2fs/ext2_fs.h#2 integrate
.. //depot/projects/usb/src/sys/gnu/fs/ext2fs/ext2_fs_sb.h#2 integrate
.. //depot/projects/usb/src/sys/gnu/fs/ext2fs/ext2_inode.c#5 integrate
.. //depot/projects/usb/src/sys/gnu/fs/ext2fs/ext2_linux_ialloc.c#2 integrate
.. //depot/projects/usb/src/sys/gnu/fs/ext2fs/ext2_vfsops.c#9 integrate
.. //depot/projects/usb/src/sys/i386/conf/GENERIC#20 integrate
.. //depot/projects/usb/src/sys/i386/cpufreq/smist.c#4 integrate
.. //depot/projects/usb/src/sys/ia64/ia64/pmap.c#12 integrate
.. //depot/projects/usb/src/sys/kern/kern_clock.c#8 integrate
.. //depot/projects/usb/src/sys/kern/kern_synch.c#15 integrate
.. //depot/projects/usb/src/sys/kern/sched_4bsd.c#10 integrate
.. //depot/projects/usb/src/sys/kern/sched_ule.c#13 integrate
.. //depot/projects/usb/src/sys/kern/subr_pcpu.c#4 integrate
.. //depot/projects/usb/src/sys/kern/subr_witness.c#15 integrate
.. //depot/projects/usb/src/sys/kern/uipc_mbuf.c#10 integrate
.. //depot/projects/usb/src/sys/kern/vfs_cache.c#14 integrate
.. //depot/projects/usb/src/sys/kern/vfs_subr.c#15 integrate
.. //depot/projects/usb/src/sys/kern/vfs_vnops.c#15 integrate
.. //depot/projects/usb/src/sys/kern/vnode_if.src#11 integrate
.. //depot/projects/usb/src/sys/netgraph/bluetooth/l2cap/ng_l2cap_llpi.c#2 integrate
.. //depot/projects/usb/src/sys/netgraph/ng_deflate.c#2 integrate
.. //depot/projects/usb/src/sys/netgraph/ng_iface.c#9 integrate
.. //depot/projects/usb/src/sys/netgraph/ng_iface.h#2 integrate
.. //depot/projects/usb/src/sys/netgraph/ng_mppc.c#5 integrate
.. //depot/projects/usb/src/sys/netgraph/ng_ppp.c#8 integrate
.. //depot/projects/usb/src/sys/netgraph/ng_pred1.c#3 integrate
.. //depot/projects/usb/src/sys/netinet/in.c#16 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_var.h#15 integrate
.. //depot/projects/usb/src/sys/netinet6/in6_ifattach.c#12 integrate
.. //depot/projects/usb/src/sys/nfsclient/nfs_vnops.c#15 integrate
.. //depot/projects/usb/src/sys/pci/if_rlreg.h#13 integrate
.. //depot/projects/usb/src/sys/powerpc/powermac/ata_macio.c#3 integrate
.. //depot/projects/usb/src/sys/powerpc/powermac/kiic.c#2 integrate
.. //depot/projects/usb/src/sys/sun4v/include/pcpu.h#6 integrate
.. //depot/projects/usb/src/sys/sys/ktr.h#2 integrate
.. //depot/projects/usb/src/sys/sys/lock.h#8 integrate
.. //depot/projects/usb/src/sys/sys/pcpu.h#8 integrate
.. //depot/projects/usb/src/sys/sys/sched.h#6 integrate
.. //depot/projects/usb/src/sys/sys/vnode.h#14 integrate
.. //depot/projects/usb/src/sys/ufs/ffs/ffs_inode.c#8 integrate
.. //depot/projects/usb/src/sys/ufs/ffs/ffs_vnops.c#10 integrate
.. //depot/projects/usb/src/sys/ufs/ufs/ufs_dirhash.c#7 integrate
.. //depot/projects/usb/src/sys/ufs/ufs/ufs_lookup.c#11 integrate
.. //depot/projects/usb/src/sys/ufs/ufs/ufs_vnops.c#12 integrate
.. //depot/projects/usb/src/sys/vm/vm_mmap.c#13 integrate

Differences ...

==== //depot/projects/usb/src/sys/amd64/amd64/cpu_switch.S#9 (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/amd64/amd64/cpu_switch.S,v 1.164 2008/09/08 09:59:05 kib Exp $
+ * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.165 2009/01/20 12:07:49 kib Exp $
  */
 
 #include <machine/asmacros.h>
@@ -199,6 +199,7 @@
 	cmpq	PCB_FSBASE(%r8),%r9
 	jz	1f
 	/* Restore userland %fs */
+restore_fsbase:
 	movl	$MSR_FSBASE,%ecx
 	movl	PCB_FSBASE(%r8),%eax
 	movl	PCB_FSBASE+4(%r8),%edx
@@ -281,7 +282,7 @@
 	movl	PCB_DS(%r8),%ds
 	movl	PCB_ES(%r8),%es
 	movl	PCB_FS(%r8),%fs
-	jmp	done_load_seg
+	jmp	restore_fsbase
 	/* Restore userland %gs while preserving kernel gsbase */
 2:	movq	PCPU(GS32P),%rax
 	movq	PCB_GS32SD(%r8),%rcx

==== //depot/projects/usb/src/sys/amd64/conf/GENERIC#20 (text+ko) ====

@@ -16,7 +16,7 @@
 # If you are in doubt as to the purpose or necessity of a line, check first
 # in NOTES.
 #
-# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.513 2009/01/13 12:35:33 luigi Exp $
+# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.518 2009/01/19 15:33:06 sobomax Exp $
 
 cpu		HAMMER
 ident		GENERIC
@@ -28,7 +28,7 @@
 # through getenv() (or kenv(1) in userland). The format of the file
 # is 'variable=value', see kenv(1)
 #
-# env          "GENERIC.env"
+# env		"GENERIC.env"
 
 makeoptions	DEBUG=-g		# Build kernel with gdb(1) debug symbols
 
@@ -47,7 +47,6 @@
 options 	NFSSERVER		# Network Filesystem Server
 options 	NFSLOCKD		# Network Lock Manager
 options 	NFS_ROOT		# NFS usable as /, requires NFSCLIENT
-options 	NTFS			# NT File System
 options 	MSDOSFS			# MSDOS Filesystem
 options 	CD9660			# ISO 9660 Filesystem
 options 	PROCFS			# Process filesystem (requires PSEUDOFS)
@@ -69,8 +68,8 @@
 options 	_KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
 options 	KBD_INSTALL_CDEV	# install a CDEV entry in /dev
 options 	STOP_NMI		# Stop CPUS using NMI instead of IPI
+options  	HWPMC_HOOKS		# Necessary kernel hooks for hwpmc(4)
 options 	AUDIT			# Security event auditing
-options 	HWPMC_HOOKS		# Necessary kernel hooks for hwpmc(4)
 #options 	KDTRACE_FRAME		# Ensure frames are compiled in
 #options 	KDTRACE_HOOKS		# Kernel DTrace hooks
 
@@ -138,6 +137,8 @@
 # RAID controllers interfaced to the SCSI subsystem
 device		amr		# AMI MegaRAID
 device		arcmsr		# Areca SATA II RAID
+#XXX it is not 64-bit clean, -scottl
+#device		asr		# DPT SmartRAID V, VI and Adaptec SCSI RAID
 device		ciss		# Compaq Smart RAID 5*
 device		dpt		# DPT Smartcache III, IV - See NOTES for options
 device		hptmv		# Highpoint RocketRAID 182x
@@ -230,6 +231,7 @@
 device		sis		# Silicon Integrated Systems SiS 900/SiS 7016
 device		sk		# SysKonnect SK-984x & SK-982x gigabit Ethernet
 device		ste		# Sundance ST201 (D-Link DFE-550TX)
+device		stge		# Sundance/Tamarack TC9021 gigabit Ethernet
 device		tl		# Texas Instruments ThunderLAN
 device		tx		# SMC EtherPower II (83c170 ``EPIC'')
 device		vge		# VIA VT612x gigabit Ethernet
@@ -249,8 +251,8 @@
 
 # Wireless NIC cards
 device		wlan		# 802.11 support
-options		IEEE80211_DEBUG	# enable debug msgs
-options		IEEE80211_AMPDU_AGE	# age frames in AMPDU reorder q's
+options 	IEEE80211_DEBUG	# enable debug msgs
+options 	IEEE80211_AMPDU_AGE # age frames in AMPDU reorder q's
 device		wlan_wep	# 802.11 WEP support
 device		wlan_ccmp	# 802.11 CCMP support
 device		wlan_tkip	# 802.11 TKIP support

==== //depot/projects/usb/src/sys/arm/at91/at91_mci.c#9 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/at91/at91_mci.c,v 1.11 2008/11/25 00:13:26 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/at91/at91_mci.c,v 1.13 2009/01/21 17:39:11 imp Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -199,9 +199,12 @@
 		goto out;
 	}
 	sc->host.f_min = 375000;
-	sc->host.f_max = 30000000;
+	sc->host.f_max = at91_master_clock / 2;	/* Typically 30MHz */
 	sc->host.host_ocr = MMC_OCR_320_330 | MMC_OCR_330_340;
-	sc->host.caps = MMC_CAP_4_BIT_DATA;
+	if (sc->wire4)
+		sc->host.caps = MMC_CAP_4_BIT_DATA;
+	else
+		sc->host.caps = 0;
 	child = device_add_child(dev, "mmc", 0);
 	device_set_ivars(dev, &sc->host);
 	err = bus_generic_attach(dev);
@@ -294,7 +297,7 @@
 		else
 			clkdiv = (at91_master_clock / ios->clock) / 2;
 	}
-	if (ios->bus_width == bus_width_4 && sc->wire4)
+	if (ios->bus_width == bus_width_4)
 		WR4(sc, MCI_SDCR, RD4(sc, MCI_SDCR) | MCI_SDCR_SDCBUS);
 	else
 		WR4(sc, MCI_SDCR, RD4(sc, MCI_SDCR) & ~MCI_SDCR_SDCBUS);
@@ -643,6 +646,9 @@
 	case MMCBR_IVAR_VDD:
 		*(int *)result = sc->host.ios.vdd;
 		break;
+	case MMCBR_IVAR_CAPS:
+		*(int *)result = sc->host.caps;
+		break;
 	case MMCBR_IVAR_MAX_DATA:
 		*(int *)result = 1;
 		break;
@@ -683,6 +689,7 @@
 		sc->host.ios.vdd = value;
 		break;
 	/* These are read-only */
+	case MMCBR_IVAR_CAPS:
 	case MMCBR_IVAR_HOST_OCR:
 	case MMCBR_IVAR_F_MIN:
 	case MMCBR_IVAR_F_MAX:

==== //depot/projects/usb/src/sys/arm/include/vmparam.h#7 (text+ko) ====

@@ -28,7 +28,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/arm/include/vmparam.h,v 1.12 2007/12/27 16:45:38 alc Exp $
+ * $FreeBSD: src/sys/arm/include/vmparam.h,v 1.13 2009/01/22 15:36:11 cognet Exp $
  */
 
 #ifndef	_MACHINE_VMPARAM_H_
@@ -97,6 +97,13 @@
 
 #define VM_MIN_ADDRESS          (0x00001000)
 #ifdef ARM_USE_SMALL_ALLOC
+/* 
+ * ARM_KERN_DIRECTMAP is used to make sure there's enough space between
+ * VM_MAXUSER_ADDRESS and KERNBASE to map the whole memory.
+ * It has to be a compile-time constant, even if arm_init_smallalloc(),
+ * which will do the mapping, gets the real amount of memory at runtime,
+ * because VM_MAXUSER_ADDRESS is a constant.
+ */
 #ifndef ARM_KERN_DIRECTMAP
 #define ARM_KERN_DIRECTMAP 512 * 1024 * 1024 /* 512 MB */
 #endif

==== //depot/projects/usb/src/sys/arm/xscale/i8134x/i81342_mcu.c#2 (text+ko) ====

@@ -25,14 +25,13 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/i8134x/i81342_mcu.c,v 1.1 2007/07/27 14:50:57 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/i8134x/i81342_mcu.c,v 1.2 2009/01/16 19:31:27 cognet Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/bus.h>
 #include <sys/kernel.h>
 #include <sys/module.h>
-#include <sys/bus.h>
 
 #include <machine/bus.h>
 #include <arm/xscale/i8134x/i81342reg.h>

==== //depot/projects/usb/src/sys/compat/linprocfs/linprocfs.c#14 (text+ko) ====

@@ -42,7 +42,7 @@
 #include "opt_compat.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linprocfs/linprocfs.c,v 1.133 2008/12/29 12:45:11 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linprocfs/linprocfs.c,v 1.134 2009/01/22 17:06:33 jkim Exp $");
 
 #include <sys/param.h>
 #include <sys/queue.h>
@@ -276,11 +276,17 @@
 
 	sbuf_cat(sb, "flags\t\t:");
 
-	if (!strcmp(cpu_vendor, "AuthenticAMD") && (class < 6)) {
-		flags[16] = "fcmov";
-	} else if (!strcmp(cpu_vendor, "CyrixInstead")) {
+#ifdef __i386__
+	switch (cpu_vendor_id) {
+	case CPU_VENDOR_AMD:
+		if (class < 6)
+			flags[16] = "fcmov";
+		break;
+	case CPU_VENDOR_CYRIX:
 		flags[24] = "cxmmx";
+		break;
 	}
+#endif
 
 	for (i = 0; i < 32; i++)
 		if (cpu_feature & (1 << i))

==== //depot/projects/usb/src/sys/conf/NOTES#26 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1521 2009/01/11 11:36:00 maxim Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1524 2009/01/20 02:08:21 sobomax Exp $
 #
 # NOTES -- Lines that can be cut/pasted into kernel and hints configs.
 #
@@ -942,7 +942,12 @@
 options 	MSDOSFS			#MS DOS File System (FAT, FAT32)
 options 	NFSSERVER		#Network File System server
 options		NFSLOCKD		#Network Lock Manager
-options 	NTFS			#NT File System
+
+# NT File System. Read-mostly, see mount_ntfs(8) for details.
+# For a full read-write NTFS support consider sysutils/fusefs-ntfs
+# port/package.
+options 	NTFS
+
 options 	NULLFS			#NULL filesystem
 # Broken (depends on NCP):
 #options 	NWFS			#NetWare filesystem
@@ -1370,6 +1375,10 @@
 #	0x80	Put the video card in the VESA 800x600 dots, 16 color mode
 #	0x100	Probe for a keyboard device periodically if one is not present
 
+# Enable experimental features of the syscons terminal emulator (teken).
+options		TEKEN_UTF8		# UTF-8 output handling
+options		TEKEN_XTERM		# xterm-style terminal emulation
+
 #
 # Optional devices:
 #

==== //depot/projects/usb/src/sys/conf/newvers.sh#7 (text+ko) ====

@@ -28,7 +28,7 @@
 # SUCH DAMAGE.
 #
 #	@(#)newvers.sh	8.1 (Berkeley) 4/20/94
-# $FreeBSD: src/sys/conf/newvers.sh,v 1.78 2008/10/03 10:08:36 bz Exp $
+# $FreeBSD: src/sys/conf/newvers.sh,v 1.80 2009/01/20 21:37:41 thompsa Exp $
 
 TYPE="FreeBSD"
 REVISION="8.0"
@@ -91,6 +91,9 @@
 	if [ -x "${dir}/svnversion" ]; then
 		svnversion=${dir}/svnversion
 		SRCDIR=${d##*obj}
+		if [ -n "$MACHINE" ]; then
+			SRCDIR=${SRCDIR##/$MACHINE}
+		fi
 		SRCDIR=${SRCDIR%%/sys/*}
 		break
 	fi

==== //depot/projects/usb/src/sys/conf/options#18 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.656 2009/01/12 11:24:32 qingli Exp $
+# $FreeBSD: src/sys/conf/options,v 1.657 2009/01/17 16:37:13 ed Exp $
 #
 #        On the handling of kernel options
 #
@@ -726,6 +726,10 @@
 SC_RENDER_DEBUG		opt_syscons.h
 SC_TWOBUTTON_MOUSE	opt_syscons.h
 
+# teken terminal emulator options
+TEKEN_UTF8		opt_teken.h
+TEKEN_XTERM		opt_teken.h
+
 # options for printf
 PRINTF_BUFR_SIZE	opt_printf.h
 

==== //depot/projects/usb/src/sys/contrib/altq/altq/altq_subr.c#7 (text+ko) ====

@@ -1,4 +1,4 @@
-/*	$FreeBSD: src/sys/contrib/altq/altq/altq_subr.c,v 1.15 2008/12/02 21:37:28 bz Exp $	*/
+/*	$FreeBSD: src/sys/contrib/altq/altq/altq_subr.c,v 1.16 2009/01/21 20:44:42 jkim Exp $	*/
 /*	$KAME: altq_subr.c,v 1.21 2003/11/06 06:32:53 kjc Exp $	*/
 
 /*
@@ -910,7 +910,7 @@
 	if (status != 0)
 		return;
 
-#if (__FreeBSD_version >= 800050) && (defined(__amd64__) || defined(__i386__))
+#if (__FreeBSD_version >= 701102) && (defined(__amd64__) || defined(__i386__))
 	/* If TSC is P-state invariant, don't do anything. */
 	if (tsc_is_invariant)
 		return;

==== //depot/projects/usb/src/sys/dev/acpica/acpi_battery.c#5 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_battery.c,v 1.26 2007/11/20 18:35:36 jkim Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_battery.c,v 1.27 2009/01/17 17:40:44 mav Exp $");
 
 #include "opt_acpi.h"
 #include <sys/param.h>
@@ -197,7 +197,7 @@
 	 * is 0 (due to some error reading the battery), skip this
 	 * conversion.
 	 */
-	if (bif->units == ACPI_BIF_UNITS_MA && bif->dvol != 0) {
+	if (bif->units == ACPI_BIF_UNITS_MA && bif->dvol != 0 && dev == NULL) {
 	    bst[i].rate = (bst[i].rate * bif->dvol) / 1000;
 	    bst[i].cap = (bst[i].cap * bif->dvol) / 1000;
 	    bif->lfcap = (bif->lfcap * bif->dvol) / 1000;

==== //depot/projects/usb/src/sys/dev/ath/ath_hal/ah_regdomain.c#2 (text+ko) ====

@@ -15,7 +15,7 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  *
- * $Id: ah_regdomain.c,v 1.24 2008/11/27 22:29:27 sam Exp $
+ * $FreeBSD: src/sys/dev/ath/ath_hal/ah_regdomain.c,v 1.2 2009/01/16 20:44:45 sam Exp $
  */
 #include "opt_ah.h"
 
@@ -1231,9 +1231,18 @@
 	{.regDmnEnum		= DEBUG_REG_DMN,
 	 .conformanceTestLimit	= FCC,
 	 .dfsMask		= DFS_FCC3,
-	 .chan11a		= BM3(F1_5120_5240, F1_5260_5700, F1_5745_5825),
-	 .chan11a_half		= BM3(F2_5120_5240, F2_5260_5700, F7_5745_5825),
-	 .chan11a_quarter	= BM3(F3_5120_5240, F3_5260_5700, F8_5745_5825),
+	 .chan11a		= BM4(F1_4950_4980,
+				      F1_5120_5240,
+				      F1_5260_5700,
+				      F1_5745_5825),
+	 .chan11a_half		= BM4(F1_4945_4985,
+				      F2_5120_5240,
+				      F2_5260_5700,
+				      F7_5745_5825),
+	 .chan11a_quarter	= BM4(F1_4942_4987,
+				      F3_5120_5240,
+				      F3_5260_5700,
+				      F8_5745_5825),
 	 .chan11a_turbo		= BM8(T1_5130_5210,
 				      T1_5250_5330,
 				      T1_5370_5490,

==== //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c#2 (text+ko) ====

@@ -14,7 +14,7 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  *
- * $Id: ar5211_misc.c,v 1.7 2008/11/27 22:29:52 sam Exp $
+ * $FreeBSD: src/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c,v 1.2 2009/01/21 02:53:00 sam Exp $
  */
 #include "opt_ah.h"
 
@@ -432,7 +432,7 @@
 	} else {
 		/* convert to system clocks */
 		OS_REG_WRITE(ah, AR_D_GBL_IFS_SIFS, ath_hal_mac_clks(ah, us));
-		ahp->ah_slottime = us;
+		ahp->ah_sifstime = us;
 		return AH_TRUE;
 	}
 }

==== //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c#2 (text+ko) ====

@@ -14,7 +14,7 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  *
- * $FreeBSD: src/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c,v 1.2 2008/12/11 04:03:50 sam Exp $
+ * $FreeBSD: src/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c,v 1.3 2009/01/21 02:53:00 sam Exp $
  */
 #include "opt_ah.h"
 
@@ -453,7 +453,7 @@
 	} else {
 		/* convert to system clocks */
 		OS_REG_WRITE(ah, AR_D_GBL_IFS_SIFS, ath_hal_mac_clks(ah, us));
-		ahp->ah_slottime = us;
+		ahp->ah_sifstime = us;
 		return AH_TRUE;
 	}
 }

==== //depot/projects/usb/src/sys/dev/iicbus/iicbus.c#8 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/iicbus/iicbus.c,v 1.27 2009/01/15 02:46:43 nwhitehorn Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/iicbus/iicbus.c,v 1.28 2009/01/20 00:05:43 nwhitehorn Exp $");
 
 /*
  * Autoconfiguration and support routines for the Philips serial I2C bus
@@ -55,7 +55,7 @@
 	device_set_desc(dev, "Philips I2C bus");
 
 	/* Allow other subclasses to override this driver. */
-	return (-1000);
+	return (BUS_PROBE_GENERIC);
 }
 
 #if SCAN_IICBUS

==== //depot/projects/usb/src/sys/dev/mmc/mmc.c#6 (text+ko) ====

@@ -51,7 +51,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/mmc/mmc.c,v 1.28 2008/12/06 21:41:27 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/mmc/mmc.c,v 1.32 2009/01/21 17:49:23 imp Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -340,7 +340,9 @@
 	memset(cmd->resp, 0, sizeof(cmd->resp));
 	cmd->retries = retries;
 	mreq.cmd = cmd;
-/*	printf("CMD: %x ARG %x\n", cmd->opcode, cmd->arg); */
+	if (bootverbose)
+		device_printf(sc->dev, "CMD: %#x ARG %#x\n", cmd->opcode,
+		    cmd->arg);
 	mmc_wait_for_req(sc, &mreq);
 	return (cmd->error);
 }
@@ -584,11 +586,11 @@
 static int
 mmc_set_card_bus_width(struct mmc_softc *sc, uint16_t rca, int width)
 {
+	struct mmc_command cmd;
 	int err;
+	uint8_t	value;
 
 	if (mmcbr_get_mode(sc->dev) == mode_sd) {
-		struct mmc_command cmd;
-
 		memset(&cmd, 0, sizeof(struct mmc_command));
 		cmd.opcode = ACMD_SET_BUS_WIDTH;
 		cmd.flags = MMC_RSP_R1 | MMC_CMD_AC;
@@ -604,8 +606,6 @@
 		}
 		err = mmc_wait_for_app_cmd(sc, rca, &cmd, CMD_RETRIES);
 	} else {
-		uint8_t	value;
-
 		switch (width) {
 		case bus_width_1:
 			value = EXT_CSD_BUS_WIDTH_1;
@@ -619,7 +619,8 @@
 		default:
 			return (MMC_ERR_INVALID);
 		}
-		err = mmc_switch(sc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_BUS_WIDTH, value);
+		err = mmc_switch(sc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_BUS_WIDTH,
+		    value);
 	}
 	return (err);
 }
@@ -629,6 +630,7 @@
 {
 	int err;
 	uint8_t	value;
+	u_char switch_res[64];
 
 	switch (timing) {
 	case bus_timing_normal:
@@ -640,14 +642,11 @@
 	default:
 		return (MMC_ERR_INVALID);
 	}
-	if (mmcbr_get_mode(sc->dev) == mode_sd) {
-		u_char switch_res[64];
-
+	if (mmcbr_get_mode(sc->dev) == mode_sd)
 		err = mmc_sd_switch(sc, 1, 0, value, switch_res);
-	} else {
+	else
 		err = mmc_switch(sc, EXT_CSD_CMD_SET_NORMAL,
 		    EXT_CSD_HS_TIMING, value);
-	}
 	return (err);
 }
 
@@ -1119,6 +1118,7 @@
 			mmc_app_send_scr(sc, ivar->rca, ivar->raw_scr);
 			mmc_app_decode_scr(ivar->raw_scr, &ivar->scr);
 			/* Get card switch capabilities. */
+			ivar->timing = bus_timing_normal;
 			if ((ivar->scr.sda_vsn >= 1) &&
 			    (ivar->csd.ccc & (1<<10))) {
 				mmc_sd_switch(sc, 0, 0, 0xF, switch_res);
@@ -1255,8 +1255,12 @@
 		mmcbr_set_mode(dev, mode_sd);
 		mmc_power_up(sc);
 		mmcbr_set_bus_mode(dev, pushpull);
+		if (bootverbose)
+			device_printf(sc->dev, "Idle cards for SD probe\n");
 		mmc_idle_cards(sc);
 		err = mmc_send_if_cond(sc, 1);
+		if (bootverbose)
+			device_printf(sc->dev, "SD: SEND_IF_CONF %d\n", err);
 		if (mmc_send_app_op_cond(sc, err ? 0 : MMC_OCR_CCS, &ocr) !=
 		    MMC_ERR_NONE) {
 			/*
@@ -1326,7 +1330,7 @@
 			max_timing = ivar->timing;
 		if (ivar->tran_speed < max_dtr)
 			max_dtr = ivar->tran_speed;
-		if (ivar->hs_tran_speed < max_dtr)
+		if (ivar->hs_tran_speed < max_hs_dtr)
 			max_hs_dtr = ivar->hs_tran_speed;
 	}
 	for (i = 0; i < nkid; i++) {

==== //depot/projects/usb/src/sys/dev/ofw/ofw_iicbus.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ofw/ofw_iicbus.c,v 1.1 2009/01/15 02:46:43 nwhitehorn Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ofw/ofw_iicbus.c,v 1.2 2009/01/20 14:06:30 nwhitehorn Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -78,8 +78,8 @@
 
 static devclass_t ofwiicbus_devclass;
 
-DEFINE_CLASS_1(iicbus, ofw_iicbus_driver, ofw_iicbus_methods, 1 /* no softc */,
-    iicbus_driver);
+DEFINE_CLASS_1(iicbus, ofw_iicbus_driver, ofw_iicbus_methods,
+    sizeof(struct iicbus_softc), iicbus_driver);
 DRIVER_MODULE(ofw_iicbus, iichb, ofw_iicbus_driver, ofwiicbus_devclass, 0, 0);
 MODULE_VERSION(ofw_iicbus, 1);
 MODULE_DEPEND(ofw_iicbus, iicbus, 1, 1, 1);

==== //depot/projects/usb/src/sys/dev/pci/pci.c#13 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/pci/pci.c,v 1.366 2008/11/13 19:57:33 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/pci/pci.c,v 1.368 2009/01/20 00:05:43 nwhitehorn Exp $");
 
 #include "opt_bus.h"
 
@@ -2291,9 +2291,27 @@
 	struct resource *res;
 
 	map = PCIB_READ_CONFIG(pcib, b, s, f, reg, 4);
+
+	/*
+	 * Disable decoding via the command register before
+	 * determining the BARs length since we will be placing them
+	 * in a weird state.
+	 */
+	cmd = PCIB_READ_CONFIG(pcib, b, s, f, PCIR_COMMAND, 2);
+	PCIB_WRITE_CONFIG(pcib, b, s, f, PCIR_COMMAND,
+	    cmd & ~(PCI_BAR_MEM(map) ? PCIM_CMD_MEMEN : PCIM_CMD_PORTEN), 2);
+
+	/*
+	 * Determine the BAR's length by writing all 1's.  The bottom
+	 * log_2(size) bits of the BAR will stick as 0 when we read
+	 * the value back.
+	 */
 	PCIB_WRITE_CONFIG(pcib, b, s, f, reg, 0xffffffff, 4);
 	testval = PCIB_READ_CONFIG(pcib, b, s, f, reg, 4);
+
+	/* Restore the BAR and command register. */
 	PCIB_WRITE_CONFIG(pcib, b, s, f, reg, map, 4);
+	PCIB_WRITE_CONFIG(pcib, b, s, f, PCIR_COMMAND, cmd, 2);
 
 	if (PCI_BAR_MEM(map))
 		type = SYS_RES_MEMORY;
@@ -2626,7 +2644,7 @@
 	device_set_desc(dev, "PCI bus");
 
 	/* Allow other subclasses to override this driver. */
-	return (-1000);
+	return (BUS_PROBE_GENERIC);
 }
 
 static int

==== //depot/projects/usb/src/sys/dev/ppbus/if_plip.c#8 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ppbus/if_plip.c,v 1.49 2008/11/16 17:42:02 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ppbus/if_plip.c,v 1.50 2009/01/21 23:10:06 jhb Exp $");
 
 /*
  * Parallel port TCP/IP interfaces added.  I looked at the driver from
@@ -152,8 +152,12 @@
 	int		sc_iferrs;
 
 	struct resource *res_irq;
+	void		*sc_intr_cookie;
 };
 
+static struct mtx lp_tables_lock;
+MTX_SYSINIT(lp_tables, &lp_tables_lock, "plip tables", MTX_DEF);
+
 /* Tables for the lp# interface */
 static u_char *txmith;
 #define	txmitl (txmith + (1 * LPIPTBLSIZE))
@@ -170,13 +174,41 @@
 static int lpioctl(struct ifnet *, u_long, caddr_t);
 static int lpoutput(struct ifnet *, struct mbuf *, struct sockaddr *,
 	struct rtentry *);
+static void lpstop(struct lp_data *);
 static void lp_intr(void *);
+static int lp_module_handler(module_t, int, void *);
 
 #define	DEVTOSOFTC(dev) \
 	((struct lp_data *)device_get_softc(dev))
 
 static devclass_t lp_devclass;
 
+static int
+lp_module_handler(module_t mod, int what, void *arg)
+{
+
+	switch (what) {
+	case MOD_UNLOAD:
+		mtx_lock(&lp_tables_lock);
+		if (txmith != NULL) {
+			free(txmith, M_DEVBUF);
+			txmith = NULL;
+		}
+		if (ctxmith != NULL) {
+			free(ctxmith, M_DEVBUF);
+			ctxmith = NULL;
+		}
+		mtx_unlock(&lp_tables_lock);
+		break;
+	case MOD_LOAD:
+	case MOD_QUIESCE:
+		break;
+	default:
+		return (EOPNOTSUPP);
+	}
+	return (0);
+}
+
 static void
 lp_identify(driver_t *driver, device_t parent)
 {
@@ -201,7 +233,7 @@
 {
 	struct lp_data *lp = DEVTOSOFTC(dev);
 	struct ifnet *ifp;
-	int rid = 0;
+	int error, rid = 0;
 
 	lp->sc_dev = dev;
 
@@ -224,8 +256,7 @@
 	ifp->if_softc = lp;
 	if_initname(ifp, device_get_name(dev), device_get_unit(dev));
 	ifp->if_mtu = LPMTU;
-	ifp->if_flags = IFF_SIMPLEX | IFF_POINTOPOINT | IFF_MULTICAST |
-	    IFF_NEEDSGIANT;
+	ifp->if_flags = IFF_SIMPLEX | IFF_POINTOPOINT | IFF_MULTICAST;
 	ifp->if_ioctl = lpioctl;
 	ifp->if_output = lpoutput;
 	ifp->if_hdrlen = 0;
@@ -235,8 +266,39 @@
 
 	bpfattach(ifp, DLT_NULL, sizeof(u_int32_t));
 
+	/*
+	 * Attach our interrupt handler.  It is only called while we
+	 * own the ppbus.
+	 */
+	error = bus_setup_intr(dev, lp->res_irq, INTR_TYPE_NET | INTR_MPSAFE,
+	    NULL, lp_intr, lp, &lp->sc_intr_cookie);
+	if (error) {
+		bpfdetach(ifp);
+		if_detach(ifp);
+		bus_release_resource(dev, SYS_RES_IRQ, 0, lp->res_irq);
+		device_printf(dev, "Unable to register interrupt handler\n");
+		return (error);
+	}
+
+	return (0);
+}
+
+static int
+lp_detach(device_t dev)
+{
+	struct lp_data *sc = device_get_softc(dev);
+	device_t ppbus = device_get_parent(dev);
+
+	ppb_lock(ppbus);
+	lpstop(sc);
+	ppb_unlock(ppbus);
+	bpfdetach(sc->sc_ifp);
+	if_detach(sc->sc_ifp);
+	bus_teardown_intr(dev, sc->res_irq, sc->sc_intr_cookie);
+	bus_release_resource(dev, SYS_RES_IRQ, 0, sc->res_irq);
 	return (0);
 }
+
 /*
  * Build the translation tables for the LPIP (BSD unix) protocol.
  * We don't want to calculate these nasties in our tight loop, so we
@@ -247,17 +309,22 @@
 {
 	int i;
 
+	mtx_lock(&lp_tables_lock);
 	if (txmith == NULL)
 		txmith = malloc(4 * LPIPTBLSIZE, M_DEVBUF, M_NOWAIT);
 
-	if (txmith == NULL)
+	if (txmith == NULL) {
+		mtx_unlock(&lp_tables_lock);
 		return (1);
+	}
 
 	if (ctxmith == NULL)
 		ctxmith = malloc(4 * LPIPTBLSIZE, M_DEVBUF, M_NOWAIT);
 
-	if (ctxmith == NULL)
+	if (ctxmith == NULL) {
+		mtx_unlock(&lp_tables_lock);
 		return (1);
+	}
 
 	for (i = 0; i < LPIPTBLSIZE; i++) {
 		ctxmith[i] = (i & 0xF0) >> 4;
@@ -272,10 +339,61 @@
 		trecvh[i] = ((~i) & 0x80) | ((i & 0x38) << 1);
 		trecvl[i] = (((~i) & 0x80) >> 4) | ((i & 0x38) >> 3);
 	}
+	mtx_unlock(&lp_tables_lock);
 
 	return (0);
 }
 
+static void
+lpstop(struct lp_data *sc)
+{
+	device_t ppbus = device_get_parent(sc->sc_dev);
+
+	ppb_assert_locked(ppbus);
+	ppb_wctr(ppbus, 0x00);
+	sc->sc_ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+	free(sc->sc_ifbuf, M_DEVBUF);
+	sc->sc_ifbuf = NULL;
+
+	/* IFF_UP is not set, try to release the bus anyway */
+	ppb_release_bus(ppbus, sc->sc_dev);
+}
+
+static int
+lpinit_locked(struct ifnet *ifp)
+{
+	struct lp_data *sc = ifp->if_softc;
+	device_t dev = sc->sc_dev;
+	device_t ppbus = device_get_parent(dev);
+	int error;
+
+	ppb_assert_locked(ppbus);
+	error = ppb_request_bus(ppbus, dev, PPB_DONTWAIT);
+	if (error)
+		return (error);
+
+	/* Now IFF_UP means that we own the bus */
+	ppb_set_mode(ppbus, PPB_COMPATIBLE);
+
+	if (lpinittables()) {
+		ppb_release_bus(ppbus, dev);
+		return (ENOBUFS);
+	}
+
+	sc->sc_ifbuf = malloc(sc->sc_ifp->if_mtu + MLPIPHDRLEN,
+	    M_DEVBUF, M_NOWAIT);
+	if (sc->sc_ifbuf == NULL) {
+		ppb_release_bus(ppbus, dev);
+		return (ENOBUFS);
+	}
+
+	ppb_wctr(ppbus, IRQENABLE);
+
+	ifp->if_drv_flags |= IFF_DRV_RUNNING;
+	ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+	return (0);
+}
+
 /*
  * Process an ioctl request.
  */
@@ -288,7 +406,6 @@
 	struct ifaddr *ifa = (struct ifaddr *)data;
 	struct ifreq *ifr = (struct ifreq *)data;
 	u_char *ptr;
-	void *ih;
 	int error;
 
 	switch (cmd) {
@@ -301,67 +418,32 @@
 		ifp->if_flags |= IFF_UP;
 		/* FALLTHROUGH */
 	case SIOCSIFFLAGS:
+		error = 0;
+		ppb_lock(ppbus);
 		if ((!(ifp->if_flags & IFF_UP)) &&
-		    (ifp->if_drv_flags & IFF_DRV_RUNNING)) {
+		    (ifp->if_drv_flags & IFF_DRV_RUNNING))
+			lpstop(sc);
+		else if (((ifp->if_flags & IFF_UP)) &&
+		    (!(ifp->if_drv_flags & IFF_DRV_RUNNING)))
+			error = lpinit_locked(ifp);
+		ppb_unlock(ppbus);
+		return (error);
 
-			ppb_wctr(ppbus, 0x00);
-			ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
-
-			/* IFF_UP is not set, try to release the bus anyway */

>>> TRUNCATED FOR MAIL (1000 lines) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200901221807.n0MI7vYr056307>