PERFORCE change 201779 for review

Matt Jacob mjacob at FreeBSD.org
Thu Nov 17 01:01:56 UTC 2011


http://p4web.freebsd.org/@@201779?ac=10

Change 201779 by mjacob at mjacob-sandbox on 2011/11/17 01:01:37

	IFC

Affected files ...

.. //depot/projects/mjacob-dev/contrib/bind9/CHANGES#7 integrate
.. //depot/projects/mjacob-dev/contrib/bind9/bin/named/query.c#6 integrate
.. //depot/projects/mjacob-dev/contrib/bind9/lib/dns/rbtdb.c#6 integrate
.. //depot/projects/mjacob-dev/contrib/bind9/version#7 integrate
.. //depot/projects/mjacob-dev/contrib/gcc/config/rs6000/freebsd.h#4 integrate
.. //depot/projects/mjacob-dev/share/man/man4/Makefile#11 integrate
.. //depot/projects/mjacob-dev/share/man/man4/sfxge.4#1 branch
.. //depot/projects/mjacob-dev/share/man/man9/lock.9#2 integrate
.. //depot/projects/mjacob-dev/share/man/man9/mutex.9#3 integrate
.. //depot/projects/mjacob-dev/share/man/man9/rmlock.9#2 integrate
.. //depot/projects/mjacob-dev/share/man/man9/rwlock.9#2 integrate
.. //depot/projects/mjacob-dev/share/man/man9/stack.9#2 integrate
.. //depot/projects/mjacob-dev/share/man/man9/sx.9#2 integrate
.. //depot/projects/mjacob-dev/sys/conf/files#14 integrate
.. //depot/projects/mjacob-dev/sys/dev/isp/isp.c#7 integrate
.. //depot/projects/mjacob-dev/sys/dev/isp/isp_pci.c#5 integrate
.. //depot/projects/mjacob-dev/sys/dev/mfi/mfi.c#7 integrate
.. //depot/projects/mjacob-dev/sys/dev/mfi/mfi_cam.c#5 integrate
.. //depot/projects/mjacob-dev/sys/dev/mfi/mfi_debug.c#2 integrate
.. //depot/projects/mjacob-dev/sys/dev/mfi/mfi_disk.c#2 integrate
.. //depot/projects/mjacob-dev/sys/dev/mfi/mfi_pci.c#2 integrate
.. //depot/projects/mjacob-dev/sys/dev/mfi/mfivar.h#4 integrate
.. //depot/projects/mjacob-dev/sys/dev/msk/if_msk.c#7 integrate
.. //depot/projects/mjacob-dev/sys/dev/msk/if_mskreg.h#3 integrate
.. //depot/projects/mjacob-dev/sys/dev/re/if_re.c#8 integrate
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efsys.h#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx.h#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_bootcfg.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_ev.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_filter.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_impl.h#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_intr.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_mac.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_mcdi.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_mcdi.h#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_mon.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_nic.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_nvram.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_phy.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_port.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_regs.h#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_regs_ef10.h#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_regs_mcdi.h#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_regs_pci.h#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_rx.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_sram.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_tx.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_types.h#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_vpd.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/efx_wol.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/siena_flash.h#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/siena_impl.h#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/siena_mac.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/siena_mon.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/siena_nic.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/siena_nvram.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/siena_phy.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/siena_sram.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/common/siena_vpd.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/sfxge.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/sfxge.h#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/sfxge_dma.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/sfxge_ev.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/sfxge_intr.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/sfxge_mcdi.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/sfxge_port.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/sfxge_rx.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/sfxge_rx.h#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/sfxge_tx.c#1 branch
.. //depot/projects/mjacob-dev/sys/dev/sfxge/sfxge_tx.h#1 branch
.. //depot/projects/mjacob-dev/sys/fs/pseudofs/pseudofs_vnops.c#3 integrate
.. //depot/projects/mjacob-dev/sys/kern/kern_lock.c#6 integrate
.. //depot/projects/mjacob-dev/sys/kern/kern_mutex.c#2 integrate
.. //depot/projects/mjacob-dev/sys/kern/kern_rmlock.c#4 integrate
.. //depot/projects/mjacob-dev/sys/kern/kern_rwlock.c#3 integrate
.. //depot/projects/mjacob-dev/sys/kern/kern_sx.c#5 integrate
.. //depot/projects/mjacob-dev/sys/kern/subr_stack.c#3 integrate
.. //depot/projects/mjacob-dev/sys/kern/subr_witness.c#5 integrate
.. //depot/projects/mjacob-dev/sys/modules/Makefile#12 integrate
.. //depot/projects/mjacob-dev/sys/modules/sfxge/Makefile#1 branch
.. //depot/projects/mjacob-dev/sys/pci/if_rlreg.h#6 integrate
.. //depot/projects/mjacob-dev/sys/powerpc/aim/slb.c#4 integrate
.. //depot/projects/mjacob-dev/sys/sparc64/sbus/lsi64854.c#5 integrate
.. //depot/projects/mjacob-dev/sys/sys/lock.h#2 integrate
.. //depot/projects/mjacob-dev/sys/sys/lockmgr.h#2 integrate
.. //depot/projects/mjacob-dev/sys/sys/mutex.h#3 integrate
.. //depot/projects/mjacob-dev/sys/sys/rmlock.h#2 integrate
.. //depot/projects/mjacob-dev/sys/sys/rwlock.h#2 integrate
.. //depot/projects/mjacob-dev/sys/sys/stack.h#2 integrate
.. //depot/projects/mjacob-dev/sys/sys/sx.h#3 integrate
.. //depot/projects/mjacob-dev/sys/vm/vm_contig.c#6 integrate
.. //depot/projects/mjacob-dev/sys/vm/vm_page.c#11 integrate
.. //depot/projects/mjacob-dev/sys/vm/vm_page.h#9 integrate
.. //depot/projects/mjacob-dev/sys/vm/vm_phys.c#5 integrate
.. //depot/projects/mjacob-dev/sys/vm/vm_phys.h#3 integrate
.. //depot/projects/mjacob-dev/usr.bin/comm/comm.1#3 integrate

Differences ...

==== //depot/projects/mjacob-dev/contrib/bind9/CHANGES#7 (text+ko) ====

@@ -1,3 +1,9 @@
+	--- 9.8.1-P1 released ---
+
+3218.	[security]	Cache lookup could return RRSIG data associated with
+			nonexistent records, leading to an assertion
+			failure. [RT #26590]
+
 	--- 9.8.1 released ---
 
 	--- 9.8.1rc1 released ---

==== //depot/projects/mjacob-dev/contrib/bind9/bin/named/query.c#6 (text+ko) ====

@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: query.c,v 1.353.8.11 2011-06-09 03:14:03 marka Exp $ */
+/* $Id: query.c,v 1.353.8.11.4.1 2011-11-16 09:32:08 marka Exp $ */
 
 /*! \file */
 
@@ -1393,11 +1393,9 @@
 			goto addname;
 		if (result == DNS_R_NCACHENXRRSET) {
 			dns_rdataset_disassociate(rdataset);
-			/*
-			 * Negative cache entries don't have sigrdatasets.
-			 */
-			INSIST(sigrdataset == NULL ||
-			       ! dns_rdataset_isassociated(sigrdataset));
+			if (sigrdataset != NULL &&
+			    dns_rdataset_isassociated(sigrdataset))
+				dns_rdataset_disassociate(sigrdataset);
 		}
 		if (result == ISC_R_SUCCESS) {
 			mname = NULL;
@@ -1438,8 +1436,9 @@
 			goto addname;
 		if (result == DNS_R_NCACHENXRRSET) {
 			dns_rdataset_disassociate(rdataset);
-			INSIST(sigrdataset == NULL ||
-			       ! dns_rdataset_isassociated(sigrdataset));
+			if (sigrdataset != NULL &&
+			    dns_rdataset_isassociated(sigrdataset))
+				dns_rdataset_disassociate(sigrdataset);
 		}
 		if (result == ISC_R_SUCCESS) {
 			mname = NULL;
@@ -1889,10 +1888,8 @@
 		goto setcache;
 	if (result == DNS_R_NCACHENXRRSET) {
 		dns_rdataset_disassociate(rdataset);
-		/*
-		 * Negative cache entries don't have sigrdatasets.
-		 */
-		INSIST(! dns_rdataset_isassociated(sigrdataset));
+		if (dns_rdataset_isassociated(sigrdataset))
+			dns_rdataset_disassociate(sigrdataset);
 	}
 	if (result == ISC_R_SUCCESS) {
 		/* Remember the result as a cache */

==== //depot/projects/mjacob-dev/contrib/bind9/lib/dns/rbtdb.c#6 (text+ko) ====

@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: rbtdb.c,v 1.310.8.5 2011-06-08 23:02:42 each Exp $ */
+/* $Id: rbtdb.c,v 1.310.8.5.4.1 2011-11-16 09:32:08 marka Exp $ */
 
 /*! \file */
 
@@ -5053,7 +5053,7 @@
 			      rdataset);
 		if (need_headerupdate(found, search.now))
 			update = found;
-		if (foundsig != NULL) {
+		if (!NEGATIVE(found) && foundsig != NULL) {
 			bind_rdataset(search.rbtdb, node, foundsig, search.now,
 				      sigrdataset);
 			if (need_headerupdate(foundsig, search.now))
@@ -5685,7 +5685,7 @@
 	}
 	if (found != NULL) {
 		bind_rdataset(rbtdb, rbtnode, found, now, rdataset);
-		if (foundsig != NULL)
+		if (!NEGATIVE(found) && foundsig != NULL)
 			bind_rdataset(rbtdb, rbtnode, foundsig, now,
 				      sigrdataset);
 	}

==== //depot/projects/mjacob-dev/contrib/bind9/version#7 (text+ko) ====

@@ -1,4 +1,4 @@
-# $Id: version,v 1.53.8.9 2011-08-24 02:08:26 marka Exp $
+# $Id: version,v 1.53.8.9.6.1 2011-11-16 09:32:07 marka Exp $
 # 
 # This file must follow /bin/sh rules.  It is imported directly via
 # configure.
@@ -6,5 +6,5 @@
 MAJORVER=9
 MINORVER=8
 PATCHVER=1
-RELEASETYPE=
-RELEASEVER=
+RELEASETYPE=-P
+RELEASEVER=1

==== //depot/projects/mjacob-dev/contrib/gcc/config/rs6000/freebsd.h#4 (text+ko) ====

@@ -253,3 +253,22 @@
 
 #undef NEED_INDICATE_EXEC_STACK
 #define NEED_INDICATE_EXEC_STACK 1
+
+/* This is how to declare the size of a function.  */
+#undef  ASM_DECLARE_FUNCTION_SIZE
+#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL)                    \
+  do                                                                    \
+    {                                                                   \
+      if (!flag_inhibit_size_directive)                                 \
+        {                                                               \
+          fputs ("\t.size\t", (FILE));                                  \
+          if (TARGET_64BIT && DOT_SYMBOLS)                              \
+            putc ('.', (FILE));                                         \
+          assemble_name ((FILE), (FNAME));                              \
+          fputs (",.-", (FILE));                                        \
+          rs6000_output_function_entry (FILE, FNAME);                   \
+          putc ('\n', (FILE));                                          \
+        }                                                               \
+    }                                                                   \
+  while (0)
+

==== //depot/projects/mjacob-dev/share/man/man4/Makefile#11 (text+ko) ====

@@ -1,5 +1,5 @@
 #	@(#)Makefile	8.1 (Berkeley) 6/18/93
-# $FreeBSD: src/share/man/man4/Makefile,v 1.513 2011/11/03 21:20:22 bz Exp $
+# $FreeBSD: src/share/man/man4/Makefile,v 1.514 2011/11/16 17:11:13 philip Exp $
 
 MAN=	aac.4 \
 	acpi.4 \
@@ -377,6 +377,7 @@
 	send.4 \
 	ses.4 \
 	sf.4 \
+	sfxge.4 \
 	sge.4 \
 	si.4 \
 	siba.4 \

==== //depot/projects/mjacob-dev/share/man/man9/lock.9#2 (text+ko) ====

@@ -24,9 +24,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 .\" DAMAGE.
 .\"
-.\" $FreeBSD: src/share/man/man9/lock.9,v 1.35 2009/06/17 01:55:42 attilio Exp $
+.\" $FreeBSD: src/share/man/man9/lock.9,v 1.36 2011/11/16 21:51:17 pjd Exp $
 .\"
-.Dd June 16, 2009
+.Dd November 16, 2011
 .Dt LOCK 9
 .Os
 .Sh NAME
@@ -60,20 +60,20 @@
 .Ft void
 .Fn lockmgr_disown "struct lock *lkp"
 .Ft void
-.Fn lockmgr_printinfo "struct lock *lkp"
+.Fn lockmgr_printinfo "const struct lock *lkp"
 .Ft int
-.Fn lockmgr_recursed "struct lock *lkp"
+.Fn lockmgr_recursed "const struct lock *lkp"
 .Ft int
 .Fn lockmgr_rw "struct lock *lkp" "u_int flags" "struct rwlock *ilk"
 .Ft int
-.Fn lockmgr_waiters "struct lock *lkp"
+.Fn lockmgr_waiters "const struct lock *lkp"
 .Ft int
-.Fn lockstatus "struct lock *lkp"
+.Fn lockstatus "const struct lock *lkp"
 .Pp
 .Cd "options INVARIANTS"
 .Cd "options INVARIANT_SUPPORT"
 .Ft void
-.Fn lockmgr_assert "struct lock *lkp" "int what"
+.Fn lockmgr_assert "const struct lock *lkp" "int what"
 .Sh DESCRIPTION
 The
 .Fn lockinit

==== //depot/projects/mjacob-dev/share/man/man9/mutex.9#3 (text+ko) ====

@@ -26,9 +26,9 @@
 .\" SUCH DAMAGE.
 .\"
 .\"	from BSDI $Id: mutex.4,v 1.1.2.3 1998/04/27 22:53:13 ewv Exp $
-.\" $FreeBSD: src/share/man/man9/mutex.9,v 1.56 2011/01/06 21:14:34 jhb Exp $
+.\" $FreeBSD: src/share/man/man9/mutex.9,v 1.57 2011/11/16 21:51:17 pjd Exp $
 .\"
-.Dd December 21, 2006
+.Dd November 16, 2011
 .Dt MUTEX 9
 .Os
 .Sh NAME
@@ -83,16 +83,16 @@
 .Ft int
 .Fn mtx_sleep "void *chan" "struct mtx *mtx" "int priority" "const char *wmesg" "int timo"
 .Ft int
-.Fn mtx_initialized "struct mtx *mutex"
+.Fn mtx_initialized "const struct mtx *mutex"
 .Ft int
-.Fn mtx_owned "struct mtx *mutex"
+.Fn mtx_owned "const struct mtx *mutex"
 .Ft int
-.Fn mtx_recursed "struct mtx *mutex"
+.Fn mtx_recursed "const struct mtx *mutex"
 .Pp
 .Cd "options INVARIANTS"
 .Cd "options INVARIANT_SUPPORT"
 .Ft void
-.Fn mtx_assert "struct mtx *mutex" "int what"
+.Fn mtx_assert "const struct mtx *mutex" "int what"
 .In sys/kernel.h
 .Fn MTX_SYSINIT "name" "struct mtx *mtx" "const char *description" "int opts"
 .Sh DESCRIPTION

==== //depot/projects/mjacob-dev/share/man/man9/rmlock.9#2 (text+ko) ====

@@ -23,10 +23,10 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/share/man/man9/rmlock.9,v 1.6 2010/09/01 19:50:03 mlaier Exp $
+.\" $FreeBSD: src/share/man/man9/rmlock.9,v 1.7 2011/11/16 21:51:17 pjd Exp $
 .\"
 .\" Based on rwlock.9 man page
-.Dd November 10, 2007
+.Dd November 16, 2011
 .Dt RMLOCK 9
 .Os
 .Sh NAME
@@ -63,7 +63,7 @@
 .Ft void
 .Fn rm_wunlock "struct rmlock *rm"
 .Ft int
-.Fn rm_wowned "struct rmlock *rm"
+.Fn rm_wowned "const struct rmlock *rm"
 .In sys/kernel.h
 .Fn RM_SYSINIT "name" "struct rmlock *rm" "const char *desc" "int opts"
 .Sh DESCRIPTION
@@ -208,7 +208,7 @@
 The
 .Fa rm
 lock must be unlocked.
-.It Fn rm_wowned "struct rmlock *rm"
+.It Fn rm_wowned "const struct rmlock *rm"
 This function returns a non-zero value if the current thread owns an
 exclusive lock on
 .Fa rm .

==== //depot/projects/mjacob-dev/share/man/man9/rwlock.9#2 (text+ko) ====

@@ -22,9 +22,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/share/man/man9/rwlock.9,v 1.15 2008/04/01 20:56:45 attilio Exp $
+.\" $FreeBSD: src/share/man/man9/rwlock.9,v 1.16 2011/11/16 21:51:17 pjd Exp $
 .\"
-.Dd April 1, 2008
+.Dd November 16, 2011
 .Dt RWLOCK 9
 .Os
 .Sh NAME
@@ -78,14 +78,14 @@
 .Ft int
 .Fn rw_sleep "void *chan" "struct rwlock *rw" "int priority" "const char *wmesg" "int timo"
 .Ft int
-.Fn rw_initialized "struct rwlock *rw"
+.Fn rw_initialized "const struct rwlock *rw"
 .Ft int
-.Fn rw_wowned "struct rwlock *rw"
+.Fn rw_wowned "const struct rwlock *rw"
 .Pp
 .Cd "options INVARIANTS"
 .Cd "options INVARIANT_SUPPORT"
 .Ft void
-.Fn rw_assert "struct rwlock *rw" "int what"
+.Fn rw_assert "const struct rwlock *rw" "int what"
 .In sys/kernel.h
 .Fn RW_SYSINIT "name" "struct rwlock *rw" "const char *desc"
 .Sh DESCRIPTION
@@ -231,7 +231,7 @@
 For more details on the parameters to this function,
 see
 .Xr sleep 9 .
-.It Fn rw_initialized "struct rwlock *rw"
+.It Fn rw_initialized "const struct rwlock *rw"
 This function returns non-zero if
 .Fa rw
 has been initialized, and zero otherwise.
@@ -241,11 +241,11 @@
 The
 .Fa rw
 lock must be unlocked.
-.It Fn rw_wowned "struct rwlock *rw"
+.It Fn rw_wowned "const struct rwlock *rw"
 This function returns a non-zero value if the current thread owns an
 exclusive lock on
 .Fa rw .
-.It Fn rw_assert "struct rwlock *rw" "int what"
+.It Fn rw_assert "const struct rwlock *rw" "int what"
 This function allows assertions specified in
 .Fa what
 to be made about

==== //depot/projects/mjacob-dev/share/man/man9/stack.9#2 (text+ko) ====

@@ -25,9 +25,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 .\" DAMAGE.
 .\"
-.\" $FreeBSD: src/share/man/man9/stack.9,v 1.8 2010/04/07 19:13:31 emaste Exp $
+.\" $FreeBSD: src/share/man/man9/stack.9,v 1.9 2011/11/16 19:06:55 pjd Exp $
 .\"
-.Dd June 24, 2009
+.Dd November 16, 2011
 .Dt STACK 9
 .Os
 .Sh NAME
@@ -46,21 +46,21 @@
 .Ft int
 .Fn stack_put "struct stack *st" "vm_offset_t pc"
 .Ft void
-.Fn stack_copy "struct stack *src" "struct stack dst"
+.Fn stack_copy "const struct stack *src" "struct stack dst"
 .Ft void
 .Fn stack_zero "struct stack *st"
 .Ft void
-.Fn stack_print "struct stack *st"
+.Fn stack_print "const struct stack *st"
 .Ft void
-.Fn stack_print_ddb "struct stack *st"
+.Fn stack_print_ddb "const struct stack *st"
 .Ft void
-.Fn stack_print_short "struct stack *st"
+.Fn stack_print_short "const struct stack *st"
 .Ft void
-.Fn stack_print_short_ddb "struct stack *st"
+.Fn stack_print_short_ddb "const struct stack *st"
 .Ft void
-.Fn stack_sbuf_print "struct sbuf sb*" "struct stack *st"
+.Fn stack_sbuf_print "struct sbuf sb*" "const struct stack *st"
 .Ft void
-.Fn stack_sbuf_print_ddb "struct sbuf sb*" "struct stack *st"
+.Fn stack_sbuf_print_ddb "struct sbuf sb*" "const struct stack *st"
 .Ft void
 .Fn stack_save "struct stack *st"
 .Sh DESCRIPTION

==== //depot/projects/mjacob-dev/share/man/man9/sx.9#2 (text+ko) ====

@@ -24,9 +24,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 .\" DAMAGE.
 .\"
-.\" $FreeBSD: src/share/man/man9/sx.9,v 1.44 2009/05/29 01:49:27 attilio Exp $
+.\" $FreeBSD: src/share/man/man9/sx.9,v 1.45 2011/11/16 21:51:17 pjd Exp $
 .\"
-.Dd May 28, 2009
+.Dd November 16, 2011
 .Dt SX 9
 .Os
 .Sh NAME
@@ -88,12 +88,12 @@
 .Ft "struct thread *"
 .Fn sx_xholder "struct sx *sx"
 .Ft int
-.Fn sx_xlocked "struct sx *sx"
+.Fn sx_xlocked "const struct sx *sx"
 .Pp
 .Cd "options INVARIANTS"
 .Cd "options INVARIANT_SUPPORT"
 .Ft void
-.Fn sx_assert "struct sx *sx" "int what"
+.Fn sx_assert "const struct sx *sx" "int what"
 .In sys/kernel.h
 .Fn SX_SYSINIT "name" "struct sx *sx" "const char *description"
 .Sh DESCRIPTION

==== //depot/projects/mjacob-dev/sys/conf/files#14 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.1616 2011/11/01 21:26:57 marius Exp $
+# $FreeBSD: src/sys/conf/files,v 1.1617 2011/11/16 17:11:13 philip Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -1675,6 +1675,37 @@
 dev/scd/scd_isa.c		optional scd isa
 dev/sdhci/sdhci.c		optional sdhci pci
 dev/sf/if_sf.c			optional sf pci
+dev/sfxge/common/efx_bootcfg.c	optional sfxge inet pci
+dev/sfxge/common/efx_ev.c	optional sfxge inet pci
+dev/sfxge/common/efx_filter.c	optional sfxge inet pci
+dev/sfxge/common/efx_intr.c	optional sfxge inet pci
+dev/sfxge/common/efx_mac.c	optional sfxge inet pci
+dev/sfxge/common/efx_mcdi.c	optional sfxge inet pci
+dev/sfxge/common/efx_mon.c	optional sfxge inet pci
+dev/sfxge/common/efx_nic.c	optional sfxge inet pci
+dev/sfxge/common/efx_nvram.c	optional sfxge inet pci
+dev/sfxge/common/efx_phy.c	optional sfxge inet pci
+dev/sfxge/common/efx_port.c	optional sfxge inet pci
+dev/sfxge/common/efx_rx.c	optional sfxge inet pci
+dev/sfxge/common/efx_sram.c	optional sfxge inet pci
+dev/sfxge/common/efx_tx.c	optional sfxge inet pci
+dev/sfxge/common/efx_vpd.c	optional sfxge inet pci
+dev/sfxge/common/efx_wol.c	optional sfxge inet pci
+dev/sfxge/common/siena_mac.c	optional sfxge inet pci
+dev/sfxge/common/siena_mon.c	optional sfxge inet pci
+dev/sfxge/common/siena_nic.c	optional sfxge inet pci
+dev/sfxge/common/siena_nvram.c	optional sfxge inet pci
+dev/sfxge/common/siena_phy.c	optional sfxge inet pci
+dev/sfxge/common/siena_sram.c	optional sfxge inet pci
+dev/sfxge/common/siena_vpd.c	optional sfxge inet pci
+dev/sfxge/sfxge.c		optional sfxge inet pci
+dev/sfxge/sfxge_dma.c		optional sfxge inet pci
+dev/sfxge/sfxge_ev.c		optional sfxge inet pci
+dev/sfxge/sfxge_intr.c		optional sfxge inet pci
+dev/sfxge/sfxge_mcdi.c		optional sfxge inet pci
+dev/sfxge/sfxge_port.c		optional sfxge inet pci
+dev/sfxge/sfxge_rx.c		optional sfxge inet pci
+dev/sfxge/sfxge_tx.c		optional sfxge inet pci
 dev/sge/if_sge.c		optional sge pci
 dev/si/si.c			optional si
 dev/si/si2_z280.c		optional si

==== //depot/projects/mjacob-dev/sys/dev/isp/isp.c#7 (text+ko) ====

@@ -47,7 +47,7 @@
 #endif
 #ifdef	__FreeBSD__
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/isp/isp.c,v 1.167 2011/08/13 23:34:17 mjacob Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/isp/isp.c,v 1.168 2011/11/16 02:52:24 mjacob Exp $");
 #include <dev/isp/isp_freebsd.h>
 #endif
 #ifdef	__OpenBSD__
@@ -748,11 +748,13 @@
 
 	if (dodnld && IS_24XX(isp)) {
 		const uint32_t *ptr = isp->isp_mdvec->dv_ispfw;
+		int wordload;
 
 		/*
 		 * Keep loading until we run out of f/w.
 		 */
 		code_org = ptr[2];	/* 1st load address is our start addr */
+		wordload = 0;
 
 		for (;;) {
 			uint32_t la, wi, wl;
@@ -777,6 +779,7 @@
 					wl--;
 				}
 				MEMORYBARRIER(isp, SYNC_REQUEST, 0, ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN(isp)), -1);
+	again:
 				ISP_MEMZERO(&mbs, sizeof (mbs));
 				if (la < 0x10000 && nw < 0x10000) {
 					mbs.param[0] = MBOX_LOAD_RISC_RAM_2100;
@@ -786,6 +789,23 @@
 					mbs.param[4] = nw;
 					mbs.param[6] = DMA_WD3(isp->isp_rquest_dma);
 					mbs.param[7] = DMA_WD2(isp->isp_rquest_dma);
+					isp_prt(isp, ISP_LOGDEBUG0, "LOAD RISC RAM 2100 %u words at load address 0x%x", nw, la);
+				} else if (wordload) {
+					union {
+						const uint32_t *cp;
+						uint32_t *np;
+					} ucd;
+					ucd.cp = (const uint32_t *)cp;
+					mbs.param[0] = MBOX_WRITE_RAM_WORD_EXTENDED;
+					mbs.param[1] = la;
+					mbs.param[2] = (*ucd.np);
+					mbs.param[3] = (*ucd.np) >> 16;
+					mbs.param[8] = la >> 16;
+					isp->isp_mbxwrk0 = nw - 1;
+					isp->isp_mbxworkp = ucd.np+1;
+					isp->isp_mbxwrk1 = (la + 1);
+					isp->isp_mbxwrk8 = (la + 1) >> 16;
+					isp_prt(isp, ISP_LOGDEBUG0, "WRITE RAM WORD EXTENDED %u words at load address 0x%x", nw, la);
 				} else {
 					mbs.param[0] = MBOX_LOAD_RISC_RAM;
 					mbs.param[1] = la;
@@ -796,10 +816,16 @@
 					mbs.param[6] = DMA_WD3(isp->isp_rquest_dma);
 					mbs.param[7] = DMA_WD2(isp->isp_rquest_dma);
 					mbs.param[8] = la >> 16;
+					isp_prt(isp, ISP_LOGDEBUG0, "LOAD RISC RAM %u words at load address 0x%x", nw, la);
 				}
 				mbs.logval = MBLOGALL;
 				isp_mboxcmd(isp, &mbs);
 				if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
+					if (mbs.param[0] == MBOX_HOST_INTERFACE_ERROR) {
+						isp_prt(isp, ISP_LOGERR, "switching to word load");
+						wordload = 1;
+						goto again;
+					}
 					isp_prt(isp, ISP_LOGERR, "F/W Risc Ram Load Failed");
 					ISP_RESET0(isp);
 					return;
@@ -855,6 +881,7 @@
 					mbs.param[4] = nw;
 					mbs.param[6] = DMA_WD3(isp->isp_rquest_dma);
 					mbs.param[7] = DMA_WD2(isp->isp_rquest_dma);
+					isp_prt(isp, ISP_LOGDEBUG1, "LOAD RISC RAM 2100 %u words at load address 0x%x\n", nw, la);
 				} else {
 					mbs.param[0] = MBOX_LOAD_RISC_RAM;
 					mbs.param[1] = la;
@@ -864,6 +891,7 @@
 					mbs.param[6] = DMA_WD3(isp->isp_rquest_dma);
 					mbs.param[7] = DMA_WD2(isp->isp_rquest_dma);
 					mbs.param[8] = la >> 16;
+					isp_prt(isp, ISP_LOGDEBUG1, "LOAD RISC RAM %u words at load address 0x%x\n", nw, la);
 				}
 				mbs.logval = MBLOGALL;
 				isp_mboxcmd(isp, &mbs);
@@ -910,6 +938,7 @@
 		mbs.param[1] = code_org;
 		mbs.param[2] = ucd.np[0];
 		mbs.logval = MBLOGNONE;
+		isp_prt(isp, ISP_LOGDEBUG1, "WRITE RAM %u words at load address 0x%x\n", ucd.np[3], code_org);
 		isp_mboxcmd(isp, &mbs);
 		if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
 			isp_prt(isp, ISP_LOGERR, "F/W download failed at word %d", isp->isp_mbxwrk1 - code_org);
@@ -6589,23 +6618,39 @@
 		mbs.param[1] = isp->isp_mbxwrk1++;
 		break;
 	case MBOX_WRITE_RAM_WORD_EXTENDED:
+		if (IS_24XX(isp)) {
+			uint32_t *lptr = (uint32_t *)ptr;
+			mbs.param[2] = lptr[0];
+			mbs.param[3] = lptr[0] >> 16;
+			lptr++;
+			ptr = (uint16_t *)lptr;
+		} else {
+			mbs.param[2] = *ptr++;
+		}
 		offset = isp->isp_mbxwrk1;
 		offset |= isp->isp_mbxwrk8 << 16;
-
-		mbs.param[2] = *ptr++;
 		mbs.param[1] = offset;
 		mbs.param[8] = offset >> 16;
-		isp->isp_mbxwrk1 = ++offset;
+		offset++;
+		isp->isp_mbxwrk1 = offset;
 		isp->isp_mbxwrk8 = offset >> 16;
 		break;
 	case MBOX_READ_RAM_WORD_EXTENDED:
+		if (IS_24XX(isp)) {
+			uint32_t *lptr = (uint32_t *)ptr;
+			uint32_t val = isp->isp_mboxtmp[2];
+			val |= (isp->isp_mboxtmp[3]) << 16;
+			*lptr++ = val;
+			ptr = (uint16_t *)lptr;
+		} else {
+			*ptr++ = isp->isp_mboxtmp[2];
+		}
 		offset = isp->isp_mbxwrk1;
 		offset |= isp->isp_mbxwrk8 << 16;
-
-		*ptr++ = isp->isp_mboxtmp[2];
 		mbs.param[1] = offset;
 		mbs.param[8] = offset >> 16;
-		isp->isp_mbxwrk1 = ++offset;
+		offset++;
+		isp->isp_mbxwrk1 = offset;
 		isp->isp_mbxwrk8 = offset >> 16;
 		break;
 	}
@@ -6830,7 +6875,7 @@
 	ISPOPMAP(0x00, 0x00),	/* 0x0c: */
 	ISPOPMAP(0x10f, 0x01),	/* 0x0d: MBOX_WRITE_RAM_WORD_EXTENDED */
 	ISPOPMAP(0x01, 0x05),	/* 0x0e: MBOX_CHECK_FIRMWARE */
-	ISPOPMAP(0x10f, 0x05),	/* 0x0f: MBOX_READ_RAM_WORD_EXTENDED */
+	ISPOPMAP(0x103, 0x0d),	/* 0x0f: MBOX_READ_RAM_WORD_EXTENDED */
 	ISPOPMAP(0x1f, 0x11),	/* 0x10: MBOX_INIT_REQ_QUEUE */
 	ISPOPMAP(0x2f, 0x21),	/* 0x11: MBOX_INIT_RES_QUEUE */
 	ISPOPMAP(0x0f, 0x01),	/* 0x12: MBOX_EXECUTE_IOCB */
@@ -6962,13 +7007,13 @@
 	"MAILBOX REG TEST",
 	"VERIFY CHECKSUM",
 	"ABOUT FIRMWARE",
-	"LOAD RAM",
+	"LOAD RAM (2100)",
 	"DUMP RAM",
+	"LOAD RISC RAM",
+	NULL,
 	"WRITE RAM WORD EXTENDED",
-	NULL,
+	"CHECK FIRMWARE",
 	"READ RAM WORD EXTENDED",
-	"CHECK FIRMWARE",
-	NULL,
 	"INIT REQUEST QUEUE",
 	"INIT RESULT QUEUE",
 	"EXECUTE IOCB",

==== //depot/projects/mjacob-dev/sys/dev/isp/isp_pci.c#5 (text+ko) ====

@@ -28,7 +28,7 @@
  * FreeBSD Version.
  */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/isp/isp_pci.c,v 1.158 2011/08/13 23:34:17 mjacob Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/isp/isp_pci.c,v 1.159 2011/11/16 02:52:24 mjacob Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1458,6 +1458,7 @@
 		imushp->error = EINVAL;
 		return;
 	}
+	isp_prt(imushp->isp, ISP_LOGDEBUG0, "request/result area @ 0x%jx/0x%jx", (uintmax_t) segs->ds_addr, (uintmax_t) segs->ds_len);
 	imushp->isp->isp_rquest = imushp->vbase;
 	imushp->isp->isp_rquest_dma = segs->ds_addr;
 	segs->ds_addr += ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN(imushp->isp));
@@ -1487,6 +1488,7 @@
 		imushp->error = EINVAL;
 		return;
 	}
+	isp_prt(imushp->isp, ISP_LOGDEBUG0, "scdma @ 0x%jx/0x%jx", (uintmax_t) segs->ds_addr, (uintmax_t) segs->ds_len);
 	FCPARAM(imushp->isp, imushp->chan)->isp_scdma = segs->ds_addr;
 	FCPARAM(imushp->isp, imushp->chan)->isp_scratch = imushp->vbase;
 }

==== //depot/projects/mjacob-dev/sys/dev/mfi/mfi.c#7 (text) ====

@@ -51,7 +51,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi.c,v 1.62 2011/11/09 21:53:49 delphij Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi.c,v 1.63 2011/11/16 15:39:27 jhb Exp $");
 
 #include "opt_mfi.h"
 
@@ -117,7 +117,7 @@
 static void 	mfi_issue_cmd_xscale(struct mfi_softc *sc,uint32_t bus_add,uint32_t frame_cnt);
 static void 	mfi_issue_cmd_ppc(struct mfi_softc *sc,uint32_t bus_add,uint32_t frame_cnt);
 
-static SYSCTL_NODE(_hw, OID_AUTO, mfi, CTLFLAG_RD, 0, "MFI driver parameters");
+SYSCTL_NODE(_hw, OID_AUTO, mfi, CTLFLAG_RD, 0, "MFI driver parameters");
 static int	mfi_event_locale = MFI_EVT_LOCALE_ALL;
 TUNABLE_INT("hw.mfi.event_locale", &mfi_event_locale);
 SYSCTL_INT(_hw_mfi, OID_AUTO, event_locale, CTLFLAG_RW, &mfi_event_locale,
@@ -484,15 +484,8 @@
 	mtx_unlock(&sc->mfi_io_lock);
 
 	/*
-	 * Set up the interrupt handler.  XXX This should happen in
-	 * mfi_pci.c
+	 * Set up the interrupt handler.
 	 */
-	sc->mfi_irq_rid = 0;
-	if ((sc->mfi_irq = bus_alloc_resource_any(sc->mfi_dev, SYS_RES_IRQ,
-	    &sc->mfi_irq_rid, RF_SHAREABLE | RF_ACTIVE)) == NULL) {
-		device_printf(sc->mfi_dev, "Cannot allocate interrupt\n");
-		return (EINVAL);
-	}
 	if (bus_setup_intr(sc->mfi_dev, sc->mfi_irq, INTR_MPSAFE|INTR_TYPE_BIO,
 	    NULL, mfi_intr, sc, &sc->mfi_intr)) {
 		device_printf(sc->mfi_dev, "Cannot set up interrupt\n");

==== //depot/projects/mjacob-dev/sys/dev/mfi/mfi_cam.c#5 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi_cam.c,v 1.7 2011/10/13 20:06:19 marius Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi_cam.c,v 1.8 2011/11/16 15:39:27 jhb Exp $");
 
 #include "opt_mfi.h"
 
@@ -45,6 +45,7 @@
 #include <sys/uio.h>
 #include <sys/proc.h>
 #include <sys/signalvar.h>
+#include <sys/sysctl.h>
 
 #include <cam/cam.h>
 #include <cam/cam_ccb.h>

==== //depot/projects/mjacob-dev/sys/dev/mfi/mfi_debug.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi_debug.c,v 1.3 2006/10/16 04:18:38 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi_debug.c,v 1.4 2011/11/16 18:42:39 kib Exp $");
 
 #include "opt_mfi.h"
 
@@ -41,6 +41,7 @@
 #include <sys/mutex.h>
 #include <sys/malloc.h>
 #include <sys/selinfo.h>
+#include <sys/sysctl.h>
 #include <sys/taskqueue.h>
 #include <sys/uio.h>
 #include <machine/resource.h>

==== //depot/projects/mjacob-dev/sys/dev/mfi/mfi_disk.c#2 (text) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi_disk.c,v 1.8 2008/11/17 23:30:19 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi_disk.c,v 1.9 2011/11/16 15:39:27 jhb Exp $");
 
 #include "opt_mfi.h"
 
@@ -35,6 +35,7 @@
 #include <sys/selinfo.h>
 #include <sys/module.h>
 #include <sys/malloc.h>
+#include <sys/sysctl.h>
 #include <sys/uio.h>
 
 #include <sys/bio.h>

==== //depot/projects/mjacob-dev/sys/dev/mfi/mfi_pci.c#2 (text) ====

@@ -51,7 +51,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi_pci.c,v 1.16 2010/03/02 17:34:11 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/mfi/mfi_pci.c,v 1.17 2011/11/16 15:39:27 jhb Exp $");
 
 /* PCI/PCI-X/PCIe bus interface for the LSI MegaSAS controllers */
 
@@ -66,6 +66,7 @@
 #include <sys/conf.h>
 #include <sys/bio.h>
 #include <sys/malloc.h>
+#include <sys/sysctl.h>
 #include <sys/uio.h>
 
 #include <machine/bus.h>
@@ -107,6 +108,11 @@
 DRIVER_MODULE(mfi, pci, mfi_pci_driver, mfi_devclass, 0, 0);
 MODULE_VERSION(mfi, 1);
 
+static int	mfi_msi = 0;
+TUNABLE_INT("hw.mfi.msi", &mfi_msi);
+SYSCTL_INT(_hw_mfi, OID_AUTO, msi, CTLFLAG_RDTUN, &mfi_msi, 0,
+    "Enable use of MSI interrupts");
+
 struct mfi_ident {
 	uint16_t	vendor;
 	uint16_t	device;
@@ -169,7 +175,7 @@
 	struct mfi_softc *sc;
 	struct mfi_ident *m;
 	uint32_t command;
-	int error;
+	int count, error;
 
 	sc = device_get_softc(dev);
 	bzero(sc, sizeof(*sc));
@@ -226,6 +232,20 @@
 		goto out;
 	}
 
+	/* Allocate IRQ resource. */
+	sc->mfi_irq_rid = 0;
+	count = 1;
+	if (mfi_msi && pci_alloc_msi(sc->mfi_dev, &count) == 0) {
+		device_printf(sc->mfi_dev, "Using MSI\n");
+		sc->mfi_irq_rid = 1;
+	}
+	if ((sc->mfi_irq = bus_alloc_resource_any(sc->mfi_dev, SYS_RES_IRQ,
+	    &sc->mfi_irq_rid, RF_SHAREABLE | RF_ACTIVE)) == NULL) {
+		device_printf(sc->mfi_dev, "Cannot allocate interrupt\n");
+		error = EINVAL;
+		goto out;
+	}
+
 	error = mfi_attach(sc);
 out:
 	if (error) {
@@ -280,6 +300,8 @@
 		bus_release_resource(sc->mfi_dev, SYS_RES_MEMORY,
 		    sc->mfi_regs_rid, sc->mfi_regs_resource);
 	}
+	if (sc->mfi_irq_rid != 0)
+		pci_release_msi(sc->mfi_dev);
 
 	return;
 }

==== //depot/projects/mjacob-dev/sys/dev/mfi/mfivar.h#4 (text) ====

@@ -54,7 +54,7 @@
 #define _MFIVAR_H
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/mfi/mfivar.h,v 1.15 2011/10/29 06:26:49 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/mfi/mfivar.h,v 1.16 2011/11/16 15:39:27 jhb Exp $");
 
 #include <sys/lock.h>
 #include <sys/sx.h>
@@ -395,6 +395,7 @@
 	(sc)->mfi_bhandle, (reg))
 
 MALLOC_DECLARE(M_MFIBUF);
+SYSCTL_DECL(_hw_mfi);
 
 #define MFI_CMD_TIMEOUT 30
 #define MFI_MAXPHYS (128 * 1024)

==== //depot/projects/mjacob-dev/sys/dev/msk/if_msk.c#7 (text+ko) ====

@@ -99,7 +99,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/msk/if_msk.c,v 1.118 2011/10/17 19:49:00 yongari Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/msk/if_msk.c,v 1.119 2011/11/16 19:25:26 yongari Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -700,7 +700,7 @@
 {
 	struct msk_ring_data *rd;
 	struct msk_rxdesc *rxd;
-	int i, prod;
+	int i, nbuf, prod;
 
 	MSK_IF_LOCK_ASSERT(sc_if);
 
@@ -710,11 +710,18 @@
 
 	rd = &sc_if->msk_rdata;
 	bzero(rd->msk_rx_ring, sizeof(struct msk_rx_desc) * MSK_RX_RING_CNT);
-	prod = sc_if->msk_cdata.msk_rx_prod;
-	i = 0;
+	for (i = prod = 0; i < MSK_RX_RING_CNT; i++) {
+		rxd = &sc_if->msk_cdata.msk_rxdesc[prod];
+		rxd->rx_m = NULL;
+		rxd->rx_le = &rd->msk_rx_ring[prod];
+		MSK_INC(prod, MSK_RX_RING_CNT);
+	}
+	nbuf = MSK_RX_BUF_CNT;
+	prod = 0;
 	/* Have controller know how to compute Rx checksum. */
 	if ((sc_if->msk_flags & MSK_FLAG_DESCV2) == 0 &&
 	    (sc_if->msk_ifp->if_capenable & IFCAP_RXCSUM) != 0) {
+#ifdef MSK_64BIT_DMA
 		rxd = &sc_if->msk_cdata.msk_rxdesc[prod];
 		rxd->rx_m = NULL;
 		rxd->rx_le = &rd->msk_rx_ring[prod];
@@ -723,15 +730,21 @@
 		rxd->rx_le->msk_control = htole32(OP_TCPSTART | HW_OWNER);
 		MSK_INC(prod, MSK_RX_RING_CNT);
 		MSK_INC(sc_if->msk_cdata.msk_rx_cons, MSK_RX_RING_CNT);
-		i++;
-	}
-	for (; i < MSK_RX_RING_CNT; i++) {
+#endif
 		rxd = &sc_if->msk_cdata.msk_rxdesc[prod];
 		rxd->rx_m = NULL;
 		rxd->rx_le = &rd->msk_rx_ring[prod];
+		rxd->rx_le->msk_addr = htole32(ETHER_HDR_LEN << 16 |
+		    ETHER_HDR_LEN);
+		rxd->rx_le->msk_control = htole32(OP_TCPSTART | HW_OWNER);
+		MSK_INC(prod, MSK_RX_RING_CNT);
+		MSK_INC(sc_if->msk_cdata.msk_rx_cons, MSK_RX_RING_CNT);
+		nbuf--;
+	}
+	for (i = 0; i < nbuf; i++) {
 		if (msk_newbuf(sc_if, prod) != 0)
 			return (ENOBUFS);

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


More information about the p4-projects mailing list