Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 13 Aug 2008 09:53:08 GMT
From:      Ed Schouten <ed@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 147287 for review
Message-ID:  <200808130953.m7D9r8v3010722@repoman.freebsd.org>

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

Change 147287 by ed@ed_dull on 2008/08/13 09:52:11

	IFC.

Affected files ...

.. //depot/projects/mpsafetty/lib/libthread_db/thread_db.h#3 integrate
.. //depot/projects/mpsafetty/sbin/geom/class/eli/geli.8#2 integrate
.. //depot/projects/mpsafetty/sbin/geom/class/eli/geom_eli.c#2 integrate
.. //depot/projects/mpsafetty/sys/amd64/amd64/bpf_jit_machdep.c#2 integrate
.. //depot/projects/mpsafetty/sys/amd64/amd64/bpf_jit_machdep.h#2 integrate
.. //depot/projects/mpsafetty/sys/dev/cxgb/cxgb_adapter.h#4 integrate
.. //depot/projects/mpsafetty/sys/dev/cxgb/cxgb_main.c#4 integrate
.. //depot/projects/mpsafetty/sys/dev/cxgb/cxgb_sge.c#4 integrate
.. //depot/projects/mpsafetty/sys/dev/iicbus/ad7418.c#3 integrate
.. //depot/projects/mpsafetty/sys/dev/re/if_re.c#4 integrate
.. //depot/projects/mpsafetty/sys/dev/xen/balloon/balloon.c#1 branch
.. //depot/projects/mpsafetty/sys/dev/xen/blkback/blkback.c#1 branch
.. //depot/projects/mpsafetty/sys/dev/xen/blkfront/blkfront.c#1 branch
.. //depot/projects/mpsafetty/sys/dev/xen/blkfront/block.h#1 branch
.. //depot/projects/mpsafetty/sys/dev/xen/console/console.c#1 branch
.. //depot/projects/mpsafetty/sys/dev/xen/console/xencons_ring.c#1 branch
.. //depot/projects/mpsafetty/sys/dev/xen/console/xencons_ring.h#1 branch
.. //depot/projects/mpsafetty/sys/dev/xen/evtchn/evtchn_dev.c#1 branch
.. //depot/projects/mpsafetty/sys/dev/xen/netback/netback.c#1 branch
.. //depot/projects/mpsafetty/sys/dev/xen/netfront/mbufq.h#1 branch
.. //depot/projects/mpsafetty/sys/dev/xen/netfront/netfront.c#1 branch
.. //depot/projects/mpsafetty/sys/dev/xen/pcifront/pcifront.c#1 branch
.. //depot/projects/mpsafetty/sys/fs/devfs/devfs_vnops.c#2 integrate
.. //depot/projects/mpsafetty/sys/geom/eli/g_eli.c#3 integrate
.. //depot/projects/mpsafetty/sys/i386/i386/bpf_jit_machdep.c#2 integrate
.. //depot/projects/mpsafetty/sys/i386/i386/bpf_jit_machdep.h#2 integrate
.. //depot/projects/mpsafetty/sys/i386/include/xen/evtchn.h#1 branch
.. //depot/projects/mpsafetty/sys/i386/include/xen/features.h#1 branch
.. //depot/projects/mpsafetty/sys/i386/include/xen/hypercall.h#1 branch
.. //depot/projects/mpsafetty/sys/i386/include/xen/hypervisor.h#1 branch
.. //depot/projects/mpsafetty/sys/i386/include/xen/synch_bitops.h#1 branch
.. //depot/projects/mpsafetty/sys/i386/include/xen/xen-os.h#1 branch
.. //depot/projects/mpsafetty/sys/i386/include/xen/xen_intr.h#1 branch
.. //depot/projects/mpsafetty/sys/i386/include/xen/xenbus.h#1 branch
.. //depot/projects/mpsafetty/sys/i386/include/xen/xenfunc.h#1 branch
.. //depot/projects/mpsafetty/sys/i386/include/xen/xenpmap.h#1 branch
.. //depot/projects/mpsafetty/sys/i386/include/xen/xenstored.h#1 branch
.. //depot/projects/mpsafetty/sys/i386/include/xen/xenvar.h#1 branch
.. //depot/projects/mpsafetty/sys/i386/xen/clock.c#1 branch
.. //depot/projects/mpsafetty/sys/i386/xen/exception.s#1 branch
.. //depot/projects/mpsafetty/sys/i386/xen/locore.s#1 branch
.. //depot/projects/mpsafetty/sys/i386/xen/pmap.c#1 branch
.. //depot/projects/mpsafetty/sys/i386/xen/xen_machdep.c#1 branch
.. //depot/projects/mpsafetty/sys/kern/kern_exec.c#4 integrate
.. //depot/projects/mpsafetty/sys/sparc64/include/vmparam.h#2 integrate
.. //depot/projects/mpsafetty/sys/sparc64/sparc64/db_disasm.c#2 integrate
.. //depot/projects/mpsafetty/sys/sys/sx.h#2 integrate
.. //depot/projects/mpsafetty/tools/tools/nanobsd/FlashDevice.sub#2 integrate
.. //depot/projects/mpsafetty/usr.bin/rpcgen/rpc_svcout.c#2 integrate
.. //depot/projects/mpsafetty/usr.sbin/cpucontrol/cpucontrol.c#2 integrate

Differences ...

==== //depot/projects/mpsafetty/lib/libthread_db/thread_db.h#3 (text+ko) ====

@@ -24,7 +24,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libthread_db/thread_db.h,v 1.7 2008/07/30 00:59:19 marcel Exp $
+ * $FreeBSD: src/lib/libthread_db/thread_db.h,v 1.8 2008/08/13 00:03:35 marcel Exp $
  */
 
 #ifndef _THREAD_DB_H_
@@ -184,7 +184,7 @@
 	int		ti_pri;
 	lwpid_t		ti_lid;
 	char		ti_db_suspended;
-	char		ti_traceme;
+	int		ti_traceme;
 	sigset_t	ti_sigmask;
 	sigset_t	ti_pending;
 	psaddr_t	ti_tls;

==== //depot/projects/mpsafetty/sbin/geom/class/eli/geli.8#2 (text+ko) ====

@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/sbin/geom/class/eli/geli.8,v 1.22 2007/09/01 06:33:01 pjd Exp $
+.\" $FreeBSD: src/sbin/geom/class/eli/geli.8,v 1.23 2008/08/12 19:42:03 pjd Exp $
 .\"
 .Dd September 16, 2006
 .Dt GELI 8
@@ -81,7 +81,7 @@
 .Op Fl e Ar ealgo
 .Op Fl l Ar keylen
 .Op Fl s Ar sectorsize
-.Ar prov ...
+.Ar prov
 .Nm
 .Cm configure
 .Op Fl bB

==== //depot/projects/mpsafetty/sbin/geom/class/eli/geom_eli.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sbin/geom/class/eli/geom_eli.c,v 1.24 2007/05/15 20:25:16 marcel Exp $");
+__FBSDID("$FreeBSD: src/sbin/geom/class/eli/geom_eli.c,v 1.25 2008/08/12 19:42:03 pjd Exp $");
 
 #include <stdio.h>
 #include <stdint.h>
@@ -82,7 +82,7 @@
  * attach [-dprv] [-k keyfile] prov
  * detach [-fl] prov ...
  * stop - alias for 'detach'
- * onetime [-d] [-a aalgo] [-e ealgo] [-l keylen] prov ...
+ * onetime [-d] [-a aalgo] [-e ealgo] [-l keylen] prov
  * configure [-bB] prov ...
  * setkey [-pPv] [-n keyno] [-k keyfile] [-K newkeyfile] prov
  * delkey [-afv] [-n keyno] prov
@@ -156,7 +156,7 @@
 		{ 's', "sectorsize", &sectorsize, G_TYPE_NUMBER },
 		G_OPT_SENTINEL
 	    },
-	    NULL, "[-d] [-a aalgo] [-e ealgo] [-l keylen] [-s sectorsize] prov ..."
+	    NULL, "[-d] [-a aalgo] [-e ealgo] [-l keylen] [-s sectorsize] prov"
 	},
 	{ "configure", G_FLAG_VERBOSE, eli_main,
 	    {

==== //depot/projects/mpsafetty/sys/amd64/amd64/bpf_jit_machdep.c#2 (text+ko) ====

@@ -1,6 +1,6 @@
 /*-
- * Copyright (c) 2002 - 2003 NetGroup, Politecnico di Torino (Italy)
- * Copyright (c) 2005 Jung-uk Kim <jkim@FreeBSD.org>
+ * Copyright (C) 2002-2003 NetGroup, Politecnico di Torino (Italy)
+ * Copyright (C) 2005-2008 Jung-uk Kim <jkim@FreeBSD.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/bpf_jit_machdep.c,v 1.6 2008/06/24 20:12:12 jkim Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/bpf_jit_machdep.c,v 1.8 2008/08/12 21:31:31 jkim Exp $");
 
 #include "opt_bpf.h"
 
@@ -105,13 +105,13 @@
 
 	/* Do not compile an empty filter. */
 	if (nins == 0)
-		return NULL;
+		return (NULL);
 
 	/* Allocate the reference table for the jumps */
 	stream.refs = (u_int *)malloc((nins + 1) * sizeof(u_int),
 	    M_BPFJIT, M_NOWAIT);
 	if (stream.refs == NULL)
-		return NULL;
+		return (NULL);
 
 	/* Reset the reference table */
 	for (i = 0; i < nins + 1; i++)
@@ -131,40 +131,38 @@
 		ins = prog;
 
 		/* create the procedure header */
-		PUSH(RBP);
-		MOVrq(RSP, RBP);
-		MOVdoq(ESI, -8, RBP);
-		MOVdoq(EDX, -12, RBP);
-		PUSH(RBX);
+		MOVrq2(RBX, R8);
 		MOVrq(RDI, RBX);
+		MOVrd2(ESI, R9D);
+		MOVrd(EDX, EDI);
 
 		for (i = 0; i < nins; i++) {
 			stream.bpf_pc++;
 
 			switch (ins->code) {
 			default:
-				return NULL;
+				return (NULL);
 
 			case BPF_RET|BPF_K:
 				MOVid(ins->k, EAX);
-				POP(RBX);
-				LEAVE_RET();
+				MOVrq3(R8, RBX);
+				RET();
 				break;
 
 			case BPF_RET|BPF_A:
-				POP(RBX);
-				LEAVE_RET();
+				MOVrq3(R8, RBX);
+				RET();
 				break;
 
 			case BPF_LD|BPF_W|BPF_ABS:
 				MOVid(ins->k, ECX);
 				MOVrd(ECX, ESI);
 				ADDib(sizeof(int), ECX);
-				CMPoqd(-12, RBP, ECX);
-				JLEb(5);
+				CMPrd(EDI, ECX);
+				JLEb(6);
 				ZEROrd(EAX);
-				POP(RBX);
-				LEAVE_RET();
+				MOVrq3(R8, RBX);
+				RET();
 				MOVobd(RBX, RSI, EAX);
 				BSWAP(EAX);
 				break;
@@ -174,10 +172,10 @@
 				MOVid(ins->k, ECX);
 				MOVrd(ECX, ESI);
 				ADDib(sizeof(short), ECX);
-				CMPoqd(-12, RBP, ECX);
-				JLEb(3);
-				POP(RBX);
-				LEAVE_RET();
+				CMPrd(EDI, ECX);
+				JLEb(4);
+				MOVrq3(R8, RBX);
+				RET();
 				MOVobw(RBX, RSI, AX);
 				SWAP_AX();
 				break;
@@ -185,19 +183,19 @@
 			case BPF_LD|BPF_B|BPF_ABS:
 				ZEROrd(EAX);
 				MOVid(ins->k, ECX);
-				CMPoqd(-12, RBP, ECX);
-				JLEb(3);
-				POP(RBX);
-				LEAVE_RET();
+				CMPrd(EDI, ECX);
+				JLEb(4);
+				MOVrq3(R8, RBX);
+				RET();
 				MOVobb(RBX, RCX, AL);
 				break;
 
 			case BPF_LD|BPF_W|BPF_LEN:
-				MOVoqd(-8, RBP, EAX);
+				MOVrd3(R9D, EAX);
 				break;
 
 			case BPF_LDX|BPF_W|BPF_LEN:
-				MOVoqd(-8, RBP, EDX);
+				MOVrd3(R9D, EDX);
 				break;
 
 			case BPF_LD|BPF_W|BPF_IND:
@@ -205,11 +203,11 @@
 				ADDrd(EDX, ECX);
 				MOVrd(ECX, ESI);
 				ADDib(sizeof(int), ECX);
-				CMPoqd(-12, RBP, ECX);
-				JLEb(5);
+				CMPrd(EDI, ECX);
+				JLEb(6);
 				ZEROrd(EAX);
-				POP(RBX);
-				LEAVE_RET();
+				MOVrq3(R8, RBX);
+				RET();
 				MOVobd(RBX, RSI, EAX);
 				BSWAP(EAX);
 				break;
@@ -220,10 +218,10 @@
 				ADDrd(EDX, ECX);
 				MOVrd(ECX, ESI);
 				ADDib(sizeof(short), ECX);
-				CMPoqd(-12, RBP, ECX);
-				JLEb(3);
-				POP(RBX);
-				LEAVE_RET();
+				CMPrd(EDI, ECX);
+				JLEb(4);
+				MOVrq3(R8, RBX);
+				RET();
 				MOVobw(RBX, RSI, AX);
 				SWAP_AX();
 				break;
@@ -232,23 +230,23 @@
 				ZEROrd(EAX);
 				MOVid(ins->k, ECX);
 				ADDrd(EDX, ECX);
-				CMPoqd(-12, RBP, ECX);
-				JLEb(3);
-				POP(RBX);
-				LEAVE_RET();
+				CMPrd(EDI, ECX);
+				JLEb(4);
+				MOVrq3(R8, RBX);
+				RET();
 				MOVobb(RBX, RCX, AL);
 				break;
 
 			case BPF_LDX|BPF_MSH|BPF_B:
 				MOVid(ins->k, ECX);
-				CMPoqd(-12, RBP, ECX);
-				JLEb(5);
+				CMPrd(EDI, ECX);
+				JLEb(6);
 				ZEROrd(EAX);
-				POP(RBX);
-				LEAVE_RET();
+				MOVrq3(R8, RBX);
+				RET();
 				ZEROrd(EDX);
 				MOVobb(RBX, RCX, DL);
-				ANDib(0xf, DL);
+				ANDib(0x0f, DL);
 				SHLib(2, EDX);
 				break;
 
@@ -377,10 +375,10 @@
 
 			case BPF_ALU|BPF_DIV|BPF_X:
 				CMPid(0, EDX);
-				JNEb(5);
+				JNEb(6);
 				ZEROrd(EAX);
-				POP(RBX);
-				LEAVE_RET();
+				MOVrq3(R8, RBX);
+				RET();
 				MOVrd(EDX, ECX);
 				ZEROrd(EDX);
 				DIVrd(ECX);
@@ -466,7 +464,7 @@
 		stream.ibuf = (char *)malloc(stream.cur_ip, M_BPFJIT, M_NOWAIT);
 		if (stream.ibuf == NULL) {
 			free(stream.refs, M_BPFJIT);
-			return NULL;
+			return (NULL);
 		}
 
 		/*
@@ -490,5 +488,5 @@
 	 */
 	free(stream.refs, M_BPFJIT);
 
-	return (bpf_filter_func)stream.ibuf;
+	return ((bpf_filter_func)stream.ibuf);
 }

==== //depot/projects/mpsafetty/sys/amd64/amd64/bpf_jit_machdep.h#2 (text+ko) ====

@@ -1,6 +1,6 @@
 /*-
- * Copyright (c) 2002 - 2003 NetGroup, Politecnico di Torino (Italy)
- * Copyright (c) 2005 Jung-uk Kim <jkim@FreeBSD.org>
+ * Copyright (C) 2002-2003 NetGroup, Politecnico di Torino (Italy)
+ * Copyright (C) 2005-2008 Jung-uk Kim <jkim@FreeBSD.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -28,7 +28,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/amd64/amd64/bpf_jit_machdep.h,v 1.5 2008/06/24 20:12:12 jkim Exp $
+ * $FreeBSD: src/sys/amd64/amd64/bpf_jit_machdep.h,v 1.7 2008/08/12 21:31:31 jkim Exp $
  */
 
 #ifndef _BPF_JIT_MACHDEP_H_
@@ -45,6 +45,14 @@
 #define RBP	5
 #define RSI	6
 #define RDI	7
+#define R8	0
+#define R9	1
+#define R10	2
+#define R11	3
+#define R12	4
+#define R13	5
+#define R14	6
+#define R15	7
 
 #define EAX	0
 #define ECX	1
@@ -54,6 +62,14 @@
 #define EBP	5
 #define ESI	6
 #define EDI	7
+#define R8D	0
+#define R9D	1
+#define R10D	2
+#define R11D	3
+#define R12D	4
+#define R13D	5
+#define R14D	6
+#define R15D	7
 
 #define AX	0
 #define CX	1
@@ -125,6 +141,20 @@
 	    (3 << 6) | ((sr32 & 0x7) << 3) | (dr32 & 0x7), 1);		\
 } while (0)
 
+/* movl sr32,dr32 (dr32 = %r8-15d) */
+#define MOVrd2(sr32, dr32) do {						\
+	emitm(&stream, 0x8941, 2);					\
+	emitm(&stream,							\
+	    (3 << 6) | ((sr32 & 0x7) << 3) | (dr32 & 0x7), 1);		\
+} while (0)
+
+/* movl sr32,dr32 (sr32 = %r8-15d) */
+#define MOVrd3(sr32, dr32) do {						\
+	emitm(&stream, 0x8944, 2);					\
+	emitm(&stream,							\
+	    (3 << 6) | ((sr32 & 0x7) << 3) | (dr32 & 0x7), 1);		\
+} while (0)
+
 /* movq sr64,dr64 */
 #define MOVrq(sr64, dr64) do {						\
 	emitm(&stream, 0x8948, 2);					\
@@ -132,20 +162,18 @@
 	    (3 << 6) | ((sr64 & 0x7) << 3) | (dr64 & 0x7), 1);		\
 } while (0)
 
-/* movl off(sr64),dr32 */
-#define MOVoqd(off, sr64, dr32) do {					\
-	emitm(&stream, 0x8b, 1);					\
+/* movq sr64,dr64 (dr64 = %r8-15) */
+#define MOVrq2(sr64, dr64) do {						\
+	emitm(&stream, 0x8949, 2);					\
 	emitm(&stream,							\
-	    (1 << 6) | ((dr32 & 0x7) << 3) | (sr64 & 0x7), 1);		\
-	emitm(&stream, off, 1);						\
+	    (3 << 6) | ((sr64 & 0x7) << 3) | (dr64 & 0x7), 1);		\
 } while (0)
 
-/* movl sr32,off(dr64) */
-#define MOVdoq(sr32, off, dr64) do {					\
-	emitm(&stream, 0x89, 1);					\
+/* movq sr64,dr64 (sr64 = %r8-15) */
+#define MOVrq3(sr64, dr64) do {						\
+	emitm(&stream, 0x894c, 2);					\
 	emitm(&stream,							\
-	    (1 << 6) | ((sr32 & 0x7) << 3) | (dr64 & 0x7), 1);		\
-	emitm(&stream, off, 1);						\
+	    (3 << 6) | ((sr64 & 0x7) << 3) | (dr64 & 0x7), 1);		\
 } while (0)
 
 /* movl (sr64,or64,1),dr32 */
@@ -187,21 +215,11 @@
 	emitm(&stream, 0xc486, 2);					\
 } while (0)
 
-/* pushq r64 */
-#define PUSH(r64) do {							\
-	emitm(&stream, (5 << 4) | (0 << 3) | (r64 & 0x7), 1);		\
+/* ret */
+#define RET() do {						\
+	emitm(&stream, 0xc3, 1);					\
 } while (0)
 
-/* popq r64 */
-#define POP(r64) do {							\
-	emitm(&stream, (5 << 4) | (1 << 3) | (r64 & 0x7), 1);		\
-} while (0)
-
-/* leaveq/retq */
-#define LEAVE_RET() do {						\
-	emitm(&stream, 0xc3c9, 2);					\
-} while (0)
-
 /* addl sr32,dr32 */
 #define ADDrd(sr32, dr32) do {						\
 	emitm(&stream, 0x01, 1);					\
@@ -215,13 +233,6 @@
 	emitm(&stream, i32, 4);						\
 } while (0)
 
-/* addl i32,r32 */
-#define ADDid(i32, r32) do {						\
-	emitm(&stream, 0x81, 1);					\
-	emitm(&stream, (24 << 3) | r32, 1);				\
-	emitm(&stream, i32, 4);						\
-} while (0)
-
 /* addl i8,r32 */
 #define ADDib(i8, r32) do {						\
 	emitm(&stream, 0x83, 1);					\
@@ -333,14 +344,6 @@
 	emitm(&stream, (27 << 3) | (r32 & 0x7), 1);			\
 } while (0)
 
-/* cmpl off(sr64),dr32 */
-#define CMPoqd(off, sr64, dr32) do {					\
-	emitm(&stream, 0x3b, 1);					\
-	emitm(&stream,							\
-	    (1 << 6) | ((dr32 & 0x7) << 3) | (sr64 & 0x7), 1);		\
-	emitm(&stream, off, 1);						\
-} while (0)
-
 /* cmpl sr32,dr32 */
 #define CMPrd(sr32, dr32) do {						\
 	emitm(&stream, 0x39, 1);					\
@@ -372,12 +375,6 @@
 	emitm(&stream, off32, 4);					\
 } while (0)
 
-/* jle off32 */
-#define JLE(off32) do {							\
-	emitm(&stream, 0x8e0f, 2);					\
-	emitm(&stream, off32, 4);					\
-} while (0)
-
 /* jle off8 */
 #define JLEb(off8) do {							\
 	emitm(&stream, 0x7e, 1);					\

==== //depot/projects/mpsafetty/sys/dev/cxgb/cxgb_adapter.h#4 (text+ko) ====

@@ -26,7 +26,7 @@
 POSSIBILITY OF SUCH DAMAGE.
 
 
-$FreeBSD: src/sys/dev/cxgb/cxgb_adapter.h,v 1.34 2008/08/12 00:27:32 kmacy Exp $
+$FreeBSD: src/sys/dev/cxgb/cxgb_adapter.h,v 1.35 2008/08/13 01:30:41 kmacy Exp $
 
 ***************************************************************************/
 
@@ -380,6 +380,8 @@
 	struct callout		cxgb_tick_ch;
 	struct callout		sge_timer_ch;
 
+	unsigned int		check_task_cnt;
+
 	/* Register lock for use by the hardware layer */
 	struct mtx		mdio_lock;
 	struct mtx		elmer_lock;
@@ -569,6 +571,11 @@
 int t3_get_desc(const struct sge_qset *qs, unsigned int qnum, unsigned int idx,
     unsigned char *data);
 void t3_update_qset_coalesce(struct sge_qset *qs, const struct qset_params *p);
+
+#define CXGB_TICKS(a) ((a)->params.linkpoll_period ? \
+    (hz * (a)->params.linkpoll_period) / 10 : \
+    (a)->params.stats_update_period * hz)
+
 /*
  * XXX figure out how we can return this to being private to sge
  */

==== //depot/projects/mpsafetty/sys/dev/cxgb/cxgb_main.c#4 (text+ko) ====

@@ -28,7 +28,7 @@
 ***************************************************************************/
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_main.c,v 1.58 2008/08/12 00:27:32 kmacy Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_main.c,v 1.59 2008/08/13 01:30:41 kmacy Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -624,11 +624,6 @@
 	if ((error = bus_generic_attach(dev)) != 0)
 		goto out;
 
-	/*
-	 * XXX need to poll for link status
-	 */
-	sc->params.stats_update_period = 1;
-
 	/* initialize sge private state */
 	t3_sge_init_adapter(sc);
 
@@ -648,7 +643,7 @@
 	    G_FW_VERSION_MICRO(vers));
 
 	device_printf(sc->dev, "Firmware Version %s\n", &sc->fw_version[0]);
-	callout_reset(&sc->cxgb_tick_ch, hz, cxgb_tick, sc);
+	callout_reset(&sc->cxgb_tick_ch, CXGB_TICKS(sc), cxgb_tick, sc);
 	t3_add_attach_sysctls(sc);
 out:
 	if (error)
@@ -2220,7 +2215,7 @@
 		return;
 
 	taskqueue_enqueue(sc->tq, &sc->tick_task);
-	callout_reset(&sc->cxgb_tick_ch, hz, cxgb_tick, sc);
+	callout_reset(&sc->cxgb_tick_ch, CXGB_TICKS(sc), cxgb_tick, sc);
 }
 
 static void
@@ -2228,6 +2223,7 @@
 {
 	adapter_t *sc = (adapter_t *)arg;
 	const struct adapter_params *p = &sc->params;
+	int i;
 
 	if(sc->flags & CXGB_SHUTDOWN)
 		return;
@@ -2236,6 +2232,8 @@
 	if (p->linkpoll_period)
 		check_link_status(sc);
 
+	sc->check_task_cnt++;
+
 	/*
 	 * adapter lock can currently only be acquired after the
 	 * port lock
@@ -2244,6 +2242,19 @@
 
 	if (p->rev == T3_REV_B2 && p->nports < 4 && sc->open_device_map) 
 		check_t3b2_mac(sc);
+
+	/* Update MAC stats if it's time to do so */
+	if (!p->linkpoll_period ||
+	    (sc->check_task_cnt * p->linkpoll_period) / 10 >=
+	    p->stats_update_period) {
+		for_each_port(sc, i) {
+			struct port_info *port = &sc->port[i];
+			PORT_LOCK(port);
+			t3_mac_update_stats(&port->mac);
+			PORT_UNLOCK(port);
+		}
+		sc->check_task_cnt = 0;
+	}
 }
 
 static void

==== //depot/projects/mpsafetty/sys/dev/cxgb/cxgb_sge.c#4 (text+ko) ====

@@ -30,7 +30,7 @@
 
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_sge.c,v 1.54 2008/08/12 00:27:32 kmacy Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/cxgb/cxgb_sge.c,v 1.56 2008/08/13 01:32:32 kmacy Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1334,17 +1334,12 @@
 		
 		return (0);		
 	} else if (tso_info) {
-		int undersized, eth_type;
+		int min_size = TCPPKTHDRSIZE, eth_type, tagged;
 		struct cpl_tx_pkt_lso *hdr = (struct cpl_tx_pkt_lso *)txd;
 		struct ip *ip;
 		struct tcphdr *tcp;
-		char *pkthdr, tmp[TCPPKTHDRSIZE];
-		struct mbuf_vec *mv;
-		struct mbuf_iovec *tmpmi;
+		char *pkthdr;
 
-		mv = mtomv(m0);
-		tmpmi = mv->mv_vec;
-		
 		txd->flit[2] = 0;
 		GET_VTAG(cntrl, m0);
 		cntrl |= V_TXPKT_OPCODE(CPL_TX_PKT_LSO);
@@ -1353,21 +1348,29 @@
 		hdr->len = htonl(mlen | 0x80000000);
 
 		DPRINTF("tso buf len=%d\n", mlen);
-		undersized = (((tmpmi->mi_len < TCPPKTHDRSIZE) &&
-			(m0->m_flags & M_VLANTAG)) ||
-		    (tmpmi->mi_len < TCPPKTHDRSIZE - ETHER_VLAN_ENCAP_LEN));
+
+		tagged = m0->m_flags & M_VLANTAG;
+		if (!tagged)
+			min_size -= ETHER_VLAN_ENCAP_LEN;
 
-		if (__predict_false(undersized)) {
-			pkthdr = tmp;
-			if (mi)
-				dump_mi(mi);
+		if (__predict_false(mlen < min_size)) {
 			printf("mbuf=%p,len=%d,tso_segsz=%d,csum_flags=%#x,flags=%#x",
-			    m0, mlen, m0->m_pkthdr.tso_segsz, m0->m_pkthdr.csum_flags, m0->m_flags);
-			panic("discontig packet - fixxorz");
-		} else 
-			pkthdr = m0->m_data;
+			    m0, mlen, m0->m_pkthdr.tso_segsz,
+			    m0->m_pkthdr.csum_flags, m0->m_flags);
+			panic("tx tso packet too small");
+		}
+
+		/* Make sure that ether, ip, tcp headers are all in m0 */
+		if (__predict_false(m0->m_len < min_size)) {
+			m0 = m_pullup(m0, min_size);
+			if (__predict_false(m0 == NULL)) {
+				/* XXX panic probably an overreaction */
+				panic("couldn't fit header into mbuf");
+			}
+		}
+		pkthdr = m0->m_data;
 
-		if (__predict_false(m0->m_flags & M_VLANTAG)) {
+		if (tagged) {
 			eth_type = CPL_ETH_II_VLAN;
 			ip = (struct ip *)(pkthdr + ETHER_HDR_LEN +
 			    ETHER_VLAN_ENCAP_LEN);
@@ -3374,7 +3377,25 @@
 	"txq_eth",
 	"txq_ofld",
 	"txq_ctrl"	
-};		
+};
+
+static int
+sysctl_handle_macstat(SYSCTL_HANDLER_ARGS)
+{
+	struct port_info *p = arg1;
+	uint64_t *parg;
+
+	if (!p)
+		return (EINVAL);
+
+	parg = (uint64_t *) ((uint8_t *)&p->mac.stats + arg2);
+
+	PORT_LOCK(p);
+	t3_mac_update_stats(&p->mac);
+	PORT_UNLOCK(p);
+
+	return (sysctl_handle_quad(oidp, parg, 0, req));
+}
 
 void
 t3_add_configured_sysctls(adapter_t *sc)
@@ -3396,6 +3417,7 @@
 		struct port_info *pi = &sc->port[i];
 		struct sysctl_oid *poid;
 		struct sysctl_oid_list *poidlist;
+		struct mac_stats *mstats = &pi->mac.stats;
 		
 		snprintf(pi->namebuf, PORT_NAME_LEN, "port%d", i);
 		poid = SYSCTL_ADD_NODE(ctx, children, OID_AUTO, 
@@ -3404,11 +3426,11 @@
 		SYSCTL_ADD_INT(ctx, poidlist, OID_AUTO, 
 		    "nqsets", CTLFLAG_RD, &pi->nqsets,
 		    0, "#queue sets");
-		
+
 		for (j = 0; j < pi->nqsets; j++) {
 			struct sge_qset *qs = &sc->sge.qs[pi->first_qset + j];
-			struct sysctl_oid *qspoid, *rspqpoid, *txqpoid, *ctrlqpoid;
-			struct sysctl_oid_list *qspoidlist, *rspqpoidlist, *txqpoidlist, *ctrlqpoidlist;
+			struct sysctl_oid *qspoid, *rspqpoid, *txqpoid, *ctrlqpoid, *lropoid;
+			struct sysctl_oid_list *qspoidlist, *rspqpoidlist, *txqpoidlist, *ctrlqpoidlist, *lropoidlist;
 			struct sge_txq *txq = &qs->txq[TXQ_ETH];
 			
 			snprintf(qs->namebuf, QS_NAME_LEN, "qs%d", j);
@@ -3429,6 +3451,10 @@
 			    txq_names[2], CTLFLAG_RD, NULL, "ctrlq statistics");
 			ctrlqpoidlist = SYSCTL_CHILDREN(ctrlqpoid);
 
+			lropoid = SYSCTL_ADD_NODE(ctx, qspoidlist, OID_AUTO, 
+			    "lro_stats", CTLFLAG_RD, NULL, "LRO statistics");
+			lropoidlist = SYSCTL_CHILDREN(lropoid);
+
 			SYSCTL_ADD_UINT(ctx, rspqpoidlist, OID_AUTO, "size",
 			    CTLFLAG_RD, &qs->rspq.size,
 			    0, "#entries in response queue");
@@ -3520,11 +3546,95 @@
 			    CTLTYPE_STRING | CTLFLAG_RD, &qs->txq[TXQ_CTRL],
 			    0, t3_dump_txq_ctrl, "A", "dump of the transmit queue");
 
+			SYSCTL_ADD_INT(ctx, lropoidlist, OID_AUTO, "lro_queued",
+			    CTLFLAG_RD, &qs->lro.ctrl.lro_queued, 0, NULL);
+			SYSCTL_ADD_INT(ctx, lropoidlist, OID_AUTO, "lro_flushed",
+			    CTLFLAG_RD, &qs->lro.ctrl.lro_flushed, 0, NULL);
+			SYSCTL_ADD_INT(ctx, lropoidlist, OID_AUTO, "lro_bad_csum",
+			    CTLFLAG_RD, &qs->lro.ctrl.lro_bad_csum, 0, NULL);
+			SYSCTL_ADD_INT(ctx, lropoidlist, OID_AUTO, "lro_cnt",
+			    CTLFLAG_RD, &qs->lro.ctrl.lro_cnt, 0, NULL);
+		}
+
+		/* Now add a node for mac stats. */
+		poid = SYSCTL_ADD_NODE(ctx, poidlist, OID_AUTO, "mac_stats",
+		    CTLFLAG_RD, NULL, "MAC statistics");
+		poidlist = SYSCTL_CHILDREN(poid);
 
-			
+		/*
+		 * We (ab)use the length argument (arg2) to pass on the offset
+		 * of the data that we are interested in.  This is only required
+		 * for the quad counters that are updated from the hardware (we
+		 * make sure that we return the latest value).
+		 * sysctl_handle_macstat first updates *all* the counters from
+		 * the hardware, and then returns the latest value of the
+		 * requested counter.  Best would be to update only the
+		 * requested counter from hardware, but t3_mac_update_stats()
+		 * hides all the register details and we don't want to dive into
+		 * all that here.
+		 */
+#define CXGB_SYSCTL_ADD_QUAD(a)	SYSCTL_ADD_OID(ctx, poidlist, OID_AUTO, #a, \
+    (CTLTYPE_QUAD | CTLFLAG_RD), pi, offsetof(struct mac_stats, a), \
+    sysctl_handle_macstat, "QU", 0)
+		CXGB_SYSCTL_ADD_QUAD(tx_octets);
+		CXGB_SYSCTL_ADD_QUAD(tx_octets_bad);
+		CXGB_SYSCTL_ADD_QUAD(tx_frames);
+		CXGB_SYSCTL_ADD_QUAD(tx_mcast_frames);
+		CXGB_SYSCTL_ADD_QUAD(tx_bcast_frames);
+		CXGB_SYSCTL_ADD_QUAD(tx_pause);
+		CXGB_SYSCTL_ADD_QUAD(tx_deferred);
+		CXGB_SYSCTL_ADD_QUAD(tx_late_collisions);
+		CXGB_SYSCTL_ADD_QUAD(tx_total_collisions);
+		CXGB_SYSCTL_ADD_QUAD(tx_excess_collisions);
+		CXGB_SYSCTL_ADD_QUAD(tx_underrun);
+		CXGB_SYSCTL_ADD_QUAD(tx_len_errs);
+		CXGB_SYSCTL_ADD_QUAD(tx_mac_internal_errs);
+		CXGB_SYSCTL_ADD_QUAD(tx_excess_deferral);
+		CXGB_SYSCTL_ADD_QUAD(tx_fcs_errs);
+		CXGB_SYSCTL_ADD_QUAD(tx_frames_64);
+		CXGB_SYSCTL_ADD_QUAD(tx_frames_65_127);
+		CXGB_SYSCTL_ADD_QUAD(tx_frames_128_255);
+		CXGB_SYSCTL_ADD_QUAD(tx_frames_256_511);
+		CXGB_SYSCTL_ADD_QUAD(tx_frames_512_1023);
+		CXGB_SYSCTL_ADD_QUAD(tx_frames_1024_1518);
+		CXGB_SYSCTL_ADD_QUAD(tx_frames_1519_max);
+		CXGB_SYSCTL_ADD_QUAD(rx_octets);
+		CXGB_SYSCTL_ADD_QUAD(rx_octets_bad);
+		CXGB_SYSCTL_ADD_QUAD(rx_frames);
+		CXGB_SYSCTL_ADD_QUAD(rx_mcast_frames);
+		CXGB_SYSCTL_ADD_QUAD(rx_bcast_frames);
+		CXGB_SYSCTL_ADD_QUAD(rx_pause);
+		CXGB_SYSCTL_ADD_QUAD(rx_align_errs);
+		CXGB_SYSCTL_ADD_QUAD(rx_symbol_errs);
+		CXGB_SYSCTL_ADD_QUAD(rx_data_errs);
+		CXGB_SYSCTL_ADD_QUAD(rx_sequence_errs);
+		CXGB_SYSCTL_ADD_QUAD(rx_runt);
+		CXGB_SYSCTL_ADD_QUAD(rx_jabber);
+		CXGB_SYSCTL_ADD_QUAD(rx_short);
+		CXGB_SYSCTL_ADD_QUAD(rx_too_long);
+		CXGB_SYSCTL_ADD_QUAD(rx_mac_internal_errs);
+		CXGB_SYSCTL_ADD_QUAD(rx_cong_drops);
+		CXGB_SYSCTL_ADD_QUAD(rx_frames_64);
+		CXGB_SYSCTL_ADD_QUAD(rx_frames_65_127);
+		CXGB_SYSCTL_ADD_QUAD(rx_frames_128_255);
+		CXGB_SYSCTL_ADD_QUAD(rx_frames_256_511);
+		CXGB_SYSCTL_ADD_QUAD(rx_frames_512_1023);
+		CXGB_SYSCTL_ADD_QUAD(rx_frames_1024_1518);
+		CXGB_SYSCTL_ADD_QUAD(rx_frames_1519_max);
+#undef CXGB_SYSCTL_ADD_QUAD
 
-			
-		}
+#define CXGB_SYSCTL_ADD_ULONG(a) SYSCTL_ADD_ULONG(ctx, poidlist, OID_AUTO, #a, \
+    CTLFLAG_RD, &mstats->a, 0)
+		CXGB_SYSCTL_ADD_ULONG(tx_fifo_parity_err);
+		CXGB_SYSCTL_ADD_ULONG(rx_fifo_parity_err);
+		CXGB_SYSCTL_ADD_ULONG(tx_fifo_urun);
+		CXGB_SYSCTL_ADD_ULONG(rx_fifo_ovfl);
+		CXGB_SYSCTL_ADD_ULONG(serdes_signal_loss);
+		CXGB_SYSCTL_ADD_ULONG(xaui_pcs_ctc_err);
+		CXGB_SYSCTL_ADD_ULONG(xaui_pcs_align_change);
+		CXGB_SYSCTL_ADD_ULONG(num_toggled);
+		CXGB_SYSCTL_ADD_ULONG(num_resets);
+#undef CXGB_SYSCTL_ADD_ULONG
 	}
 }
 	

==== //depot/projects/mpsafetty/sys/dev/iicbus/ad7418.c#3 (text+ko) ====

@@ -23,7 +23,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/iicbus/ad7418.c,v 1.2 2008/08/04 21:14:24 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/iicbus/ad7418.c,v 1.3 2008/08/13 09:20:52 ed Exp $");
 /*
  * Analog Devices AD7418 chip sitting on the I2C bus.
  */
@@ -120,7 +120,7 @@
 	int conf;
 
 	sc->sc_dev = dev;
-	sx_init(&sc->sc_mtx, "ad7418");
+	sx_init(&sc->sc_lock, "ad7418");
 
 	SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
 		"temp", CTLTYPE_INT | CTLFLAG_RD, sc, 0,

==== //depot/projects/mpsafetty/sys/dev/re/if_re.c#4 (text+ko) ====

@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.133 2008/08/04 04:00:10 yongari Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.134 2008/08/13 03:40:08 yongari Exp $");
 
 /*
  * RealTek 8139C+/8169/8169S/8110S/8168/8111/8101E PCI NIC driver
@@ -1903,7 +1903,7 @@
 		maxpkt--;
 		if (rxvlan & RL_RDESC_VLANCTL_TAG) {
 			m->m_pkthdr.ether_vtag =
-			    ntohs((rxvlan & RL_RDESC_VLANCTL_DATA));
+			    bswap16((rxvlan & RL_RDESC_VLANCTL_DATA));
 			m->m_flags |= M_VLANTAG;
 		}
 		RL_UNLOCK(sc);
@@ -2307,7 +2307,7 @@
 	 * transmission attempt.
 	 */
 	if ((*m_head)->m_flags & M_VLANTAG)
-		vlanctl |= htons((*m_head)->m_pkthdr.ether_vtag) |
+		vlanctl |= bswap16((*m_head)->m_pkthdr.ether_vtag) |
 		    RL_TDESC_VLANCTL_TAG;
 
 	si = prod;

==== //depot/projects/mpsafetty/sys/fs/devfs/devfs_vnops.c#2 (text+ko) ====

@@ -31,7 +31,7 @@
  *	@(#)kernfs_vnops.c	8.15 (Berkeley) 5/21/95
  * From: FreeBSD: src/sys/miscfs/kernfs/kernfs_vnops.c 1.43
  *
- * $FreeBSD: src/sys/fs/devfs/devfs_vnops.c,v 1.163 2008/06/16 17:34:59 kib Exp $
+ * $FreeBSD: src/sys/fs/devfs/devfs_vnops.c,v 1.164 2008/08/12 19:34:45 kib Exp $
  */
 
 /*
@@ -110,9 +110,7 @@
 	fp = curthread->td_fpop;
 	if (fp == NULL)
 		return (EBADF);
-	mtx_lock(&cdevpriv_mtx);
 	p = fp->f_cdevpriv;
-	mtx_unlock(&cdevpriv_mtx);
 	if (p != NULL) {
 		error = 0;
 		*datap = p->cdpd_data;

==== //depot/projects/mpsafetty/sys/geom/eli/g_eli.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/geom/eli/g_eli.c,v 1.40 2008/07/20 19:56:13 pjd Exp $");
+__FBSDID("$FreeBSD: src/sys/geom/eli/g_eli.c,v 1.41 2008/08/12 20:19:08 pjd Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -663,13 +663,14 @@
 		 */
 		if (LIST_EMPTY(&sc->sc_workers)) {
 			error = crypto_newsession(&wr->w_sid, &crie,
-					CRYPTOCAP_F_HARDWARE);
+			    CRYPTOCAP_F_HARDWARE);
 			if (error == 0)
 				sc->sc_crypto = G_ELI_CRYPTO_HW;
 		}
-		if (sc->sc_crypto == G_ELI_CRYPTO_SW)
+		if (sc->sc_crypto == G_ELI_CRYPTO_SW) {
 			error = crypto_newsession(&wr->w_sid, &crie,
-					CRYPTOCAP_F_SOFTWARE);
+			    CRYPTOCAP_F_SOFTWARE);
+		}
 		if (error != 0) {
 			free(wr, M_ELI);
 			if (req != NULL) {

==== //depot/projects/mpsafetty/sys/i386/i386/bpf_jit_machdep.c#2 (text+ko) ====

@@ -1,6 +1,6 @@
 /*-
- * Copyright (c) 2002 - 2003 NetGroup, Politecnico di Torino (Italy)
- * Copyright (c) 2005 Jung-uk Kim <jkim@FreeBSD.org>
+ * Copyright (C) 2002-2003 NetGroup, Politecnico di Torino (Italy)
+ * Copyright (C) 2005-2008 Jung-uk Kim <jkim@FreeBSD.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/bpf_jit_machdep.c,v 1.6 2008/06/24 20:12:44 jkim Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/bpf_jit_machdep.c,v 1.8 2008/08/12 21:31:31 jkim Exp $");
 
 #include "opt_bpf.h"
 
@@ -105,13 +105,13 @@
 
 	/* Do not compile an empty filter. */
 	if (nins == 0)
-		return NULL;
+		return (NULL);
 

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



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