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", §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@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>