Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 Feb 2009 17:49:32 +0000 (UTC)
From:      Andrew Thompson <thompsa@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r188317 - in user/thompsa/usb: . contrib/wpa_supplicant etc/rc.d lib/libc/net lib/libc/stdlib lib/libc/string lib/libc_r/uthread lib/msun/src sbin sbin/ifconfig sbin/ipfw sbin/mount_nfs...
Message-ID:  <200902081749.n18HnWZb029734@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: thompsa
Date: Sun Feb  8 17:49:32 2009
New Revision: 188317
URL: http://svn.freebsd.org/changeset/base/188317

Log:
  MFH r188181-188316

Added:
  user/thompsa/usb/sys/netinet/libalias/alias_sctp.c
     - copied unchanged from r188316, head/sys/netinet/libalias/alias_sctp.c
  user/thompsa/usb/sys/netinet/libalias/alias_sctp.h
     - copied unchanged from r188316, head/sys/netinet/libalias/alias_sctp.h
Modified:
  user/thompsa/usb/   (props changed)
  user/thompsa/usb/UPDATING
  user/thompsa/usb/contrib/wpa_supplicant/   (props changed)
  user/thompsa/usb/etc/rc.d/named
  user/thompsa/usb/lib/libc/net/getaddrinfo.c
  user/thompsa/usb/lib/libc/net/gethostbydns.c
  user/thompsa/usb/lib/libc/stdlib/atol.3
  user/thompsa/usb/lib/libc/string/memchr.c
  user/thompsa/usb/lib/libc_r/uthread/uthread_init.c
  user/thompsa/usb/lib/msun/src/math.h
  user/thompsa/usb/sbin/   (props changed)
  user/thompsa/usb/sbin/ifconfig/ifieee80211.c
  user/thompsa/usb/sbin/ifconfig/regdomain.c
  user/thompsa/usb/sbin/ifconfig/regdomain.h
  user/thompsa/usb/sbin/ipfw/ipfw.8
  user/thompsa/usb/sbin/ipfw/nat.c
  user/thompsa/usb/sbin/mount_nfs/mount_nfs.c
  user/thompsa/usb/share/man/man4/rum.4
  user/thompsa/usb/share/man/man4/smb.4
  user/thompsa/usb/sys/   (props changed)
  user/thompsa/usb/sys/amd64/conf/NOTES
  user/thompsa/usb/sys/amd64/include/legacyvar.h
  user/thompsa/usb/sys/amd64/pci/pci_bus.c
  user/thompsa/usb/sys/arm/arm/cpufunc_asm_sheeva.S   (props changed)
  user/thompsa/usb/sys/conf/NOTES
  user/thompsa/usb/sys/conf/files
  user/thompsa/usb/sys/conf/options
  user/thompsa/usb/sys/conf/options.amd64
  user/thompsa/usb/sys/conf/options.i386
  user/thompsa/usb/sys/conf/options.ia64
  user/thompsa/usb/sys/conf/options.mips
  user/thompsa/usb/sys/conf/options.pc98
  user/thompsa/usb/sys/contrib/pf/   (props changed)
  user/thompsa/usb/sys/dev/agp/agp.c
  user/thompsa/usb/sys/dev/ath/ath_hal/ah_regdomain.c
  user/thompsa/usb/sys/dev/ath/ath_hal/ar5212/ar5212.h
  user/thompsa/usb/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c
  user/thompsa/usb/sys/dev/ath/ath_hal/ar5212/ar5212_rfgain.c
  user/thompsa/usb/sys/dev/ath/if_ath.c
  user/thompsa/usb/sys/dev/ath/if_athioctl.h
  user/thompsa/usb/sys/dev/cardbus/cardbus_device.c
  user/thompsa/usb/sys/dev/cfi/cfi_core.c
  user/thompsa/usb/sys/dev/exca/exca.c
  user/thompsa/usb/sys/dev/pccard/pccard.c
  user/thompsa/usb/sys/dev/pccard/pccard_cis.c
  user/thompsa/usb/sys/dev/pccard/pccardvarp.h
  user/thompsa/usb/sys/dev/si/si.c
  user/thompsa/usb/sys/dev/sound/macio/aoa.c
  user/thompsa/usb/sys/dev/sound/macio/aoa.h
  user/thompsa/usb/sys/dev/sound/macio/davbus.c
  user/thompsa/usb/sys/dev/sound/macio/i2s.c
  user/thompsa/usb/sys/dev/sound/macio/snapper.c
  user/thompsa/usb/sys/dev/sound/macio/tumbler.c
  user/thompsa/usb/sys/dev/usb/ehci_ixp4xx.c   (props changed)
  user/thompsa/usb/sys/dev/usb/if_rum.c
  user/thompsa/usb/sys/dev/usb/if_urtw.c
  user/thompsa/usb/sys/dev/usb/usbdevs
  user/thompsa/usb/sys/dev/usb2/controller/ehci2.c
  user/thompsa/usb/sys/dev/usb2/controller/ohci2.c
  user/thompsa/usb/sys/dev/usb2/controller/uhci2.c
  user/thompsa/usb/sys/dev/usb2/include/usb2_devid.h
  user/thompsa/usb/sys/dev/usb2/include/usb2_devtable.h
  user/thompsa/usb/sys/dev/xen/netfront/netfront.c
  user/thompsa/usb/sys/fs/fifofs/fifo_vnops.c
  user/thompsa/usb/sys/fs/udf/ecma167-udf.h
  user/thompsa/usb/sys/fs/udf/udf.h
  user/thompsa/usb/sys/fs/udf/udf_vfsops.c
  user/thompsa/usb/sys/fs/udf/udf_vnops.c
  user/thompsa/usb/sys/geom/part/g_part_bsd.c
  user/thompsa/usb/sys/geom/part/g_part_mbr.c
  user/thompsa/usb/sys/i386/conf/NOTES
  user/thompsa/usb/sys/i386/i386/vm_machdep.c
  user/thompsa/usb/sys/ia64/conf/NOTES
  user/thompsa/usb/sys/kern/kern_linker.c
  user/thompsa/usb/sys/kern/kern_lock.c
  user/thompsa/usb/sys/kern/kern_sysctl.c
  user/thompsa/usb/sys/kern/vfs_bio.c
  user/thompsa/usb/sys/kern/vfs_init.c
  user/thompsa/usb/sys/kern/vfs_subr.c
  user/thompsa/usb/sys/mips/mips/busdma_machdep.c
  user/thompsa/usb/sys/mips/mips/elf64_machdep.c   (props changed)
  user/thompsa/usb/sys/modules/libalias/libalias/Makefile
  user/thompsa/usb/sys/modules/usb2/controller_atmegadci/   (props changed)
  user/thompsa/usb/sys/net80211/ieee80211_ddb.c
  user/thompsa/usb/sys/netinet/ip_fw_nat.c
  user/thompsa/usb/sys/netinet/ip_ipsec.c
  user/thompsa/usb/sys/netinet/ip_output.c
  user/thompsa/usb/sys/netinet/libalias/alias.c
  user/thompsa/usb/sys/netinet/libalias/alias_db.c
  user/thompsa/usb/sys/netinet/libalias/alias_local.h
  user/thompsa/usb/sys/netinet/sctp_crc32.c
  user/thompsa/usb/sys/netinet/sctp_crc32.h
  user/thompsa/usb/sys/netinet/tcp_subr.c
  user/thompsa/usb/sys/netinet6/ip6_forward.c
  user/thompsa/usb/sys/netinet6/ip6_ipsec.c
  user/thompsa/usb/sys/netinet6/ip6_output.c
  user/thompsa/usb/sys/netipsec/ipsec.c
  user/thompsa/usb/sys/netipsec/ipsec.h
  user/thompsa/usb/sys/netipsec/ipsec6.h
  user/thompsa/usb/sys/nfsserver/nfs_syscalls.c
  user/thompsa/usb/sys/pc98/conf/NOTES
  user/thompsa/usb/sys/security/audit/audit_bsm.c
  user/thompsa/usb/sys/security/audit/audit_bsm_klib.c
  user/thompsa/usb/sys/security/audit/audit_pipe.c
  user/thompsa/usb/sys/security/audit/audit_private.h
  user/thompsa/usb/sys/sys/mount.h
  user/thompsa/usb/sys/sys/sysctl.h
  user/thompsa/usb/sys/ufs/ffs/ffs_alloc.c
  user/thompsa/usb/tools/tools/ath/athstats/athstats.c
  user/thompsa/usb/tools/tools/ath/athstats/main.c
  user/thompsa/usb/tools/tools/net80211/wlanstats/main.c
  user/thompsa/usb/tools/tools/net80211/wlanstats/wlanstats.c
  user/thompsa/usb/usr.sbin/config/main.c
  user/thompsa/usb/usr.sbin/makefs/ffs/ffs_bswap.c   (props changed)
  user/thompsa/usb/usr.sbin/makefs/ffs/ffs_subr.c   (props changed)
  user/thompsa/usb/usr.sbin/makefs/ffs/ufs_bswap.h   (props changed)
  user/thompsa/usb/usr.sbin/makefs/getid.c   (props changed)

Modified: user/thompsa/usb/UPDATING
==============================================================================
--- user/thompsa/usb/UPDATING	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/UPDATING	Sun Feb  8 17:49:32 2009	(r188317)
@@ -22,6 +22,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.
 	to maximize performance.  (To disable malloc debugging, run
 	ln -s aj /etc/malloc.conf.)
 
+20090203:
+	The ichsmb(4) driver has been changed to require SMBus slave
+	addresses be left-justified (xxxxxxx0b) rather than right-justified.
+	All of the other SMBus controller drivers require left-justified
+	slave addresses, so this change makes all the drivers provide the
+	same interface.
+
 20090201:
 	INET6 statistics (struct ip6stat) was updated.
 	netstat(1) needs to be recompiled.

Modified: user/thompsa/usb/etc/rc.d/named
==============================================================================
--- user/thompsa/usb/etc/rc.d/named	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/etc/rc.d/named	Sun Feb  8 17:49:32 2009	(r188317)
@@ -61,10 +61,23 @@ chroot_autoupdate()
 
 	# Mount a devfs in the chroot directory if needed
 	#
-	umount ${named_chrootdir}/dev 2>/dev/null
-	devfs_domount ${named_chrootdir}/dev devfsrules_hide_all
-	devfs -m ${named_chrootdir}/dev rule apply path null unhide
-	devfs -m ${named_chrootdir}/dev rule apply path random unhide
+	if [ `${SYSCTL_N} security.jail.jailed` -eq 0 ]; then
+		umount ${named_chrootdir}/dev 2>/dev/null
+		devfs_domount ${named_chrootdir}/dev devfsrules_hide_all
+		devfs -m ${named_chrootdir}/dev rule apply path null unhide
+		devfs -m ${named_chrootdir}/dev rule apply path random unhide
+	else
+		if [ -c ${named_chrootdir}/dev/null -a \
+		    -c ${named_chrootdir}/dev/random ]; then
+			info "named chroot: using pre-mounted devfs."
+		else
+			err 1 "named chroot: devfs cannot be mounted from" \
+			    "within a jail. Thus a chrooted named cannot" \
+			    "be run from within a jail." \
+			    "To run named without chrooting it, set" \
+			    "named_chrootdir=\"\" in /etc/rc.conf."
+		fi
+	fi
 
 	# Copy and/or update key files to the chroot /etc 
 	#
@@ -113,7 +126,12 @@ named_stop()
 named_poststop()
 {
 	if [ -n "${named_chrootdir}" -a -c ${named_chrootdir}/dev/null ]; then
-		umount ${named_chrootdir}/dev 2>/dev/null || true
+		if [ `${SYSCTL_N} security.jail.jailed` -eq 0 ]; then
+			umount ${named_chrootdir}/dev 2>/dev/null || true
+		else
+			warn "named chroot:" \
+			    "cannot unmount devfs from inside jail!"
+		fi
 	fi
 }
 

Modified: user/thompsa/usb/lib/libc/net/getaddrinfo.c
==============================================================================
--- user/thompsa/usb/lib/libc/net/getaddrinfo.c	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/lib/libc/net/getaddrinfo.c	Sun Feb  8 17:49:32 2009	(r188317)
@@ -1863,7 +1863,8 @@ getanswer(const querybuf *answer, int an
 			}
 		} else if (type != qtype) {
 #ifdef DEBUG
-			if (type != T_KEY && type != T_SIG)
+			if (type != T_KEY && type != T_SIG &&
+			    type != ns_t_dname)
 				syslog(LOG_NOTICE|LOG_AUTH,
 	       "gethostby*.getanswer: asked for \"%s %s %s\", got type \"%s\"",
 				       qname, p_class(C_IN), p_type(qtype),

Modified: user/thompsa/usb/lib/libc/net/gethostbydns.c
==============================================================================
--- user/thompsa/usb/lib/libc/net/gethostbydns.c	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/lib/libc/net/gethostbydns.c	Sun Feb  8 17:49:32 2009	(r188317)
@@ -294,7 +294,7 @@ gethostanswer(const querybuf *answer, in
 			continue;
 		}
 		if (type != qtype) {
-			if (type != T_SIG)
+			if (type != T_SIG && type != ns_t_dname)
 				syslog(LOG_NOTICE|LOG_AUTH,
 	"gethostby*.gethostanswer: asked for \"%s %s %s\", got type \"%s\"",
 				       qname, p_class(C_IN), p_type(qtype),

Modified: user/thompsa/usb/lib/libc/stdlib/atol.3
==============================================================================
--- user/thompsa/usb/lib/libc/stdlib/atol.3	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/lib/libc/stdlib/atol.3	Sun Feb  8 17:49:32 2009	(r188317)
@@ -32,7 +32,7 @@
 .\"     @(#)atol.3	8.1 (Berkeley) 6/4/93
 .\" $FreeBSD$
 .\"
-.Dd November 28, 2001
+.Dd February 1, 2009
 .Dt ATOL 3
 .Os
 .Sh NAME
@@ -78,13 +78,42 @@ representation.
 It is equivalent to:
 .Pp
 .Dl "strtoll(nptr, (char **)NULL, 10);"
+.Sh COMPATIBILITY
+The
+.Fx
+implementations of the
+.Fn atol
+and
+.Fn atoll
+functions are thin wrappers around
+.Fn strtol
+and
+.Fn stroll
+respectively, so these functions will affect the value of
+.Va errno
+in the same way that the
+.Fn strtol
+and
+.Fn stroll
+functions are able to.
+This behavior of
+.Fn atol
+and
+.Fn atoll
+is not required by
+.St -isoC
+or
+.St -isoC-c99 ,
+but it is allowed by all of
+.St -isoC , St -isoC-99
+and
+.St -p1003.1-2001 .
 .Sh ERRORS
 The functions
 .Fn atol
 and
 .Fn atoll
-need not
-affect the value of
+may affect the value of
 .Va errno
 on an error.
 .Sh SEE ALSO

Modified: user/thompsa/usb/lib/libc/string/memchr.c
==============================================================================
--- user/thompsa/usb/lib/libc/string/memchr.c	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/lib/libc/string/memchr.c	Sun Feb  8 17:49:32 2009	(r188317)
@@ -45,7 +45,7 @@ memchr(const void *s, int c, size_t n)
 		const unsigned char *p = s;
 
 		do {
-			if (*p++ == c)
+			if (*p++ == (unsigned char)c)
 				return ((void *)(p - 1));
 		} while (--n != 0);
 	}

Modified: user/thompsa/usb/lib/libc_r/uthread/uthread_init.c
==============================================================================
--- user/thompsa/usb/lib/libc_r/uthread/uthread_init.c	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/lib/libc_r/uthread/uthread_init.c	Sun Feb  8 17:49:32 2009	(r188317)
@@ -95,6 +95,7 @@ static void *references[] = {
 	&_getsockopt,
 	&_ioctl,
 	&_kevent,
+	&_kqueue,
 	&_listen,
 	&_nanosleep,
 	&_open,

Modified: user/thompsa/usb/lib/msun/src/math.h
==============================================================================
--- user/thompsa/usb/lib/msun/src/math.h	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/lib/msun/src/math.h	Sun Feb  8 17:49:32 2009	(r188317)
@@ -70,12 +70,12 @@ extern const union __nan_un {
 
 /* XXX We need a <machine/math.h>. */
 #if defined(__ia64__) || defined(__sparc64__)
-#define	FP_FAST_FMA
+#define	FP_FAST_FMA	1
 #endif
 #ifdef __ia64__
-#define	FP_FAST_FMAL
+#define	FP_FAST_FMAL	1
 #endif
-#define	FP_FAST_FMAF
+#define	FP_FAST_FMAF	1
 
 /* Symbolic constants to classify floating point numbers. */
 #define	FP_INFINITE	0x01

Modified: user/thompsa/usb/sbin/ifconfig/ifieee80211.c
==============================================================================
--- user/thompsa/usb/sbin/ifconfig/ifieee80211.c	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/sbin/ifconfig/ifieee80211.c	Sun Feb  8 17:49:32 2009	(r188317)
@@ -99,10 +99,6 @@
 #define	IEEE80211_FIXED_RATE_NONE	0xff
 #endif
 
-#define	REQ_ECM		0x01000000	/* enable if ECM set */
-#define	REQ_OUTDOOR	0x02000000	/* enable for outdoor operation */
-#define	REQ_FLAGS	0xff000000	/* private flags, don't pass to os */
-
 /* XXX need these publicly defined or similar */
 #ifndef IEEE80211_NODE_AUTH
 #define	IEEE80211_NODE_AUTH	0x0001		/* authorized for data */
@@ -1802,6 +1798,57 @@ chanfind(const struct ieee80211_channel 
 	return 0;
 }
 
+/*
+ * Check channel compatibility.
+ */
+static int
+checkchan(const struct ieee80211req_chaninfo *avail, int freq, int flags)
+{
+	flags &= ~REQ_FLAGS;
+	/*
+	 * Check if exact channel is in the calibration table;
+	 * everything below is to deal with channels that we
+	 * want to include but that are not explicitly listed.
+	 */
+	if (flags & IEEE80211_CHAN_HT40) {
+		/* NB: we use an HT40 channel center that matches HT20 */
+		flags = (flags &~ IEEE80211_CHAN_HT40) | IEEE80211_CHAN_HT20;
+	}
+	if (chanlookup(avail->ic_chans, avail->ic_nchans, freq, flags) != NULL)
+		return 1;
+	if (flags & IEEE80211_CHAN_GSM) {
+		/*
+		 * XXX GSM frequency mapping is handled in the kernel
+		 * so we cannot find them in the calibration table;
+		 * just accept the channel and the kernel will reject
+		 * the channel list if it's wrong.
+		 */
+		return 1;
+	}
+	/*
+	 * If this is a 1/2 or 1/4 width channel allow it if a full
+	 * width channel is present for this frequency, and the device
+	 * supports fractional channels on this band.  This is a hack
+	 * that avoids bloating the calibration table; it may be better
+	 * by per-band attributes though (we are effectively calculating
+	 * this attribute by scanning the channel list ourself).
+	 */
+	if ((flags & (IEEE80211_CHAN_HALF | IEEE80211_CHAN_QUARTER)) == 0)
+		return 0;
+	if (chanlookup(avail->ic_chans, avail->ic_nchans, freq,
+	    flags &~ (IEEE80211_CHAN_HALF | IEEE80211_CHAN_QUARTER)) == NULL)
+		return 0;
+	if (flags & IEEE80211_CHAN_HALF) {
+		return chanfind(avail->ic_chans, avail->ic_nchans,
+		    IEEE80211_CHAN_HALF |
+		       (flags & (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_5GHZ)));
+	} else {
+		return chanfind(avail->ic_chans, avail->ic_nchans,
+		    IEEE80211_CHAN_QUARTER |
+			(flags & (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_5GHZ)));
+	}
+}
+
 static void
 regdomain_addchans(struct ieee80211req_chaninfo *ci,
 	const netband_head *bands,
@@ -1812,15 +1859,12 @@ regdomain_addchans(struct ieee80211req_c
 	const struct netband *nb;
 	const struct freqband *b;
 	struct ieee80211_channel *c, *prev;
-	int freq, channelSep, hasHalfChans, hasQuarterChans;
+	int freq, hi_adj, lo_adj, channelSep;
+	uint32_t flags;
 
+	hi_adj = (chanFlags & IEEE80211_CHAN_HT40U) ? -20 : 0;
+	lo_adj = (chanFlags & IEEE80211_CHAN_HT40D) ? 20 : 0;
 	channelSep = (chanFlags & IEEE80211_CHAN_2GHZ) ? 0 : 40;
-	hasHalfChans = chanfind(avail->ic_chans, avail->ic_nchans,
-	    IEEE80211_CHAN_HALF |
-	       (chanFlags & (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_5GHZ)));
-	hasQuarterChans = chanfind(avail->ic_chans, avail->ic_nchans,
-	    IEEE80211_CHAN_QUARTER |
-	        (chanFlags & (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_5GHZ)));
 	LIST_FOREACH(nb, bands, next) {
 		b = nb->band;
 		if (verbose) {
@@ -1831,63 +1875,80 @@ regdomain_addchans(struct ieee80211req_c
 			putchar('\n');
 		}
 		prev = NULL;
-		for (freq = b->freqStart; freq <= b->freqEnd; freq += b->chanSep) {
-			uint32_t flags = nb->flags | b->flags;
-
-			/* check if device can operate on this frequency */
+		for (freq = b->freqStart + lo_adj;
+		     freq <= b->freqEnd + hi_adj; freq += b->chanSep) {
+			/*
+			 * Construct flags for the new channel.  We take
+			 * the attributes from the band descriptions except
+			 * for HT40 which is enabled generically (i.e. +/-
+			 * extension channel) in the band description and
+			 * then constrained according by channel separation.
+			 */
+			flags = nb->flags | b->flags;
+			if (flags & IEEE80211_CHAN_HT) {
+				/*
+				 * HT channels are generated specially; we're
+				 * called to add HT20, HT40+, and HT40- chan's
+				 * so we need to expand only band specs for
+				 * the HT channel type being added.
+				 */
+				if ((chanFlags & IEEE80211_CHAN_HT20) &&
+				    (flags & IEEE80211_CHAN_HT20) == 0) {
+					if (verbose)
+						printf("%u: skip, not an "
+						    "HT20 channel\n", freq);
+					continue;
+				}
+				if ((chanFlags & IEEE80211_CHAN_HT40) &&
+				    (flags & IEEE80211_CHAN_HT40) == 0) {
+					if (verbose)
+						printf("%u: skip, not an "
+						    "HT40 channel\n", freq);
+					continue;
+				}
+				/*
+				 * DFS and HT40 don't mix.  This should be
+				 * expressed in the regdomain database but
+				 * just in case enforce it here.
+				 */
+				if ((chanFlags & IEEE80211_CHAN_HT40) &&
+				    (flags & IEEE80211_CHAN_DFS)) {
+					if (verbose)
+						printf("%u: skip, HT40+DFS "
+						    "not permitted\n", freq);
+					continue;
+				}
+				/* NB: HT attribute comes from caller */
+				flags &= ~IEEE80211_CHAN_HT;
+				flags |= chanFlags & IEEE80211_CHAN_HT;
+			}
 			/*
-			 * XXX GSM frequency mapping is handled in the kernel
-			 * so we cannot find them in the calibration table;
-			 * just construct the list and the kernel will reject
-			 * if it's wrong.
+			 * Check if device can operate on this frequency.
 			 */
-			if (chanlookup(avail->ic_chans, avail->ic_nchans, freq, chanFlags) == NULL &&
-			    (flags & IEEE80211_CHAN_GSM) == 0) {
+			if (!checkchan(avail, freq, flags)) {
 				if (verbose) {
 					printf("%u: skip, ", freq);
-					printb("flags", chanFlags,
+					printb("flags", flags,
 					    IEEE80211_CHAN_BITS);
 					printf(" not available\n");
 				}
 				continue;
 			}
-			if ((flags & IEEE80211_CHAN_HALF) && !hasHalfChans) {
+			if ((flags & REQ_ECM) && !reg->ecm) {
 				if (verbose)
-					printf("%u: skip, device does not "
-					    "support half-rate channel\n",
-					    freq);
+					printf("%u: skip, ECM channel\n", freq);
 				continue;
 			}
-			if ((flags & IEEE80211_CHAN_QUARTER) &&
-			    !hasQuarterChans) {
+			if ((flags & REQ_INDOOR) && reg->location == 'O') {
 				if (verbose)
-					printf("%u: skip, device does not "
-					    "support quarter-rate channel\n",
+					printf("%u: skip, indoor channel\n",
 					    freq);
 				continue;
 			}
-			if ((flags & IEEE80211_CHAN_HT20) &&
-			    (chanFlags & IEEE80211_CHAN_HT20) == 0) {
-				if (verbose)
-					printf("%u: skip, device does not "
-					    "support HT20 operation\n", freq);
-				continue;
-			}
-			if ((flags & IEEE80211_CHAN_HT40) &&
-			    (chanFlags & IEEE80211_CHAN_HT40) == 0) {
-				if (verbose)
-					printf("%u: skip, device does not "
-					    "support HT40 operation\n", freq);
-				continue;
-			}
-			if ((flags & REQ_ECM) && !reg->ecm) {
-				if (verbose)
-					printf("%u: skip, ECM channel\n", freq);
-				continue;
-			}
 			if ((flags & REQ_OUTDOOR) && reg->location == 'I') {
 				if (verbose)
-					printf("%u: skip, outdoor channel\n", freq);
+					printf("%u: skip, outdoor channel\n",
+					    freq);
 				continue;
 			}
 			if ((flags & IEEE80211_CHAN_HT40) &&
@@ -1907,8 +1968,7 @@ regdomain_addchans(struct ieee80211req_c
 			c = &ci->ic_chans[ci->ic_nchans++];
 			memset(c, 0, sizeof(*c));
 			c->ic_freq = freq;
-			c->ic_flags = chanFlags |
-			    (flags &~ (REQ_FLAGS | IEEE80211_CHAN_HT40));
+			c->ic_flags = flags;
 			if (c->ic_flags & IEEE80211_CHAN_DFS)
 				c->ic_maxregpower = nb->maxPowerDFS;
 			else
@@ -1973,27 +2033,31 @@ regdomain_makechannels(
 		if (!LIST_EMPTY(&rd->bands_11a))
 			regdomain_addchans(ci, &rd->bands_11a, reg,
 			    IEEE80211_CHAN_A, &dc->dc_chaninfo);
-		if (!LIST_EMPTY(&rd->bands_11na)) {
+		if (!LIST_EMPTY(&rd->bands_11na) && dc->dc_htcaps != 0) {
 			regdomain_addchans(ci, &rd->bands_11na, reg,
 			    IEEE80211_CHAN_A | IEEE80211_CHAN_HT20,
 			    &dc->dc_chaninfo);
-			regdomain_addchans(ci, &rd->bands_11na, reg,
-			    IEEE80211_CHAN_A | IEEE80211_CHAN_HT40U,
-			    &dc->dc_chaninfo);
-			regdomain_addchans(ci, &rd->bands_11na, reg,
-			    IEEE80211_CHAN_A | IEEE80211_CHAN_HT40D,
-			    &dc->dc_chaninfo);
+			if (dc->dc_htcaps & IEEE80211_HTCAP_CHWIDTH40) {
+				regdomain_addchans(ci, &rd->bands_11na, reg,
+				    IEEE80211_CHAN_A | IEEE80211_CHAN_HT40U,
+				    &dc->dc_chaninfo);
+				regdomain_addchans(ci, &rd->bands_11na, reg,
+				    IEEE80211_CHAN_A | IEEE80211_CHAN_HT40D,
+				    &dc->dc_chaninfo);
+			}
 		}
-		if (!LIST_EMPTY(&rd->bands_11ng)) {
+		if (!LIST_EMPTY(&rd->bands_11ng) && dc->dc_htcaps != 0) {
 			regdomain_addchans(ci, &rd->bands_11ng, reg,
 			    IEEE80211_CHAN_G | IEEE80211_CHAN_HT20,
 			    &dc->dc_chaninfo);
-			regdomain_addchans(ci, &rd->bands_11ng, reg,
-			    IEEE80211_CHAN_G | IEEE80211_CHAN_HT40U,
-			    &dc->dc_chaninfo);
-			regdomain_addchans(ci, &rd->bands_11ng, reg,
-			    IEEE80211_CHAN_G | IEEE80211_CHAN_HT40D,
-			    &dc->dc_chaninfo);
+			if (dc->dc_htcaps & IEEE80211_HTCAP_CHWIDTH40) {
+				regdomain_addchans(ci, &rd->bands_11ng, reg,
+				    IEEE80211_CHAN_G | IEEE80211_CHAN_HT40U,
+				    &dc->dc_chaninfo);
+				regdomain_addchans(ci, &rd->bands_11ng, reg,
+				    IEEE80211_CHAN_G | IEEE80211_CHAN_HT40D,
+				    &dc->dc_chaninfo);
+			}
 		}
 		qsort(ci->ic_chans, ci->ic_nchans, sizeof(ci->ic_chans[0]),
 		    regdomain_sort);

Modified: user/thompsa/usb/sbin/ifconfig/regdomain.c
==============================================================================
--- user/thompsa/usb/sbin/ifconfig/regdomain.c	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/sbin/ifconfig/regdomain.c	Sun Feb  8 17:49:32 2009	(r188317)
@@ -208,6 +208,9 @@ decode_flag(struct mystate *mt, const ch
 		FLAG(IEEE80211_CHAN_108A),
 		FLAG(IEEE80211_CHAN_108G),
 #undef FLAG
+		{ "ECM",	3,	REQ_ECM },
+		{ "INDOOR",	6,	REQ_INDOOR },
+		{ "OUTDOOR",	7,	REQ_OUTDOOR },
 	};
 	int i;
 

Modified: user/thompsa/usb/sbin/ifconfig/regdomain.h
==============================================================================
--- user/thompsa/usb/sbin/ifconfig/regdomain.h	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/sbin/ifconfig/regdomain.h	Sun Feb  8 17:49:32 2009	(r188317)
@@ -45,6 +45,13 @@ struct freqband {
 	LIST_ENTRY(freqband) next;
 };
 
+/* private flags, don't pass to os */
+#define	REQ_ECM		0x1		/* enable if ECM set */
+#define	REQ_INDOOR	0x2		/* enable only for indoor operation */
+#define	REQ_OUTDOOR	0x4		/* enable only for outdoor operation */
+
+#define	REQ_FLAGS	(REQ_ECM|REQ_INDOOR|REQ_OUTDOOR)
+
 struct netband {
 	const struct freqband *band;	/* channel list description */
 	uint8_t		maxPower;	/* regulatory cap on tx power (dBm) */

Modified: user/thompsa/usb/sbin/ipfw/ipfw.8
==============================================================================
--- user/thompsa/usb/sbin/ipfw/ipfw.8	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/sbin/ipfw/ipfw.8	Sun Feb  8 17:49:32 2009	(r188317)
@@ -2183,17 +2183,173 @@ Redirect and LSNAT support follow closel
 See Section
 .Sx EXAMPLES
 for some examples on how to do redirect and lsnat.
+.Sh SCTP NAT SUPPORT
+Sctp nat can be configured in a simillar manner to TCP through the
+ipfw command line tool
+.Xr ipfw 8
+, the main difference is that 
+.Nm sctp nat 
+does not do port
+translation. Since the local and global side ports will be the same,
+there is no need to specify both. Ports are redirected as follows:
+.Bd -ragged -offset indent
+.Bk -words
+.Cm nat 
+.Ar nat_number 
+.Cm config if
+.Ar nic
+.Cm redirect_port sctp
+.Ar ip_address [,addr_list] {[port | port-port] [,ports]}
+.Ek
+.Ed
+.Pp
+.
+Most
+.B sctp nat
+configuration can be done in real-time through the
+.B sysctl(8)
+interface. All may be changed dynamically, though the hash_table size will only
+change for new 
+.Nm nat 
+instances. See 
+.Sx SYSCTL VARIABLES 
+for more info.
 .Sh SYSCTL VARIABLES
 A set of
 .Xr sysctl 8
 variables controls the behaviour of the firewall and
 associated modules
-.Pq Nm dummynet , bridge .
+.Pq Nm dummynet , bridge , sctp nat .
 These are shown below together with their default value
 (but always check with the
 .Xr sysctl 8
 command what value is actually in use) and meaning:
 .Bl -tag -width indent
+.It Va net.inet.ip.alias.sctp.accept_global_ootb_addip: No 0
+Defines how the 
+.Nm nat 
+responds to receipt of global OOTB ASCONF-AddIP:
+.Bl -tag -width indent
+.It Cm 0
+No response (unless a partially matching association exists -
+ports and vtags match but global address does not)
+.It Cm 1
+.Nm nat 
+will accept and process all OOTB global AddIP messages.
+.El
+.Pp
+Option 1 should never be selected as this forms a security risk. An attacker can
+establish multiple fake associations by sending AddIP messages.
+.It Va net.inet.ip.alias.sctp.chunk_proc_limit: No 5
+Defines the maximum number of chunks in an SCTP packet that will be parsed for a
+packet that matches an existing association. This value is enforced to be greater or equal
+than 
+.Cm net.inet.ip.alias.sctp.initialising_chunk_proc_limit . 
+A high value is
+a DoS risk yet setting too low a value may result in important control chunks in
+the packet not being located and parsed.
+.It Va net.inet.ip.alias.sctp.error_on_ootb: No 1
+Defines when the 
+.Nm nat 
+responds to any Out-of-the-Blue (OOTB) packets with ErrorM
+packets. An OOTB packet is a packet that arrives with no existing association
+registered in the 
+.Nm nat 
+and is not an INIT or ASCONF-AddIP packet:
+.Bl -tag -width indent
+.It Cm 0
+ErrorM is never sent in response to OOTB packets.
+.It Cm 1
+ErrorM is only sent to OOTB packets received on the local side.
+.It Cm 2
+ErrorM is sent to the local side and on the global side ONLY if there is a
+partial match (ports and vtags match but the source global IP does not). This
+value is only useful if the 
+.Nm nat 
+is tracking global IP addresses.
+.It Cm 3
+ErrorM is sent in response to all OOTB packets on both the local and global side
+(DoS risk).
+.El
+.Pp
+At the moment the default is 0, since the ErrorM packet is not yet
+supported by most SCTP stacks. When it is supported, and if not tracking
+global addresses, we recommend setting this value to 1 to allow
+multi-homed local hosts to function with the 
+.Nm nat .
+To track global addresses, we recommend setting this value to 2 to
+allow global hosts to be informed when they need to (re)send an
+ASCONF-AddIP. Value 3 should never be chosen (except for debugging) as
+the
+.Nm nat 
+will respond to all OOTB global packets (a DoS risk).
+.It Va net.inet.ip.alias.sctp.hashtable_size: No 2003
+Size of hash tables used for 
+.Nm nat 
+lookups (100 < prime_number > 1000001)
+This value sets the 
+.Nm hash table 
+size for any future created 
+.Nm nat
+instance and therefore must be set prior to creating a 
+.Nm nat 
+instance.
+The table sizes my be changed to suit specific needs. If there will be few
+concurrent associations, and memory is scarce, you may make these smaller.  If
+there will be many thousands (or millions) of concurrent associations, you
+should make these larger. A prime number is best for the table size. The sysctl
+update function will adjust your input value to the next highest prime number.
+.It Va net.inet.ip.alias.sctp.holddown_time:  No 0
+Hold association in table for this many seconds after receiving a
+SHUTDOWN-COMPLETE.  This allows endpoints to correct shutdown gracefully if a
+shutdown_complete is lost and retransmissions are required.
+.It Va net.inet.ip.alias.sctp.init_timer: No 15
+Timeout value while waiting for (INIT-ACK|AddIP-ACK).
+This value cannot be 0.
+.It Va net.inet.ip.alias.sctp.initialising_chunk_proc_limit: No 2
+Defines the maximum number of chunks in an SCTP packet that will be parsed when
+no existing association exists that matches that packet. Ideally this packet
+will only be an INIT or ASCONF-AddIP packet. A higher value may become a DoS
+risk as malformed packets can consume processing resources.
+.It Va net.inet.ip.alias.sctp.param_proc_limit: No 25
+Defines the maximum number of parameters within a chunk that will be parsed in a
+packet. As for other similar sysctl variables, larger values pose a DoS risk.
+.It Va net.inet.ip.alias.sctp.log_level: No 0 
+Level of detail in the system log messages (0 \- minimal, 1 \- event,
+2 \- info, 3 \- detail, 4 \- debug, 5 \- max debug). May be a good
+option in high loss environments.
+.It Va net.inet.ip.alias.sctp.shutdown_time: No 15
+Timeout value while waiting for SHUTDOWN-COMPLETE.
+This value cannot be 0.
+.It Va net.inet.ip.alias.sctp.track_global_addresses: No 0
+Enables/disables global IP address tracking within the 
+.Nm nat 
+and places an
+upper limit on the number of addresses tracked for each association:
+.Bl -tag -width indent
+.It Cm 0
+Global tracking is disabled
+.It Cm >1
+Enables tracking, the maximum number of addresses tracked for each
+association is limited to this value
+.El
+.Pp
+This variable is fully dynamic, the new value will be adopted for all newly
+arriving associations, existing association are treated as they were previously.
+Global tracking will decrease the number of collisions within the 
+.Nm nat 
+at a cost
+of increased processing load, memory usage, complexity, and possible 
+.Nm nat 
+state
+problems in complex networks with multiple 
+.Nm nats . 
+We recommend not tracking
+global IP addresses, this will still result in a fully functional 
+.Nm nat .
+.It Va net.inet.ip.alias.sctp.up_timer: No 300
+Timeout value to keep an association up with no traffic.
+This value cannot be 0.
 .It Va net.inet.ip.dummynet.expire : No 1
 Lazily delete dynamic pipes/queue once they have no pending traffic.
 You can disable this by setting the variable to 0, in which case
@@ -2718,6 +2874,15 @@ as part of a Summer of Code 2005 project
 Work on
 .Nm dummynet
 traffic shaper supported by Akamba Corp.
+.Pp
+Sctp
+.Nm nat
+support has been developed by
+.An The Centre for Advanced Internet Architectures (CAIA) Aq http://www.caia.swin.edu.au .
+The primary developers and maintainers are David Hayes and Jason But.
+For further information visit:
+.Aq http://www.caia.swin.edu.au/urp/SONATA
+.
 .Sh BUGS
 The syntax has grown over the years and sometimes it might be confusing.
 Unfortunately, backward compatibility prevents cleaning up mistakes

Modified: user/thompsa/usb/sbin/ipfw/nat.c
==============================================================================
--- user/thompsa/usb/sbin/ipfw/nat.c	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/sbin/ipfw/nat.c	Sun Feb  8 17:49:32 2009	(r188317)
@@ -257,7 +257,9 @@ StrToProto (const char* str)
 	if (!strcmp (str, "udp"))
 		return IPPROTO_UDP;
 
-	errx (EX_DATAERR, "unknown protocol %s. Expected tcp or udp", str);
+	if (!strcmp (str, "sctp"))
+		return IPPROTO_SCTP;
+	errx (EX_DATAERR, "unknown protocol %s. Expected sctp, tcp or udp", str);
 }
 
 static int 
@@ -433,13 +435,27 @@ setup_redir_port(char *spool_buf, int le
 		strncpy(tmp_spool_buf, *av, strlen(*av)+1);
 		lsnat = 1;
 	} else {
-		if (StrToAddrAndPortRange (*av, &r->laddr, protoName, 
-		    &portRange) != 0)
-			errx(EX_DATAERR, "redirect_port:"
-			    "invalid local port range");
+		/*
+		 * The sctp nat does not allow the port numbers to be mapped to 
+		 * new port numbers. Therefore, no ports are to be specified 
+		 * in the target port field.
+		 */
+		if (r->proto == IPPROTO_SCTP) {
+			if (strchr (*av, ':'))
+				errx(EX_DATAERR, "redirect_port:"
+				    "port numbers do not change in sctp, so do not "
+				    "specify them as part of the target");
+			else
+				StrToAddr(*av, &r->laddr);
+		} else {
+			if (StrToAddrAndPortRange (*av, &r->laddr, protoName, 
+				&portRange) != 0)
+				errx(EX_DATAERR, "redirect_port:"
+				    "invalid local port range");
 
-		r->lport = GETLOPORT(portRange);
-		numLocalPorts = GETNUMPORTS(portRange);
+			r->lport = GETLOPORT(portRange);
+			numLocalPorts = GETNUMPORTS(portRange);
+		}
 	}
 	INC_ARGCV();	
 
@@ -463,6 +479,10 @@ setup_redir_port(char *spool_buf, int le
 	}
 
 	r->pport = GETLOPORT(portRange);
+	if (r->proto == IPPROTO_SCTP) { /* so the logic below still works */
+		numLocalPorts = GETNUMPORTS(portRange);
+		r->lport = r->pport;
+	}
 	r->pport_cnt = GETNUMPORTS(portRange);
 	INC_ARGCV();
 
@@ -518,14 +538,31 @@ setup_redir_port(char *spool_buf, int le
 				goto nospace;
 			len -= SOF_SPOOL;
 			space += SOF_SPOOL;
-			if (StrToAddrAndPortRange(sep, &tmp->addr, protoName, 
-			    &portRange) != 0)
-				errx(EX_DATAERR, "redirect_port:"
-				    "invalid local port range");
-			if (GETNUMPORTS(portRange) != 1)
-				errx(EX_DATAERR, "redirect_port: local port"
-				    "must be single in this context");
-			tmp->port = GETLOPORT(portRange);
+			/*
+			 * The sctp nat does not allow the port numbers to be mapped to new port numbers
+			 * Therefore, no ports are to be specified in the target port field
+			 */
+			if (r->proto == IPPROTO_SCTP) {
+				if (strchr (sep, ':')) {
+					errx(EX_DATAERR, "redirect_port:"
+					    "port numbers do not change in "
+					    "sctp, so do not specify them as "
+					    "part of the target");
+				} else {
+					StrToAddr(sep, &tmp->addr);
+					tmp->port = r->pport;
+				}
+			} else {
+				if (StrToAddrAndPortRange(sep, &tmp->addr, 
+					protoName, &portRange) != 0)
+					errx(EX_DATAERR, "redirect_port:"
+					    "invalid local port range");
+				if (GETNUMPORTS(portRange) != 1)
+					errx(EX_DATAERR, "redirect_port: "
+					    "local port must be single in "
+					    "this context");
+				tmp->port = GETLOPORT(portRange);
+			}
 			r->spool_cnt++;	
 			/* Point to the next possible cfg_spool. */
 			spool_buf = &spool_buf[SOF_SPOOL];

Modified: user/thompsa/usb/sbin/mount_nfs/mount_nfs.c
==============================================================================
--- user/thompsa/usb/sbin/mount_nfs/mount_nfs.c	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/sbin/mount_nfs/mount_nfs.c	Sun Feb  8 17:49:32 2009	(r188317)
@@ -469,6 +469,12 @@ copyopt(struct iovec **newiov, int *newi
 		build_iovec(newiov, newiovlen, name, value, len);
 }
 
+/*
+ * XXX: This function is provided for backwards
+ *      compatibility with older kernels which did not support
+ *      passing NFS mount options to nmount() as individual
+ *      parameters.  It should be eventually be removed.
+ */
 int
 fallback_mount(struct iovec *iov, int iovlen, int mntflags)
 {
@@ -587,24 +593,28 @@ fallback_mount(struct iovec *iov, int io
 		if (ret != 1 || args.acregmin < 0) {
 			errx(1, "illegal acregmin: %s", opt);
 		}
+		args.flags |= NFSMNT_ACREGMIN;
 	}
 	if (findopt(iov, iovlen, "acregmax", &opt, NULL) == 0) {
 		ret = sscanf(opt, "%d", &args.acregmax);
 		if (ret != 1 || args.acregmax < 0) {
 			errx(1, "illegal acregmax: %s", opt);
 		}
+		args.flags |= NFSMNT_ACREGMAX;
 	}
 	if (findopt(iov, iovlen, "acdirmin", &opt, NULL) == 0) {
 		ret = sscanf(opt, "%d", &args.acdirmin);
 		if (ret != 1 || args.acdirmin < 0) {
 			errx(1, "illegal acdirmin: %s", opt);
 		}
+		args.flags |= NFSMNT_ACDIRMIN;
 	}
 	if (findopt(iov, iovlen, "acdirmax", &opt, NULL) == 0) {
 		ret = sscanf(opt, "%d", &args.acdirmax);
 		if (ret != 1 || args.acdirmax < 0) {
 			errx(1, "illegal acdirmax: %s", opt);
 		}
+		args.flags |= NFSMNT_ACDIRMAX;
 	}
 	if (findopt(iov, iovlen, "deadthresh", &opt, NULL) == 0) {
 		ret = sscanf(opt, "%d", &args.deadthresh);

Modified: user/thompsa/usb/share/man/man4/rum.4
==============================================================================
--- user/thompsa/usb/share/man/man4/rum.4	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/share/man/man4/rum.4	Sun Feb  8 17:49:32 2009	(r188317)
@@ -91,6 +91,7 @@ including:
 .It "Belkin F5D7050 ver 3" Ta USB
 .It "Belkin F5D9050 ver 3" Ta USB
 .It "Buffalo WLI-U2-SG54HP" Ta USB
+.It "Buffalo WLI-U2-SG54HG" Ta USB
 .It "Buffalo WLI-U2-G54HP" Ta USB
 .It "CNet CWD-854 ver F" Ta USB
 .It "Conceptronic C54RU ver 2" Ta USB

Modified: user/thompsa/usb/share/man/man4/smb.4
==============================================================================
--- user/thompsa/usb/share/man/man4/smb.4	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/share/man/man4/smb.4	Sun Feb  8 17:49:32 2009	(r188317)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 25, 1998
+.Dd February 6, 2009
 .Dt SMB 4
 .Os
 .Sh NAME
@@ -72,6 +72,9 @@ The
 .Fa slave
 field is always used, and provides the address of the
 SMBus slave device to talk to.
+The slave address is specified in the seven most significant bits
+.Pq i.e. Dq "left-justified" .
+The least significant bit of the slave address must be zero.
 .Pp
 .Bl -column ".Dv SMB_QUICK_WRITE" -compact
 .It Em Ioctl Ta Em Description

Modified: user/thompsa/usb/sys/amd64/conf/NOTES
==============================================================================
--- user/thompsa/usb/sys/amd64/conf/NOTES	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/sys/amd64/conf/NOTES	Sun Feb  8 17:49:32 2009	(r188317)
@@ -150,6 +150,11 @@ device		pci
 # AGP GART support
 device		agp
 
+#
+# AGP debugging.
+#
+options		AGP_DEBUG
+
 
 #####################################################################
 # HARDWARE DEVICE CONFIGURATION
@@ -267,7 +272,6 @@ options 	DRM_DEBUG	# Include debug print
 # nfe:	nVidia nForce MCP on-board Ethernet Networking (BSD open source)
 # nve:	nVidia nForce MCP on-board Ethernet Networking
 # ral:	Ralink Technology IEEE 802.11 wireless adapter
-# ural:	Ralink Technology RT2500USB IEEE 802.11 wireless adapter
 # wpi:	Intel 3945ABG Wireless LAN controller
 
 device		ed
@@ -277,10 +281,9 @@ options 	ED_SIC
 device		iwi
 device		iwn
 device		ipw
-device		nfe		# nVidia nForce MCP on-board Ethernet Networking
-device		nve		# nVidia nForce MCP on-board Ethernet Networking
+device		nfe
+device		nve
 device		ral
-device		ural
 device		wpi
 
 device		ath			# Atheros pci/cardbus NIC's
@@ -356,9 +359,11 @@ options 	SAFE_RNDTEST	# enable rndtest s
 # Miscellaneous hardware:
 #
 # ipmi: Intelligent Platform Management Interface
+# pbio: Parallel (8255 PPI) basic I/O (mode 0) port (e.g. Advantech PCL-724)
 # smbios: DMI/SMBIOS entry point
 # vpd: Vital Product Data kernel interface
 # asmc: Apple System Management Controller
+# si: Specialix International SI/XIO or SX intelligent serial card
 
 # Notes on the Specialix SI/XIO driver:
 #  The host card is memory, not IO mapped.
@@ -367,13 +372,14 @@ options 	SAFE_RNDTEST	# enable rndtest s
 #  The cards can use an IRQ of 11, 12 or 15.
 
 device		ipmi
-# Parallel (8255 PPI) basic I/O (mode 0) port (e.g. Advantech PCL-724)
 device		pbio
 hint.pbio.0.at="isa"
 hint.pbio.0.port="0x360"
 device		smbios
 device		vpd
 device		asmc
+#device		si
+
 #
 # Laptop/Notebook options:
 #

Modified: user/thompsa/usb/sys/amd64/include/legacyvar.h
==============================================================================
--- user/thompsa/usb/sys/amd64/include/legacyvar.h	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/sys/amd64/include/legacyvar.h	Sun Feb  8 17:49:32 2009	(r188317)
@@ -43,12 +43,12 @@ LEGACY_ACCESSOR(pcibus,			PCIBUS,		uint3
 #undef LEGACY_ACCESSOR
 
 int	legacy_pcib_maxslots(device_t dev);
-uint32_t legacy_pcib_read_config(device_t dev, int bus, int slot, int func,
-    int reg, int bytes);
+uint32_t legacy_pcib_read_config(device_t dev, u_int bus, u_int slot,
+    u_int func, u_int reg, int bytes);
 int	legacy_pcib_read_ivar(device_t dev, device_t child, int which,
     uintptr_t *result);
-void	legacy_pcib_write_config(device_t dev, int bus, int slot, int func,
-    int reg, u_int32_t data, int bytes);
+void	legacy_pcib_write_config(device_t dev, u_int bus, u_int slot,
+    u_int func, u_int reg, uint32_t data, int bytes);
 int	legacy_pcib_write_ivar(device_t dev, device_t child, int which,
     uintptr_t value);
 struct resource *legacy_pcib_alloc_resource(device_t dev, device_t child,

Modified: user/thompsa/usb/sys/amd64/pci/pci_bus.c
==============================================================================
--- user/thompsa/usb/sys/amd64/pci/pci_bus.c	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/sys/amd64/pci/pci_bus.c	Sun Feb  8 17:49:32 2009	(r188317)
@@ -55,9 +55,9 @@ legacy_pcib_maxslots(device_t dev)
 
 /* read configuration space register */
 
-u_int32_t
-legacy_pcib_read_config(device_t dev, int bus, int slot, int func,
-			int reg, int bytes)
+uint32_t
+legacy_pcib_read_config(device_t dev, u_int bus, u_int slot, u_int func,
+			u_int reg, int bytes)
 {
 	return(pci_cfgregread(bus, slot, func, reg, bytes));
 }
@@ -65,8 +65,8 @@ legacy_pcib_read_config(device_t dev, in
 /* write configuration space register */
 
 void
-legacy_pcib_write_config(device_t dev, int bus, int slot, int func,
-			 int reg, u_int32_t data, int bytes)
+legacy_pcib_write_config(device_t dev, u_int bus, u_int slot, u_int func,
+			 u_int reg, uint32_t data, int bytes)
 {
 	pci_cfgregwrite(bus, slot, func, reg, data, bytes);
 }

Modified: user/thompsa/usb/sys/conf/NOTES
==============================================================================
--- user/thompsa/usb/sys/conf/NOTES	Sun Feb  8 16:58:05 2009	(r188316)
+++ user/thompsa/usb/sys/conf/NOTES	Sun Feb  8 17:49:32 2009	(r188317)
@@ -714,40 +714,81 @@ device		mn	# Munich32x/Falc54 Nx64kbit/s
 #
 # Network interfaces:
 #  The `loop' device is MANDATORY when networking is enabled.
+device		loop
+
 #  The `ether' device provides generic code to handle
 #  Ethernets; it is MANDATORY when an Ethernet device driver is
 #  configured or token-ring is enabled.
+device		ether
+
 #  The `vlan' device implements the VLAN tagging of Ethernet frames
 #  according to IEEE 802.1Q.  It requires `device miibus'.
+device		vlan
+
 #  The `wlan' device provides generic code to support 802.11
 #  drivers, including host AP mode; it is MANDATORY for the wi,
 #  and ath drivers and will eventually be required by all 802.11 drivers.
+device		wlan
+options		IEEE80211_DEBUG		#enable debugging msgs
+options		IEEE80211_AMPDU_AGE	#age frames in AMPDU reorder q's
+
 #  The `wlan_wep', `wlan_tkip', and `wlan_ccmp' devices provide
 #  support for WEP, TKIP, and AES-CCMP crypto protocols optionally
 #  used with 802.11 devices that depend on the `wlan' module.
+device		wlan_wep
+device		wlan_ccmp
+device		wlan_tkip
+
 #  The `wlan_xauth' device provides support for external (i.e. user-mode)
 #  authenticators for use with 802.11 drivers that use the `wlan'
 #  module and support 802.1x and/or WPA security protocols.
+device		wlan_xauth
+
 #  The `wlan_acl' device provides a MAC-based access control mechanism
 #  for use with 802.11 drivers operating in ap mode and using the
 #  `wlan' module.
+#  The 'wlan_amrr' device provides AMRR transmit rate control algorithm
+device		wlan_acl
+device		wlan_amrr
+
+# Generic TokenRing
+device		token
+
 #  The `fddi' device provides generic code to support FDDI.
+device		fddi
+
 #  The `arcnet' device provides generic code to support Arcnet.
+device		arcnet
+
 #  The `sppp' device serves a similar role for certain types

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



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