PERFORCE change 147287 for review
Ed Schouten
ed at FreeBSD.org
Wed Aug 13 09:53:09 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=147287
Change 147287 by ed at 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", §orsize, 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 at FreeBSD.org>
+ * Copyright (C) 2002-2003 NetGroup, Politecnico di Torino (Italy)
+ * Copyright (C) 2005-2008 Jung-uk Kim <jkim at 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 at FreeBSD.org>
+ * Copyright (C) 2002-2003 NetGroup, Politecnico di Torino (Italy)
+ * Copyright (C) 2005-2008 Jung-uk Kim <jkim at 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 at FreeBSD.org>
+ * Copyright (C) 2002-2003 NetGroup, Politecnico di Torino (Italy)
+ * Copyright (C) 2005-2008 Jung-uk Kim <jkim at 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) <<<
More information about the p4-projects
mailing list