Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 May 2009 21:03:11 GMT
From:      Andrew Thompson <thompsa@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 162970 for review
Message-ID:  <200905282103.n4SL3BOw007515@repoman.freebsd.org>

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

Change 162970 by thompsa@thompsa_burger on 2009/05/28 21:02:18

	IFC @162969

Affected files ...

.. //depot/projects/usb/src/sys/boot/common/ufsread.c#4 integrate
.. //depot/projects/usb/src/sys/boot/pc98/boot2/sys.c#2 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr.h#3 integrate
.. //depot/projects/usb/src/sys/compat/ndis/subr_usbd.c#12 integrate
.. //depot/projects/usb/src/sys/conf/NOTES#36 integrate
.. //depot/projects/usb/src/sys/conf/files#65 integrate
.. //depot/projects/usb/src/sys/conf/files.i386#25 integrate
.. //depot/projects/usb/src/sys/conf/options#28 integrate
.. //depot/projects/usb/src/sys/dev/ata/ata-usb.c#43 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/cxgb_main.c#18 integrate
.. //depot/projects/usb/src/sys/dev/if_ndis/if_ndis_usb.c#18 integrate
.. //depot/projects/usb/src/sys/dev/if_ndis/if_ndisvar.h#13 integrate
.. //depot/projects/usb/src/sys/dev/sound/usb/uaudio.c#44 integrate
.. //depot/projects/usb/src/sys/dev/sound/usb/uaudioreg.h#11 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/at91dci.c#20 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/at91dci.h#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/atmegadci.c#30 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/atmegadci.h#14 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/atmegadci_atmelarm.c#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/ehci.c#26 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/ehci.h#9 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/musb_otg.c#18 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/musb_otg.h#6 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/ohci.c#21 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/ohci.h#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/uhci.c#19 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/uhci.h#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/usb_controller.c#18 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/uss820dci.c#20 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/uss820dci.h#10 integrate
.. //depot/projects/usb/src/sys/dev/usb/input/uhid.c#11 integrate
.. //depot/projects/usb/src/sys/dev/usb/input/ukbd.c#13 integrate
.. //depot/projects/usb/src/sys/dev/usb/input/ums.c#14 integrate
.. //depot/projects/usb/src/sys/dev/usb/misc/udbp.c#10 integrate
.. //depot/projects/usb/src/sys/dev/usb/misc/ufm.c#6 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_aue.c#10 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_auereg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_axe.c#11 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_axereg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_cdce.c#13 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_cdcereg.h#4 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_cue.c#10 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_cuereg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_kue.c#10 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_kuereg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_rue.c#10 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_ruereg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_udav.c#10 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/if_udavreg.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/usb_ethernet.c#5 integrate
.. //depot/projects/usb/src/sys/dev/usb/net/usb_ethernet.h#5 integrate
.. //depot/projects/usb/src/sys/dev/usb/quirk/usb_quirk.c#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/u3g.c#14 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/uark.c#7 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/ubsa.c#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/ubser.c#11 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/uchcom.c#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/ucycom.c#10 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/ufoma.c#9 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/uftdi.c#9 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/ugensa.c#9 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/uipaq.c#9 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/ulpt.c#12 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/umct.c#11 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/umodem.c#13 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/umoscom.c#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/uplcom.c#10 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/usb_serial.c#7 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/usb_serial.h#5 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/uslcom.c#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/uvisor.c#10 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/uvscom.c#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/storage/umass.c#20 integrate
.. //depot/projects/usb/src/sys/dev/usb/storage/urio.c#11 integrate
.. //depot/projects/usb/src/sys/dev/usb/storage/ustorage_fs.c#18 integrate
.. //depot/projects/usb/src/sys/dev/usb/template/usb_template.c#7 integrate
.. //depot/projects/usb/src/sys/dev/usb/template/usb_template.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/template/usb_template_cdce.c#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/template/usb_template_msc.c#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/template/usb_template_mtp.c#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb.h#40 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_bus.h#12 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_busdma.c#9 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_busdma.h#7 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_cdc.h#11 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_compat_linux.c#39 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_compat_linux.h#14 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_controller.h#10 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_core.h#22 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_debug.c#7 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_debug.h#6 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_dev.c#23 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_dev.h#10 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_device.c#34 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_device.h#23 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_dynamic.c#6 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_dynamic.h#4 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_generic.c#18 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_generic.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_handle_request.c#9 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_hid.c#35 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_hid.h#19 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_hub.c#22 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_hub.h#11 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_ioctl.h#3 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_lookup.c#4 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_lookup.h#4 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_mbuf.c#4 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_mbuf.h#4 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_msctest.c#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_msctest.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_parse.c#4 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_parse.h#4 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_process.c#6 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_process.h#4 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_request.c#18 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_request.h#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#151 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_transfer.h#9 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_util.c#6 integrate
.. //depot/projects/usb/src/sys/dev/usb/usbhid.h#9 integrate
.. //depot/projects/usb/src/sys/dev/usb/wlan/if_rum.c#14 integrate
.. //depot/projects/usb/src/sys/dev/usb/wlan/if_rumvar.h#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/wlan/if_uath.c#11 integrate
.. //depot/projects/usb/src/sys/dev/usb/wlan/if_uathvar.h#4 integrate
.. //depot/projects/usb/src/sys/dev/usb/wlan/if_upgt.c#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/wlan/if_upgtvar.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/wlan/if_ural.c#14 integrate
.. //depot/projects/usb/src/sys/dev/usb/wlan/if_uralvar.h#8 integrate
.. //depot/projects/usb/src/sys/dev/usb/wlan/if_urtw.c#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/wlan/if_urtwvar.h#2 integrate
.. //depot/projects/usb/src/sys/dev/usb/wlan/if_zyd.c#14 integrate
.. //depot/projects/usb/src/sys/dev/usb/wlan/if_zydreg.h#6 integrate
.. //depot/projects/usb/src/sys/dev/xen/netfront/netfront.c#10 integrate
.. //depot/projects/usb/src/sys/fs/nfsclient/nfs_clbio.c#3 integrate
.. //depot/projects/usb/src/sys/fs/nfsclient/nfs_clnode.c#3 integrate
.. //depot/projects/usb/src/sys/fs/pseudofs/pseudofs_vnops.c#13 integrate
.. //depot/projects/usb/src/sys/fs/smbfs/smbfs_io.c#10 integrate
.. //depot/projects/usb/src/sys/i386/xen/xen_rtc.c#1 branch
.. //depot/projects/usb/src/sys/modules/Makefile#33 integrate
.. //depot/projects/usb/src/sys/modules/nfscl/Makefile#1 branch
.. //depot/projects/usb/src/sys/modules/nfscommon/Makefile#1 branch
.. //depot/projects/usb/src/sys/modules/nfsd/Makefile#1 branch
.. //depot/projects/usb/src/sys/modules/zfs/Makefile#9 integrate
.. //depot/projects/usb/src/sys/netinet6/icmp6.c#18 integrate
.. //depot/projects/usb/src/sys/netinet6/in6.h#8 integrate
.. //depot/projects/usb/src/sys/netinet6/in6_mcast.c#3 integrate
.. //depot/projects/usb/src/sys/netinet6/ip6_input.c#20 integrate
.. //depot/projects/usb/src/sys/netinet6/mld6.c#16 integrate
.. //depot/projects/usb/src/sys/nfsclient/nfs_bio.c#14 integrate
.. //depot/projects/usb/src/sys/rpc/xdr.h#3 integrate
.. //depot/projects/usb/src/sys/sys/queue.h#6 integrate
.. //depot/projects/usb/src/sys/vm/vm_object.c#16 integrate
.. //depot/projects/usb/src/sys/vm/vm_pageout.c#16 integrate
.. //depot/projects/usb/src/sys/xdr/xdr_mem.c#3 integrate
.. //depot/projects/usb/src/sys/xen/xenbus/xenbus_xs.c#6 integrate

Differences ...

==== //depot/projects/usb/src/sys/boot/common/ufsread.c#4 (text+ko) ====

@@ -44,9 +44,10 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/common/ufsread.c,v 1.18 2008/06/07 05:49:24 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/common/ufsread.c,v 1.19 2009/05/28 08:22:36 dfr Exp $");
 
 #include <ufs/ufs/dinode.h>
+#include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 #ifdef UFS_SMALL_CGBASE
 /* XXX: Revert to old (broken for over 1.5Tb filesystems) version of cgbase
@@ -93,7 +94,7 @@
 fsfind(const char *name, ino_t * ino)
 {
 	char buf[DEV_BSIZE];
-	struct dirent *d;
+	struct direct *d;
 	char *s;
 	ssize_t n;
 
@@ -104,7 +105,7 @@
 			if (ls)
 				printf("%s ", d->d_name);
 			else if (!strcmp(name, d->d_name)) {
-				*ino = d->d_fileno;
+				*ino = d->d_ino;
 				return d->d_type;
 			}
 			s += d->d_reclen;

==== //depot/projects/usb/src/sys/boot/pc98/boot2/sys.c#2 (text+ko) ====

@@ -27,14 +27,14 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/pc98/boot2/sys.c,v 1.7 2005/05/08 14:17:27 nyan Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/pc98/boot2/sys.c,v 1.8 2009/05/28 08:22:36 dfr Exp $");
 
 /*
  * Ported to PC-9801 by Yoshio Kimura
  */
 
 #include "boot.h"
-#include <sys/dirent.h>
+#include <ufs/ufs/dir.h>
 
 #if 0
 /* #define BUFSIZE 4096 */
@@ -142,7 +142,7 @@
 {
 	char *rest, ch;
 	int block, off, loc, ino = ROOTINO;
-	struct dirent *dp;
+	struct direct *dp;
 	char list_only;
 
 	list_only = (path[0] == '?' && path[1] == '\0');
@@ -174,12 +174,12 @@
 			devread(iobuf, fsbtodb(fs, block_map(block)) + boff,
 				blksize(fs, &inode, block));
 		}
-		dp = (struct dirent *)(iobuf + off);
+		dp = (struct direct *)(iobuf + off);
 		loc += dp->d_reclen;
-		if (dp->d_fileno && list_only)
+		if (dp->d_ino && list_only)
 			printf("%s ", dp->d_name);
-	} while (!dp->d_fileno || strcmp(path, dp->d_name));
-	ino = dp->d_fileno;
+	} while (!dp->d_ino || strcmp(path, dp->d_name));
+	ino = dp->d_ino;
 	*(path = rest) = ch;
 	goto loop;
 }

==== //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/rpc/xdr.h#3 (text+ko) ====

@@ -121,6 +121,7 @@
  * Changes must be reviewed by Solaris File Sharing
  * Changes must be communicated to contract-2003-523@sun.com
  */
+#ifndef __FreeBSD__	
 struct xdr_ops {
 #ifdef __STDC__
 #if !defined(_KERNEL)
@@ -168,6 +169,28 @@
 #endif
 };
 
+#else /* FreeBSD */
+struct xdr_ops {
+	/* get a long from underlying stream */
+	bool_t	(*x_getint32)(struct XDR *, int32_t *);
+	/* put a long to " */
+	bool_t	(*x_putint32)(struct XDR *, const int32_t *);
+	/* get some bytes from " */
+	bool_t	(*x_getbytes)(struct XDR *, char *, u_int);
+	/* put some bytes to " */
+	bool_t	(*x_putbytes)(struct XDR *, const char *, u_int);
+	/* returns bytes off from beginning */
+	u_int	(*x_getpostn)(struct XDR *);
+	/* lets you reposition the stream */
+	bool_t  (*x_setpostn)(struct XDR *, u_int);
+	/* buf quick ptr to buffered data */
+	int32_t *(*x_inline)(struct XDR *, u_int);
+	/* free privates of this xdr_stream */
+	void	(*x_destroy)(struct XDR *);
+	bool_t	(*x_control)(struct XDR *, int, void *);
+};
+#endif
+	
 /*
  * Operations defined on a XDR handle
  *

==== //depot/projects/usb/src/sys/compat/ndis/subr_usbd.c#12 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_usbd.c,v 1.12 2009/04/05 18:20:38 thompsa Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_usbd.c,v 1.13 2009/05/28 17:36:36 thompsa Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -84,10 +84,10 @@
 #define	USBD_CTRL_MAX_PIPE		2
 #define	USBD_CTRL_READ_BUFFER_SP	256
 #define	USBD_CTRL_READ_BUFFER_SIZE	\
-	(sizeof(struct usb2_device_request) + USBD_CTRL_READ_BUFFER_SP)
+	(sizeof(struct usb_device_request) + USBD_CTRL_READ_BUFFER_SP)
 #define	USBD_CTRL_WRITE_BUFFER_SIZE	\
-	(sizeof(struct usb2_device_request))
-static struct usb2_config usbd_default_epconfig[USBD_CTRL_MAX_PIPE] = {
+	(sizeof(struct usb_device_request))
+static struct usb_config usbd_default_epconfig[USBD_CTRL_MAX_PIPE] = {
 	[USBD_CTRL_READ_PIPE] = {
 		.type =		UE_CONTROL,
 		.endpoint =	0x00,	/* control pipe */
@@ -115,10 +115,10 @@
 static int32_t		 usbd_func_selconf(irp *);
 static int32_t		 usbd_func_abort_pipe(irp *);
 static usb2_error_t	 usbd_setup_endpoint(irp *, uint8_t,
-			    struct usb2_endpoint_descriptor	*);
+			    struct usb_endpoint_descriptor	*);
 static usb2_error_t	 usbd_setup_endpoint_default(irp *, uint8_t);
 static usb2_error_t	 usbd_setup_endpoint_one(irp *, uint8_t,
-			    struct ndisusb_ep *, struct usb2_config *);
+			    struct ndisusb_ep *, struct usb_config *);
 static int32_t		 usbd_func_getdesc(irp *);
 static union usbd_urb	*usbd_geturb(irp *);
 static struct ndisusb_ep*usbd_get_ndisep(irp *, usb_endpoint_descriptor_t *);
@@ -519,8 +519,8 @@
 	device_t dev = IRP_NDIS_DEV(ip);
 	int i, j;
 	struct ndis_softc *sc = device_get_softc(dev);
-	struct usb2_device *udev = sc->ndisusb_dev;
-	struct usb2_pipe *p = NULL;
+	struct usb_device *udev = sc->ndisusb_dev;
+	struct usb_pipe *p = NULL;
 	struct usbd_interface_information *intf;
 	struct usbd_pipe_information *pipe;
 	struct usbd_urb_select_configuration *selconf;
@@ -597,11 +597,11 @@
 	irp				*ip;
 	uint8_t				ifidx;
 	struct ndisusb_ep		*ne;
-	struct usb2_config		*epconf;
+	struct usb_config		*epconf;
 {
 	device_t dev = IRP_NDIS_DEV(ip);
 	struct ndis_softc *sc = device_get_softc(dev);
-	struct usb2_xfer *xfer;
+	struct usb_xfer *xfer;
 	usb2_error_t status;
 
 	InitializeListHead(&ne->ne_active);
@@ -647,13 +647,13 @@
 usbd_setup_endpoint(ip, ifidx, ep)
 	irp				*ip;
 	uint8_t				ifidx;
-	struct usb2_endpoint_descriptor	*ep;
+	struct usb_endpoint_descriptor	*ep;
 {
 	device_t dev = IRP_NDIS_DEV(ip);
 	struct ndis_softc *sc = device_get_softc(dev);
 	struct ndisusb_ep *ne;
-	struct usb2_config cfg;
-	struct usb2_xfer *xfer;
+	struct usb_config cfg;
+	struct usb_xfer *xfer;
 	usb2_error_t status;
 
 	/* check for non-supported transfer types */
@@ -670,7 +670,7 @@
 	KeInitializeSpinLock(&ne->ne_lock);
 	ne->ne_dirin = UE_GET_DIR(ep->bEndpointAddress) >> 7;
 
-	memset(&cfg, 0, sizeof(struct usb2_config));
+	memset(&cfg, 0, sizeof(struct usb_config));
 	cfg.type	= UE_GET_XFERTYPE(ep->bmAttributes);
 	cfg.endpoint	= UE_GET_ADDR(ep->bEndpointAddress);
 	cfg.direction	= UE_GET_DIR(ep->bEndpointAddress);
@@ -853,7 +853,7 @@
 }
 
 static void
-usbd_non_isoc_callback(struct usb2_xfer *xfer)
+usbd_non_isoc_callback(struct usb_xfer *xfer)
 {
 	irp *ip;
 	struct ndis_softc *sc = xfer->priv_sc;
@@ -951,7 +951,7 @@
 }
 
 static void
-usbd_ctrl_callback(struct usb2_xfer *xfer)
+usbd_ctrl_callback(struct usb_xfer *xfer)
 {
 	irp *ip;
 	struct ndis_softc *sc = xfer->priv_sc;
@@ -961,7 +961,7 @@
 	union usbd_urb *urb;
 	struct usbd_urb_vendor_or_class_request *vcreq;
 	uint8_t type = 0;
-	struct usb2_device_request req;
+	struct usb_device_request req;
 
 	switch (USB_GET_STATE(xfer)) {
 	case USB_ST_TRANSFERRED:
@@ -1434,7 +1434,7 @@
 	int32_t intfsubclass;
 	int32_t intfproto;
 {
-	struct usb2_descriptor *next = NULL;
+	struct usb_descriptor *next = NULL;
 	usb_interface_descriptor_t *desc;
 
 	while ((next = usb2_desc_foreach(conf, next)) != NULL) {

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

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1540 2009/05/26 21:39:09 sson Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1541 2009/05/28 19:45:11 rmacklem Exp $
 #
 # NOTES -- Lines that can be cut/pasted into kernel and hints configs.
 #
@@ -964,6 +964,8 @@
 options 	MSDOSFS			#MS DOS File System (FAT, FAT32)
 options 	NFSSERVER		#Network File System server
 options 	NFSLOCKD		#Network Lock Manager
+options 	NFSCL			#experimental NFS client with NFSv4
+options 	NFSD			#experimental NFS server with NFSv4
 
 # NT File System. Read-mostly, see mount_ntfs(8) for details.
 # For a full read-write NTFS support consider sysutils/fusefs-ntfs

==== //depot/projects/usb/src/sys/conf/files#65 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.1408 2009/05/27 16:43:40 thompsa Exp $
+# $FreeBSD: src/sys/conf/files,v 1.1409 2009/05/28 19:45:11 rmacklem Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -1672,6 +1672,29 @@
 fs/msdosfs/msdosfs_lookup.c	optional msdosfs
 fs/msdosfs/msdosfs_vfsops.c	optional msdosfs
 fs/msdosfs/msdosfs_vnops.c	optional msdosfs
+fs/nfs/nfs_commonkrpc.c		optional nfscl | nfsd
+fs/nfs/nfs_commonsubs.c		optional nfscl | nfsd
+fs/nfs/nfs_commonport.c		optional nfscl | nfsd
+fs/nfs/nfs_commonacl.c		optional nfscl | nfsd
+fs/nfsclient/nfs_clcomsubs.c	optional nfscl
+fs/nfsclient/nfs_clsubs.c	optional nfscl
+fs/nfsclient/nfs_clstate.c	optional nfscl
+fs/nfsclient/nfs_clkrpc.c	optional nfscl
+fs/nfsclient/nfs_clrpcops.c	optional nfscl
+fs/nfsclient/nfs_clvnops.c	optional nfscl
+fs/nfsclient/nfs_clnode.c	optional nfscl
+fs/nfsclient/nfs_clvfsops.c	optional nfscl
+fs/nfsclient/nfs_cllock.c	optional nfscl
+fs/nfsclient/nfs_clport.c	optional nfscl
+fs/nfsclient/nfs_clbio.c	optional nfscl
+fs/nfsclient/nfs_clnfsiod.c	optional nfscl
+fs/nfsserver/nfs_nfsdsocket.c	optional nfsd
+fs/nfsserver/nfs_nfsdsubs.c	optional nfsd
+fs/nfsserver/nfs_nfsdstate.c	optional nfsd
+fs/nfsserver/nfs_nfsdkrpc.c	optional nfsd
+fs/nfsserver/nfs_nfsdserv.c	optional nfsd
+fs/nfsserver/nfs_nfsdport.c	optional nfsd
+fs/nfsserver/nfs_nfsdcache.c	optional nfsd
 fs/ntfs/ntfs_compr.c		optional ntfs
 fs/ntfs/ntfs_iconv.c		optional ntfs_iconv
 fs/ntfs/ntfs_ihash.c		optional ntfs
@@ -2420,14 +2443,14 @@
 nfsserver/nfs_srvcache.c	optional nfsserver
 nfsserver/nfs_srvsubs.c		optional nfsserver
 nfsserver/nfs_syscalls.c	optional nfsserver
-nfs/nfs_nfssvc.c		optional nfsserver
-nlm/nlm_advlock.c		optional nfslockd nfsclient
-nlm/nlm_prot_clnt.c		optional nfslockd
-nlm/nlm_prot_impl.c		optional nfslockd
-nlm/nlm_prot_server.c		optional nfslockd
-nlm/nlm_prot_svc.c		optional nfslockd
-nlm/nlm_prot_xdr.c		optional nfslockd
-nlm/sm_inter_xdr.c		optional nfslockd
+nfs/nfs_nfssvc.c		optional nfsserver | nfscl | nfsd
+nlm/nlm_advlock.c		optional nfslockd nfsclient | nfsd nfsclient
+nlm/nlm_prot_clnt.c		optional nfslockd | nfsd
+nlm/nlm_prot_impl.c		optional nfslockd | nfsd
+nlm/nlm_prot_server.c		optional nfslockd | nfsd
+nlm/nlm_prot_svc.c		optional nfslockd | nfsd
+nlm/nlm_prot_xdr.c		optional nfslockd | nfsd
+nlm/sm_inter_xdr.c		optional nfslockd | nfsd
 # crypto support
 opencrypto/cast.c		optional crypto | ipsec
 opencrypto/criov.c		optional crypto
@@ -2447,32 +2470,32 @@
 pci/ncr.c			optional ncr pci
 pci/nfsmb.c			optional nfsmb pci
 pci/viapm.c			optional viapm pci
-rpc/auth_none.c			optional krpc | nfslockd | nfsclient | nfsserver
-rpc/auth_unix.c			optional krpc | nfslockd | nfsclient
-rpc/authunix_prot.c		optional krpc | nfslockd | nfsclient | nfsserver
-rpc/clnt_dg.c			optional krpc | nfslockd | nfsclient
-rpc/clnt_rc.c			optional krpc | nfslockd | nfsclient
-rpc/clnt_vc.c			optional krpc | nfslockd | nfsclient | nfsserver
-rpc/getnetconfig.c		optional krpc | nfslockd | nfsclient | nfsserver
-rpc/inet_ntop.c			optional krpc | nfslockd | nfsclient | nfsserver
-rpc/inet_pton.c			optional krpc | nfslockd | nfsclient | nfsserver
-rpc/replay.c			optional krpc | nfslockd | nfsserver
-rpc/rpc_callmsg.c		optional krpc | nfslockd | nfsclient | nfsserver
-rpc/rpc_generic.c		optional krpc | nfslockd | nfsclient | nfsserver
-rpc/rpc_prot.c			optional krpc | nfslockd | nfsclient | nfsserver
-rpc/rpcb_clnt.c			optional krpc | nfslockd | nfsclient | nfsserver
-rpc/rpcb_prot.c			optional krpc | nfslockd | nfsclient | nfsserver
-rpc/svc.c			optional krpc | nfslockd | nfsserver
-rpc/svc_auth.c			optional krpc | nfslockd | nfsserver
-rpc/svc_auth_unix.c		optional krpc | nfslockd | nfsserver
-rpc/svc_dg.c			optional krpc | nfslockd | nfsserver
-rpc/svc_generic.c		optional krpc | nfslockd | nfsserver
-rpc/svc_vc.c			optional krpc | nfslockd | nfsserver
-rpc/rpcsec_gss/rpcsec_gss.c	optional krpc kgssapi | nfslockd kgssapi
-rpc/rpcsec_gss/rpcsec_gss_conf.c optional krpc kgssapi | nfslockd kgssapi
-rpc/rpcsec_gss/rpcsec_gss_misc.c optional krpc kgssapi | nfslockd kgssapi
-rpc/rpcsec_gss/rpcsec_gss_prot.c optional krpc kgssapi | nfslockd kgssapi
-rpc/rpcsec_gss/svc_rpcsec_gss.c	optional krpc kgssapi | nfslockd kgssapi
+rpc/auth_none.c			optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd
+rpc/auth_unix.c			optional krpc | nfslockd | nfsclient | nfscl | nfsd
+rpc/authunix_prot.c		optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd
+rpc/clnt_dg.c			optional krpc | nfslockd | nfsclient | nfscl | nfsd
+rpc/clnt_rc.c			optional krpc | nfslockd | nfsclient | nfscl | nfsd
+rpc/clnt_vc.c			optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd
+rpc/getnetconfig.c		optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd
+rpc/inet_ntop.c			optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd
+rpc/inet_pton.c			optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd
+rpc/replay.c			optional krpc | nfslockd | nfsserver | nfscl | nfsd
+rpc/rpc_callmsg.c		optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd
+rpc/rpc_generic.c		optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd
+rpc/rpc_prot.c			optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd
+rpc/rpcb_clnt.c			optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd
+rpc/rpcb_prot.c			optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd
+rpc/svc.c			optional krpc | nfslockd | nfsserver | nfscl | nfsd
+rpc/svc_auth.c			optional krpc | nfslockd | nfsserver | nfscl | nfsd
+rpc/svc_auth_unix.c		optional krpc | nfslockd | nfsserver | nfscl | nfsd
+rpc/svc_dg.c			optional krpc | nfslockd | nfsserver | nfscl | nfsd
+rpc/svc_generic.c		optional krpc | nfslockd | nfsserver | nfscl | nfsd
+rpc/svc_vc.c			optional krpc | nfslockd | nfsserver | nfscl | nfsd
+rpc/rpcsec_gss/rpcsec_gss.c	optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi
+rpc/rpcsec_gss/rpcsec_gss_conf.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi
+rpc/rpcsec_gss/rpcsec_gss_misc.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi
+rpc/rpcsec_gss/rpcsec_gss_prot.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi
+rpc/rpcsec_gss/svc_rpcsec_gss.c	optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi
 security/audit/audit.c		optional audit
 security/audit/audit_arg.c	optional audit
 security/audit/audit_bsm.c	optional audit

==== //depot/projects/usb/src/sys/conf/files.i386#25 (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.i386,v 1.622 2009/05/13 17:53:04 jhb Exp $
+# $FreeBSD: src/sys/conf/files.i386,v 1.623 2009/05/28 04:17:05 adrian Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -327,6 +327,7 @@
 #i386/isa/atpic_vector.s		standard
 i386/isa/clock.c		optional native
 i386/xen/clock.c		optional xen
+i386/xen/xen_rtc.c		optional xen
 i386/isa/dpms.c			optional dpms
 i386/isa/elcr.c			standard
 i386/isa/elink.c		optional ep | ie

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

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.669 2009/05/22 12:35:12 rwatson Exp $
+# $FreeBSD: src/sys/conf/options,v 1.670 2009/05/28 19:45:11 rmacklem Exp $
 #
 #        On the handling of kernel options
 #
@@ -232,6 +232,13 @@
 # supports modern features such as RPCSEC_GSS
 NFS_LEGACYRPC	opt_nfs.h
 
+# Use these options to compile the experimental nfs client and/or
+# server that supports NFSv4 into a kernel.
+# NFSCL - client
+# NFSD - server
+NFSCL		opt_nfs.h
+NFSD		opt_nfs.h
+
 # filesystems and libiconv bridge
 CD9660_ICONV	opt_dontuse.h
 MSDOSFS_ICONV	opt_dontuse.h

==== //depot/projects/usb/src/sys/dev/ata/ata-usb.c#43 (text) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-usb.c,v 1.15 2009/05/21 02:09:12 thompsa Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-usb.c,v 1.16 2009/05/28 17:36:36 thompsa Exp $");
 
 #include "usbdevs.h"
 #include <dev/usb/usb.h>
@@ -108,7 +108,7 @@
 
 #define	ATAUSB_T_MAX ATAUSB_T_BBB_MAX
 
-	struct usb2_xfer *xfer[ATAUSB_T_MAX];
+	struct usb_xfer *xfer[ATAUSB_T_MAX];
 	caddr_t	ata_data;
 	device_t dev;
 
@@ -145,7 +145,7 @@
 
 static void atausb2_cancel_request(struct atausb2_softc *sc);
 static void atausb2_transfer_start(struct atausb2_softc *sc, uint8_t xfer_no);
-static void atausb2_t_bbb_data_clear_stall_callback(struct usb2_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer);
+static void atausb2_t_bbb_data_clear_stall_callback(struct usb_xfer *xfer, uint8_t next_xfer, uint8_t stall_xfer);
 static int ata_usbchannel_begin_transaction(struct ata_request *request);
 static int ata_usbchannel_end_transaction(struct ata_request *request);
 
@@ -160,13 +160,13 @@
  * USB frontend part
  */
 
-struct usb2_config atausb2_config[ATAUSB_T_BBB_MAX] = {
+struct usb_config atausb2_config[ATAUSB_T_BBB_MAX] = {
 
 	[ATAUSB_T_BBB_RESET1] = {
 		.type = UE_CONTROL,
 		.endpoint = 0x00,	/* Control pipe */
 		.direction = UE_DIR_ANY,
-		.mh.bufsize = sizeof(struct usb2_device_request),
+		.mh.bufsize = sizeof(struct usb_device_request),
 		.mh.flags = {},
 		.mh.callback = &atausb2_t_bbb_reset1_callback,
 		.mh.timeout = 5000,	/* 5 seconds */
@@ -177,7 +177,7 @@
 		.type = UE_CONTROL,
 		.endpoint = 0x00,	/* Control pipe */
 		.direction = UE_DIR_ANY,
-		.mh.bufsize = sizeof(struct usb2_device_request),
+		.mh.bufsize = sizeof(struct usb_device_request),
 		.mh.flags = {},
 		.mh.callback = &atausb2_t_bbb_reset2_callback,
 		.mh.timeout = 5000,	/* 5 seconds */
@@ -188,7 +188,7 @@
 		.type = UE_CONTROL,
 		.endpoint = 0x00,	/* Control pipe */
 		.direction = UE_DIR_ANY,
-		.mh.bufsize = sizeof(struct usb2_device_request),
+		.mh.bufsize = sizeof(struct usb_device_request),
 		.mh.flags = {},
 		.mh.callback = &atausb2_t_bbb_reset3_callback,
 		.mh.timeout = 5000,	/* 5 seconds */
@@ -219,7 +219,7 @@
 		.type = UE_CONTROL,
 		.endpoint = 0x00,	/* Control pipe */
 		.direction = UE_DIR_ANY,
-		.mh.bufsize = sizeof(struct usb2_device_request),
+		.mh.bufsize = sizeof(struct usb_device_request),
 		.mh.flags = {},
 		.mh.callback = &atausb2_t_bbb_data_rd_cs_callback,
 		.mh.timeout = 5000,	/* 5 seconds */
@@ -239,7 +239,7 @@
 		.type = UE_CONTROL,
 		.endpoint = 0x00,	/* Control pipe */
 		.direction = UE_DIR_ANY,
-		.mh.bufsize = sizeof(struct usb2_device_request),
+		.mh.bufsize = sizeof(struct usb_device_request),
 		.mh.flags = {},
 		.mh.callback = &atausb2_t_bbb_data_wr_cs_callback,
 		.mh.timeout = 5000,	/* 5 seconds */
@@ -278,8 +278,8 @@
 static int
 atausb2_probe(device_t dev)
 {
-	struct usb2_attach_arg *uaa = device_get_ivars(dev);
-	struct usb2_interface_descriptor *id;
+	struct usb_attach_arg *uaa = device_get_ivars(dev);
+	struct usb_interface_descriptor *id;
 
 	if (uaa->usb_mode != USB_MODE_HOST) {
 		return (ENXIO);
@@ -318,10 +318,10 @@
 atausb2_attach(device_t dev)
 {
 	struct atausb2_softc *sc = device_get_softc(dev);
-	struct usb2_attach_arg *uaa = device_get_ivars(dev);
-	struct usb2_interface_descriptor *id;
+	struct usb_attach_arg *uaa = device_get_ivars(dev);
+	struct usb_interface_descriptor *id;
 	const char *proto, *subclass;
-	struct usb2_device_request request;
+	struct usb_device_request request;
 	device_t child;
 	uint16_t i;
 	uint8_t maxlun;
@@ -467,10 +467,10 @@
 }
 
 static void
-atausb2_t_bbb_reset1_callback(struct usb2_xfer *xfer)
+atausb2_t_bbb_reset1_callback(struct usb_xfer *xfer)
 {
 	struct atausb2_softc *sc = xfer->priv_sc;
-	struct usb2_device_request req;
+	struct usb_device_request req;
 
 	switch (USB_GET_STATE(xfer)) {
 	case USB_ST_TRANSFERRED:
@@ -500,21 +500,21 @@
 }
 
 static void
-atausb2_t_bbb_reset2_callback(struct usb2_xfer *xfer)
+atausb2_t_bbb_reset2_callback(struct usb_xfer *xfer)
 {
 	atausb2_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_RESET3,
 	    ATAUSB_T_BBB_DATA_READ);
 }
 
 static void
-atausb2_t_bbb_reset3_callback(struct usb2_xfer *xfer)
+atausb2_t_bbb_reset3_callback(struct usb_xfer *xfer)
 {
 	atausb2_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_COMMAND,
 	    ATAUSB_T_BBB_DATA_WRITE);
 }
 
 static void
-atausb2_t_bbb_data_clear_stall_callback(struct usb2_xfer *xfer,
+atausb2_t_bbb_data_clear_stall_callback(struct usb_xfer *xfer,
     uint8_t next_xfer,
     uint8_t stall_xfer)
 {
@@ -540,7 +540,7 @@
 }
 
 static void
-atausb2_t_bbb_command_callback(struct usb2_xfer *xfer)
+atausb2_t_bbb_command_callback(struct usb_xfer *xfer)
 {
 	struct atausb2_softc *sc = xfer->priv_sc;
 	struct ata_request *request = sc->ata_request;
@@ -590,7 +590,7 @@
 }
 
 static void
-atausb2_t_bbb_data_read_callback(struct usb2_xfer *xfer)
+atausb2_t_bbb_data_read_callback(struct usb_xfer *xfer)
 {
 	struct atausb2_softc *sc = xfer->priv_sc;
 	uint32_t max_bulk = xfer->max_data_length;
@@ -640,14 +640,14 @@
 }
 
 static void
-atausb2_t_bbb_data_rd_cs_callback(struct usb2_xfer *xfer)
+atausb2_t_bbb_data_rd_cs_callback(struct usb_xfer *xfer)
 {
 	atausb2_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_STATUS,
 	    ATAUSB_T_BBB_DATA_READ);
 }
 
 static void
-atausb2_t_bbb_data_write_callback(struct usb2_xfer *xfer)
+atausb2_t_bbb_data_write_callback(struct usb_xfer *xfer)
 {
 	struct atausb2_softc *sc = xfer->priv_sc;
 	uint32_t max_bulk = xfer->max_data_length;
@@ -693,14 +693,14 @@
 }
 
 static void
-atausb2_t_bbb_data_wr_cs_callback(struct usb2_xfer *xfer)
+atausb2_t_bbb_data_wr_cs_callback(struct usb_xfer *xfer)
 {
 	atausb2_t_bbb_data_clear_stall_callback(xfer, ATAUSB_T_BBB_STATUS,
 	    ATAUSB_T_BBB_DATA_WRITE);
 }
 
 static void
-atausb2_t_bbb_status_callback(struct usb2_xfer *xfer)
+atausb2_t_bbb_status_callback(struct usb_xfer *xfer)
 {
 	struct atausb2_softc *sc = xfer->priv_sc;
 	struct ata_request *request = sc->ata_request;
@@ -820,7 +820,7 @@
 }
 
 static void
-atausb2_tr_error(struct usb2_xfer *xfer)
+atausb2_tr_error(struct usb_xfer *xfer)
 {
 	struct atausb2_softc *sc = xfer->priv_sc;
 

==== //depot/projects/usb/src/sys/dev/cxgb/cxgb_main.c#18 (text+ko) ====

@@ -28,7 +28,7 @@
 ***************************************************************************/
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_main.c,v 1.86 2009/05/22 18:26:47 gnn Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_main.c,v 1.87 2009/05/27 20:13:36 gnn Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -82,8 +82,8 @@
 #include <sys/priv.h>
 #endif
 
-static int cxgb_setup_msix(adapter_t *, int);
-static void cxgb_teardown_msix(adapter_t *);
+static int cxgb_setup_interrupts(adapter_t *);
+static void cxgb_teardown_interrupts(adapter_t *);
 static void cxgb_init(void *);
 static void cxgb_init_locked(struct port_info *);
 static void cxgb_stop_locked(struct port_info *);
@@ -175,8 +175,6 @@
 static devclass_t	cxgb_port_devclass;
 DRIVER_MODULE(cxgb, cxgbc, cxgb_port_driver, cxgb_port_devclass, 0, 0);
 
-#define SGE_MSIX_COUNT (SGE_QSETS + 1)
-
 /*
  * The driver uses the best interrupt scheme available on a platform in the
  * order MSI-X, MSI, legacy pin interrupts.  This parameter determines which
@@ -517,46 +515,52 @@
 	    (sc->msix_regs_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
 	    &sc->msix_regs_rid, RF_ACTIVE)) != NULL) {
 
-		msi_needed = sc->msi_count = SGE_MSIX_COUNT;
+		if (multiq)
+			port_qsets = min(SGE_QSETS/sc->params.nports, mp_ncpus);
+		msi_needed = sc->msi_count = sc->params.nports * port_qsets + 1;
 
-		if (((error = pci_alloc_msix(dev, &sc->msi_count)) != 0) ||
-		    (sc->msi_count != msi_needed)) {
-			device_printf(dev, "msix allocation failed - msi_count = %d"
-			    " msi_needed=%d will try msi err=%d\n", sc->msi_count,
-			    msi_needed, error);
+		if (pci_msix_count(dev) == 0 ||
+		    (error = pci_alloc_msix(dev, &sc->msi_count)) != 0 ||
+		    sc->msi_count != msi_needed) {
+			device_printf(dev, "alloc msix failed - "
+				      "msi_count=%d, msi_needed=%d, err=%d; "
+				      "will try MSI\n", sc->msi_count,
+				      msi_needed, error);
 			sc->msi_count = 0;
+			port_qsets = 1;
 			pci_release_msi(dev);
 			bus_release_resource(dev, SYS_RES_MEMORY,
 			    sc->msix_regs_rid, sc->msix_regs_res);
 			sc->msix_regs_res = NULL;
 		} else {
 			sc->flags |= USING_MSIX;
-			sc->cxgb_intr = t3_intr_msix;
+			sc->cxgb_intr = cxgb_async_intr;
+			device_printf(dev,
+				      "using MSI-X interrupts (%u vectors)\n",
+				      sc->msi_count);
 		}
 	}
 
 	if ((msi_allowed >= 1) && (sc->msi_count == 0)) {
 		sc->msi_count = 1;
-		if (pci_alloc_msi(dev, &sc->msi_count)) {
-			device_printf(dev, "alloc msi failed - will try INTx\n");
+		if ((error = pci_alloc_msi(dev, &sc->msi_count)) != 0) {
+			device_printf(dev, "alloc msi failed - "
+				      "err=%d; will try INTx\n", error);
 			sc->msi_count = 0;
+			port_qsets = 1;
 			pci_release_msi(dev);
 		} else {
 			sc->flags |= USING_MSI;
-			sc->irq_rid = 1;
 			sc->cxgb_intr = t3_intr_msi;
+			device_printf(dev, "using MSI interrupts\n");
 		}
 	}
 #endif
 	if (sc->msi_count == 0) {
 		device_printf(dev, "using line interrupts\n");
-		sc->irq_rid = 0;
 		sc->cxgb_intr = t3b_intr;
 	}
 
-	if ((sc->flags & USING_MSIX) && multiq)
-		port_qsets = min((SGE_QSETS/(sc)->params.nports), mp_ncpus);
-	
 	/* Create a private taskqueue thread for handling driver events */
 #ifdef TASKQUEUE_CURRENT	
 	sc->tq = taskqueue_create("cxgb_taskq", M_NOWAIT,
@@ -695,7 +699,7 @@
  *  3. Detaching all of the port devices created during the
  *     cxgb_controller_attach() routine.
  *  4. Removing the device children created via cxgb_controller_attach().
- *  5. Releaseing PCI resources associated with the device.
+ *  5. Releasing PCI resources associated with the device.
  *  6. Turning off the offload support, iff it was turned on.
  *  7. Destroying the mutexes created in cxgb_controller_attach().
  *
@@ -730,6 +734,8 @@
 			device_printf(sc->dev, "failed to delete child port\n");
 	}
 
+	cxgb_teardown_interrupts(sc);
+
 #ifdef MSI_SUPPORTED
 	if (sc->flags & (USING_MSI | USING_MSIX)) {
 		device_printf(sc->dev, "releasing msi message(s)\n");
@@ -737,11 +743,12 @@
 	} else {
 		device_printf(sc->dev, "no msi message to release\n");
 	}
-#endif
+
 	if (sc->msix_regs_res != NULL) {
 		bus_release_resource(sc->dev, SYS_RES_MEMORY, sc->msix_regs_rid,
 		    sc->msix_regs_res);
 	}
+#endif
 
 	if (sc->tq != NULL) {
 		taskqueue_free(sc->tq);
@@ -821,91 +828,116 @@
 }
 
 static void
-cxgb_teardown_msix(adapter_t *sc) 
+cxgb_teardown_interrupts(adapter_t *sc)
 {
-	int i, nqsets;
-	
-	for (nqsets = i = 0; i < (sc)->params.nports; i++) 
-		nqsets += sc->port[i].nqsets;
+	int i;
+
+	for (i = 0; i < SGE_QSETS; i++) {
+		if (sc->msix_intr_tag[i] == NULL) {
+
+			/* Should have been setup fully or not at all */
+			KASSERT(sc->msix_irq_res[i] == NULL &&
+				sc->msix_irq_rid[i] == 0,
+				("%s: half-done interrupt (%d).", __func__, i));
 
-	for (i = 0; i < nqsets; i++) {
-		if (sc->msix_intr_tag[i] != NULL) {
-			bus_teardown_intr(sc->dev, sc->msix_irq_res[i],
-			    sc->msix_intr_tag[i]);
-			sc->msix_intr_tag[i] = NULL;
+			continue;
 		}
-		if (sc->msix_irq_res[i] != NULL) {
-			bus_release_resource(sc->dev, SYS_RES_IRQ,
-			    sc->msix_irq_rid[i], sc->msix_irq_res[i]);
-			sc->msix_irq_res[i] = NULL;
-		}
+
+		bus_teardown_intr(sc->dev, sc->msix_irq_res[i],
+				  sc->msix_intr_tag[i]);
+		bus_release_resource(sc->dev, SYS_RES_IRQ, sc->msix_irq_rid[i],
+				     sc->msix_irq_res[i]);
+
+		sc->msix_irq_res[i] = sc->msix_intr_tag[i] = NULL;
+		sc->msix_irq_rid[i] = 0;
+	}
+
+	if (sc->intr_tag) {
+		KASSERT(sc->irq_res != NULL,
+			("%s: half-done interrupt.", __func__));
+
+		bus_teardown_intr(sc->dev, sc->irq_res, sc->intr_tag);
+		bus_release_resource(sc->dev, SYS_RES_IRQ, sc->irq_rid,
+				     sc->irq_res);
+
+		sc->irq_res = sc->intr_tag = NULL;
+		sc->irq_rid = 0;
 	}
 }
 
 static int
-cxgb_setup_msix(adapter_t *sc, int msix_count)
+cxgb_setup_interrupts(adapter_t *sc)
 {
-	int i, j, k, nqsets, rid;
+	struct resource *res;
+	void *tag;
+	int i, rid, err, intr_flag = sc->flags & (USING_MSI | USING_MSIX);
 
-	/* The first message indicates link changes and error conditions */
-	sc->irq_rid = 1;
-	if ((sc->irq_res = bus_alloc_resource_any(sc->dev, SYS_RES_IRQ,
-	   &sc->irq_rid, RF_SHAREABLE | RF_ACTIVE)) == NULL) {
-		device_printf(sc->dev, "Cannot allocate msix interrupt\n");
-		return (EINVAL);
-	}

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



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