aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin
diff options
context:
space:
mode:
authorNavdeep Parhar <np@FreeBSD.org>2018-03-14 00:04:58 +0000
committerNavdeep Parhar <np@FreeBSD.org>2018-03-14 00:04:58 +0000
commitae9b401786f5dc55255b46e031290ae1db937a33 (patch)
tree937d220b9da58ca797ba7152f8ab280bc674ee97 /usr.sbin
parent576157b3ecb20dbe693dddb05a92ae049ebab329 (diff)
Notes
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/cxgbetool/Makefile5
-rw-r--r--usr.sbin/cxgbetool/cxgbetool.c6
-rw-r--r--usr.sbin/cxgbetool/tcb_common.c703
-rw-r--r--usr.sbin/cxgbetool/tcb_common.h160
-rw-r--r--usr.sbin/cxgbetool/tcbinfot4.c1423
-rw-r--r--usr.sbin/cxgbetool/tcbinfot5.c1465
-rw-r--r--usr.sbin/cxgbetool/tcbinfot6.c1535
-rw-r--r--usr.sbin/cxgbetool/tcbshowt4.c416
-rw-r--r--usr.sbin/cxgbetool/tcbshowt5.c427
-rw-r--r--usr.sbin/cxgbetool/tcbshowt6.c443
10 files changed, 6583 insertions, 0 deletions
diff --git a/usr.sbin/cxgbetool/Makefile b/usr.sbin/cxgbetool/Makefile
index f8291aff0a1b..da1ef0049b7c 100644
--- a/usr.sbin/cxgbetool/Makefile
+++ b/usr.sbin/cxgbetool/Makefile
@@ -2,6 +2,11 @@
PROG= cxgbetool
MAN= cxgbetool.8
+SRCS= cxgbetool.c
+SRCS+= tcb_common.c
+SRCS+= tcbinfot4.c tcbshowt4.c
+SRCS+= tcbinfot5.c tcbshowt5.c
+SRCS+= tcbinfot6.c tcbshowt6.c
CFLAGS+= -I${SRCTOP}/sys/dev/cxgbe -I${SRCTOP}/sys -I.
WARNS?= 2
diff --git a/usr.sbin/cxgbetool/cxgbetool.c b/usr.sbin/cxgbetool/cxgbetool.c
index 4b8dc0f709af..ddadf337a477 100644
--- a/usr.sbin/cxgbetool/cxgbetool.c
+++ b/usr.sbin/cxgbetool/cxgbetool.c
@@ -51,6 +51,7 @@ __FBSDID("$FreeBSD$");
#include <unistd.h>
#include "t4_ioctl.h"
+#include "tcb_common.h"
#define in_range(val, lo, hi) ( val < 0 || (val <= hi && val >= lo))
#define max(x, y) ((x) > (y) ? (x) : (y))
@@ -2102,6 +2103,7 @@ memdump(int argc, const char *argv[])
static void
show_tcb(uint32_t *buf, uint32_t len)
{
+ unsigned char *tcb = (unsigned char *)buf;
const char *s;
int i, n = 8;
@@ -2112,6 +2114,10 @@ show_tcb(uint32_t *buf, uint32_t len)
}
printf("\n");
}
+ set_tcb_info(TIDTYPE_TCB, chip_id);
+ set_print_style(PRNTSTYL_COMP);
+ swizzle_tcb(tcb);
+ parse_n_display_xcb(tcb);
}
#define A_TP_CMM_TCB_BASE 0x7d10
diff --git a/usr.sbin/cxgbetool/tcb_common.c b/usr.sbin/cxgbetool/tcb_common.c
new file mode 100644
index 000000000000..b17889f94a88
--- /dev/null
+++ b/usr.sbin/cxgbetool/tcb_common.c
@@ -0,0 +1,703 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2018 Chelsio Communications, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include "tcb_common.h"
+
+/***:-----------------------------------------------------------------------
+ ***: externals
+ ***:-----------------------------------------------------------------------
+ */
+
+extern _TCBVAR g_tcb_info4[];
+extern _TCBVAR g_scb_info4[];
+extern _TCBVAR g_fcb_info4[];
+extern void t4_display_tcb_aux_0(_TCBVAR *tvp,int aux);
+extern void t4_display_tcb_aux_1(_TCBVAR *tvp,int aux);
+extern void t4_display_tcb_aux_2(_TCBVAR *tvp,int aux);
+extern void t4_display_tcb_aux_3(_TCBVAR *tvp,int aux);
+
+extern _TCBVAR g_tcb_info5[];
+extern _TCBVAR g_scb_info5[];
+extern _TCBVAR g_fcb_info5[];
+extern void t5_display_tcb_aux_0(_TCBVAR *tvp,int aux);
+extern void t5_display_tcb_aux_1(_TCBVAR *tvp,int aux);
+extern void t5_display_tcb_aux_2(_TCBVAR *tvp,int aux);
+extern void t5_display_tcb_aux_3(_TCBVAR *tvp,int aux);
+
+extern _TCBVAR g_tcb_info6[];
+extern _TCBVAR g_scb_info6[];
+extern _TCBVAR g_fcb_info6[];
+extern void t6_display_tcb_aux_0(_TCBVAR *tvp,int aux);
+extern void t6_display_tcb_aux_1(_TCBVAR *tvp,int aux);
+extern void t6_display_tcb_aux_2(_TCBVAR *tvp,int aux);
+extern void t6_display_tcb_aux_3(_TCBVAR *tvp,int aux);
+extern void t6_display_tcb_aux_4(_TCBVAR *tvp,int aux);
+
+/***:-----------------------------------------------------------------------
+ ***: globals
+ ***:-----------------------------------------------------------------------
+ */
+
+_TCBVAR *g_tcb_info=g_tcb_info5;
+_TCBVAR *g_scb_info=g_scb_info5;
+_TCBVAR *g_fcb_info=g_fcb_info5;
+static int g_tN=0;
+
+static int g_prntstyl=PRNTSTYL_COMP;
+
+static int g_got_scb=0;
+static int g_got_fcb=0;
+
+
+/***:-----------------------------------------------------------------------
+***: error exit functions
+***:-----------------------------------------------------------------------
+*/
+
+/**: err_exit functions
+*: ------------------
+*/
+
+void tcb_prflush(void)
+{
+ fflush(stdout);
+ fflush(stderr);
+}
+
+
+void tcb_code_err_exit(char *fmt, ...)
+{
+ va_list args;
+ va_start(args, fmt);
+ printf("Coding Error in: ");
+ vprintf(fmt, args);
+ printf("\n");
+ tcb_prflush();
+ va_end(args);
+ exit(1);
+}
+
+/***:-----------------------------------------------------------------------
+***: tcb_hexdump functions
+***:-----------------------------------------------------------------------
+*/
+
+void
+tcb_hexdump(unsigned base, unsigned char *buf, unsigned int size)
+{
+ unsigned offset;
+
+ for (offset = 0; offset < size; ++offset) {
+ if (!(offset % 16)) printf("\n0x%4.4x: ", base + offset);
+ else if (!(offset % 8)) printf(" ");
+ printf("%2.2x ", (unsigned char)buf[offset]);
+ }
+}
+
+int tcb_strmatch_nc(char *cs, char *ct) {
+ while (*cs)
+ if (tolower(*cs++) != tolower(*ct++)) return (FALSE);
+ return (!(*ct)); /*return TRUE if *ct NULL at same time as *cs==NULL*/
+}
+
+
+/*: -------------------------------------------------------------------------
+string functions
+tcb_strmatch_nc: Similar to exact match, but case insensitive.
+*/
+
+
+int
+tcb_strncmp_nc(char *cs, char *ct, int n)
+{
+ /*case insensitive version of the standard strncmp() function */
+ int i = 0;
+ int ret;
+
+
+ ret = 0;
+ for (i = 0; i < n && 0 == ret && !(EOS == *cs && EOS == *ct); ++i) {
+ /* this is weird, but it matched GCC linux when strings don't
+ * have any upper case characters.
+ */
+ ret = tolower(*cs++) - tolower(*ct++);
+ }
+ return ret;
+}
+
+int
+tcb_startswith_nc(char *cs, char *ct)
+{ /* return true if cs start with ct */
+ return (0 == tcb_strncmp_nc(cs, ct, (int)strlen(ct)));
+}
+
+
+
+
+/***:-----------------------------------------------------------------------
+ ***: START OF WINDOWS FUNCTIONS
+ ***:-----------------------------------------------------------------------
+ */
+
+
+/***:-----------------------------------------------------------------------
+ ***: print utilties
+ ***:-----------------------------------------------------------------------
+ */
+
+static int g_PR_indent=1;
+
+void PR(char *fmt, ...)
+{
+ int fmt_len;
+ va_list args;
+ va_start(args,fmt);
+
+ if (g_PR_indent) printf(" ");
+ g_PR_indent=0;
+ fmt_len=(int) strlen(fmt);
+ if (fmt_len>0 && fmt[fmt_len-1]=='\n') g_PR_indent=1;
+
+ vprintf(fmt,args);
+ tcb_prflush();
+ va_end(args);
+}
+
+
+/***:-----------------------------------------------------------------------
+ ***: val()
+ ***:-----------------------------------------------------------------------
+ */
+
+_TCBVAR *
+lu_tcbvar(char *name)
+{
+ _TCBVAR *tvp=g_tcb_info;
+
+ while (tvp->name!=NULL) {
+ if (tcb_strmatch_nc(name,tvp->name)) return tvp;
+ else if (tcb_strmatch_nc(name,tvp->aka )) return tvp;
+ tvp+=1;
+ }
+ tcb_code_err_exit("lu_tcbvar: bad name %s\n",name);
+ return NULL;
+}
+
+unsigned
+val(char *name)
+{
+ _TCBVAR *tvp;
+
+ tvp=lu_tcbvar(name);
+ return tvp->val;
+}
+
+ui64
+val64(char *name)
+{
+ _TCBVAR *tvp;
+
+ tvp=lu_tcbvar(name);
+ return tvp->rawval;
+}
+
+
+
+/***:-----------------------------------------------------------------------
+ ***: get_tcb_bits
+ ***:-----------------------------------------------------------------------
+ */
+
+
+static int
+get_tcb_bit(unsigned char *A, int bit)
+{
+ int ret=0;
+ int ix,shift;
+
+ ix = 127 - (bit>>3);
+ shift=bit&0x7;
+ /* prdbg(" ix: %u, shift=%u\n",ix,shift); */
+ ret=(A[ix] >> shift) & 1;
+ return ret;
+}
+
+static ui64
+get_tcb_bits (unsigned char *A, int hi, int lo)
+{
+ ui64 ret=0;
+
+ if (lo>hi) {
+ int temp=lo;
+ lo=hi;
+ hi=temp;
+ }
+
+ while (hi>=lo) {
+ ret = (ret<<1) | get_tcb_bit(A,hi);
+ --hi;
+ }
+
+ return ret;
+}
+
+
+void
+decompress_val(_TCBVAR *tvp,unsigned ulp_type,unsigned tx_max,
+ unsigned rcv_nxt,unsigned rx_frag0_start_idx_raw)
+{
+ unsigned rawval=(unsigned) tvp->rawval;
+
+ switch(tvp->comp) {
+ case COMP_NONE: tvp->val=rawval; break;
+ case COMP_ULP: tvp->val=rawval; break;
+ case COMP_TX_MAX:
+ tvp->val=(tx_max - rawval) & 0xFFFFFFFF;
+ break;
+ case COMP_RCV_NXT:
+ if (tcb_startswith_nc(tvp->name,"rx_frag")) {
+ unsigned fragx=0;
+ if (!tcb_strmatch_nc(tvp->name,"rx_frag0_start_idx_raw"))
+ fragx=rawval;
+ tvp->val=(rcv_nxt+rx_frag0_start_idx_raw+fragx) & 0xFFFFFFFF;
+ } else {
+ tvp->val=(rcv_nxt - rawval) & 0xFFFFFFFF;
+ }
+ break;
+ case COMP_PTR: tvp->val=rawval; break;
+ case COMP_LEN:
+ {
+ tvp->val=rawval;
+ if (PM_MODE_RDDP==ulp_type || PM_MODE_DDP==ulp_type ||
+ PM_MODE_IANDP==ulp_type) {
+ /* TP does this internally. Not sure if I should show the
+ * unaltered value or the raw value. For now I
+ * will diplay the raw value. For now I've added the code
+ * mainly to stop windows compiler from warning about ulp_type
+ * being an unreferenced parameter.
+ */
+ tvp->val=0;
+ tvp->val=rawval; /* comment this out to display altered value */
+ }
+ }
+ break;
+ default:
+ tcb_code_err_exit("decompress_val, bad switch: %d",tvp->comp);
+ break;
+ }
+
+
+
+}
+
+
+void
+get_tcb_field(_TCBVAR *tvp,unsigned char *buf)
+{
+ assert(tvp->hi-tvp->lo+1<=64);
+ assert(tvp->hi>=tvp->lo);
+
+ tvp->rawval=get_tcb_bits(buf,tvp->lo,tvp->hi);
+ /* assume no compression and 32-bit value for now */
+ tvp->val=(unsigned) (tvp->rawval & 0xFFFFFFFF);
+
+
+}
+
+
+/***:-----------------------------------------------------------------------
+ ***: spr_* functions
+ ***:-----------------------------------------------------------------------
+ */
+
+char *
+spr_tcp_state (unsigned state)
+{
+ char *ret="UNKNOWN";
+
+ if ( 0 == state) {ret = "CLOSED";}
+ else if ( 1 == state) {ret = "LISTEN";}
+ else if ( 2 == state) {ret = "SYN_SENT";}
+ else if ( 3 == state) {ret = "SYN_RCVD";}
+ else if ( 4 == state) {ret = "ESTABLISHED";}
+ else if ( 5 == state) {ret = "CLOSE_WAIT";}
+ else if ( 6 == state) {ret = "FIN_WAIT_1";}
+ else if ( 7 == state) {ret = "CLOSING";}
+ else if ( 8 == state) {ret = "LAST_ACK";}
+ else if ( 9 == state) {ret = "FIN_WAIT_2";}
+ else if (10 == state) {ret = "TIME_WAIT";}
+ else if (11 == state) {ret = "ESTABLISHED_RX";}
+ else if (12 == state) {ret = "ESTABLISHED_TX";}
+ else if (13 == state) {ret = "SYN_PEND";}
+ else if (14 == state) {ret = "ESC_1_STATE";}
+ else if (15 == state) {ret = "ESC_2_STATE";}
+
+ return ret;
+}
+
+char *
+spr_cctrl_sel(unsigned sel0,unsigned sel1)
+{
+ unsigned sel=(sel1<<1) | sel0;
+ char *ret="UNKNOWN";
+
+ if ( 0 == sel) {ret = "Reno";}
+ else if ( 1 == sel) {ret = "Tahoe";}
+ else if ( 2 == sel) {ret = "NewReno";}
+ else if ( 3 == sel) {ret = "HighSpeed";}
+
+ return ret;
+}
+
+
+char *
+spr_ulp_type(unsigned ulp_type)
+{
+ char *ret="UNKNOWN";
+
+ /*The tp.h PM_MODE_XXX call 1 DDP and 5 IANDP, but external
+ * documentation (tcb.h" calls 5 ddp, and doesn't mention 1 or 3.
+ */
+
+ if ( PM_MODE_PASS == ulp_type) {ret = "TOE";}
+ else if ( PM_MODE_DDP == ulp_type) {ret = "DDP";}
+ else if ( PM_MODE_ISCSI == ulp_type) {ret = "ISCSI";}
+ else if ( PM_MODE_IWARP == ulp_type) {ret = "IWARP";}
+ else if ( PM_MODE_RDDP == ulp_type) {ret = "RDMA";}
+ else if ( PM_MODE_IANDP == ulp_type) {ret = "IANDP_DDP";}
+ else if ( PM_MODE_FCOE == ulp_type) {ret = "FCoE";}
+ else if ( PM_MODE_USER == ulp_type) {ret = "USER";}
+ else if ( PM_MODE_TLS == ulp_type) {ret = "TLS";}
+ else if ( PM_MODE_DTLS == ulp_type) {ret = "DTLS";}
+
+ return ret;
+}
+
+char *
+spr_ip_version(unsigned ip_version)
+{
+ char *ret="UNKNOWN";
+
+ if ( 0 == ip_version) {ret = "IPv4";}
+ else if ( 1 == ip_version) {ret = "IPv6";}
+
+ return ret;
+}
+
+
+
+/***:-----------------------------------------------------------------------
+ ***: display_tcb()
+ ***:-----------------------------------------------------------------------
+ */
+
+void
+display_tcb_compressed(_TCBVAR *tvp,int aux)
+{
+
+ if (g_tN==4) {
+ t4_display_tcb_aux_0(tvp,aux);
+ if (1==aux) t4_display_tcb_aux_1(tvp,aux);
+ else if (2==aux) t4_display_tcb_aux_2(tvp,aux);
+ else if (3==aux) t4_display_tcb_aux_3(tvp,aux);
+
+ } else if (g_tN==5) {
+ t5_display_tcb_aux_0(tvp,aux);
+ if (1==aux) t5_display_tcb_aux_1(tvp,aux);
+ else if (2==aux) t5_display_tcb_aux_2(tvp,aux);
+ else if (3==aux) t5_display_tcb_aux_3(tvp,aux);
+ } else if (g_tN==6) {
+ t6_display_tcb_aux_0(tvp,aux);
+ if (1==aux) t6_display_tcb_aux_1(tvp,aux);
+ else if (2==aux) t6_display_tcb_aux_2(tvp,aux);
+ else if (3==aux) t6_display_tcb_aux_3(tvp,aux);
+ else if (4==aux) t6_display_tcb_aux_4(tvp,aux);
+ }
+}
+
+
+
+
+/***:-----------------------------------------------------------------------
+ ***: parse_n_decode_tcb
+ ***:-----------------------------------------------------------------------
+ */
+
+
+unsigned
+parse_tcb( _TCBVAR *base_tvp, unsigned char *buf)
+{ /* parse the TCB */
+ _TCBVAR *tvp=base_tvp;
+ unsigned ulp_type;
+ int aux=1; /* assume TOE or iSCSI */
+ unsigned tx_max=0, rcv_nxt=0, rx_frag0_start_idx_raw=0;
+ int got_tx_max=0, got_rcv_nxt=0, got_rx_frag0_start_idx_raw=0;
+
+
+ /* parse the TCB */
+ while (tvp->name!=NULL) {
+ get_tcb_field(tvp,buf);
+ if (!got_tx_max && tcb_strmatch_nc("tx_max",tvp->name)) {
+ tx_max=tvp->val;
+ got_tx_max=1;
+ }
+ if (!got_rcv_nxt && tcb_strmatch_nc("rcv_nxt",tvp->name)) {
+ rcv_nxt=tvp->val;
+ got_rcv_nxt=1;
+ }
+ if (!got_rx_frag0_start_idx_raw &&
+ tcb_strmatch_nc("rx_frag0_start_idx_raw",tvp->name)) {
+ rx_frag0_start_idx_raw=tvp->val;
+ got_rx_frag0_start_idx_raw=1;
+ }
+ tvp+=1;
+ }
+
+ tvp=base_tvp;
+ ulp_type=tvp->val; /* ULP type is always first variable in TCB */
+ if (PM_MODE_IANDP==ulp_type || PM_MODE_FCOE==ulp_type) aux=3;
+ else if (PM_MODE_RDDP==ulp_type) aux=2;
+ else if (6==g_tN && (PM_MODE_TLS==ulp_type || PM_MODE_DTLS==ulp_type)) aux=4;
+ else aux=1;
+
+ assert(got_tx_max && got_rcv_nxt && got_rx_frag0_start_idx_raw);
+
+ /* decompress the compressed values */
+ tvp=base_tvp;
+ while (tvp->name!=NULL) {
+ decompress_val(tvp,ulp_type,tx_max,rcv_nxt,rx_frag0_start_idx_raw);
+ tvp+=1;
+ }
+
+ return aux;
+}
+
+
+
+void
+parse_scb( _TCBVAR *base_tvp, unsigned char *buf)
+{ /* parse the SCB */
+ _TCBVAR *tvp=base_tvp;
+
+ while (tvp->name!=NULL) {
+ if (tcb_strmatch_nc("scb_slush",tvp->name)) {
+ /* the scb_slush field is all of remaining memory */
+ tvp->rawval=0;
+ tvp->val=0;
+ } else {
+ get_tcb_field(tvp,buf);
+ }
+ tvp+=1;
+ }
+}
+
+
+void
+parse_fcb( _TCBVAR *base_tvp, unsigned char *buf)
+{ /* parse the FCB */
+ _TCBVAR *tvp=base_tvp;
+
+ while (tvp->name!=NULL) {
+ get_tcb_field(tvp,buf);
+ tvp+=1;
+ }
+}
+
+
+void
+display_list_tcb(_TCBVAR *base_tvp,int aux)
+{
+ _TCBVAR *tvp=base_tvp;
+ while (tvp->name!=NULL) {
+ if (tvp->aux==0 || tvp->aux==aux) {
+ if (tvp->hi-tvp->lo+1<=32) {
+ printf(" %4d:%4d %31s: %10u (0x%1x)",tvp->lo,tvp->hi,tvp->name,
+ (unsigned) tvp->rawval,(unsigned) tvp->rawval);
+ if (COMP_TX_MAX==tvp->comp || COMP_RCV_NXT==tvp->comp)
+ printf(" -> %1u (0x%x)", tvp->val,tvp->val);
+ } else {
+ printf(" %4d:%4d %31s: 0x%1llx",tvp->lo,tvp->hi,tvp->name,
+ tvp->rawval);
+ }
+ printf("\n");
+ }
+ tvp+=1;
+ }
+}
+
+void
+display_tcb(_TCBVAR *tvp,unsigned char *buf,int aux)
+{
+ if (g_prntstyl==PRNTSTYL_VERBOSE ||
+ g_prntstyl==PRNTSTYL_RAW) {
+ tcb_hexdump(0,buf,128);
+ printf("\n");
+ }
+
+ if (g_prntstyl==PRNTSTYL_VERBOSE ||
+ g_prntstyl==PRNTSTYL_LIST) {
+ display_list_tcb(tvp,aux);
+ }
+
+ if (g_prntstyl==PRNTSTYL_VERBOSE ||
+ g_prntstyl==PRNTSTYL_COMP) {
+ display_tcb_compressed(tvp,aux);
+ }
+
+}
+
+void
+parse_n_display_tcb(unsigned char *buf)
+{
+ _TCBVAR *tvp=g_tcb_info;
+ int aux;
+
+ aux=parse_tcb(tvp,buf);
+ display_tcb(tvp,buf,aux);
+}
+
+void
+parse_n_display_scb(unsigned char *buf)
+{
+ _TCBVAR *tvp=g_scb_info;
+
+ parse_scb(tvp,buf);
+ if (g_prntstyl==PRNTSTYL_VERBOSE ||
+ g_prntstyl==PRNTSTYL_RAW) {
+ tcb_hexdump(0,buf,128);
+ printf("\n");
+ }
+ if (g_prntstyl==PRNTSTYL_VERBOSE ||
+ g_prntstyl==PRNTSTYL_LIST ||
+ g_prntstyl==PRNTSTYL_COMP) {
+ display_list_tcb(tvp,0);
+ }
+}
+
+void
+parse_n_display_fcb(unsigned char *buf)
+{
+ _TCBVAR *tvp=g_fcb_info;
+
+ parse_fcb(tvp,buf);
+ if (g_prntstyl==PRNTSTYL_VERBOSE ||
+ g_prntstyl==PRNTSTYL_RAW) {
+ tcb_hexdump(0,buf,128);
+ printf("\n");
+ }
+
+ if (g_prntstyl==PRNTSTYL_VERBOSE ||
+ g_prntstyl==PRNTSTYL_LIST ||
+ g_prntstyl==PRNTSTYL_COMP) {
+ display_list_tcb(tvp,0);
+ }
+}
+
+void
+parse_n_display_xcb(unsigned char *buf)
+{
+ if (g_got_scb) parse_n_display_scb(buf);
+ else if (g_got_fcb) parse_n_display_fcb(buf);
+ else parse_n_display_tcb(buf);
+}
+
+/***:-----------------------------------------------------------------------
+ ***: swizzle_tcb
+ ***:-----------------------------------------------------------------------
+ */
+
+void
+swizzle_tcb(unsigned char *buf)
+{
+ int i,j,k;
+
+ for (i=0, j=128-16 ; i<j ; i+=16, j-=16) {
+ unsigned char temp;
+ for (k=0; k<16; ++k) {
+ temp=buf[i+k];
+ buf[i+k]=buf[j+k];
+ buf[j+k]=temp;
+ }
+ }
+}
+
+
+/***:-----------------------------------------------------------------------
+ ***: END OF WINDOWS FUNCTIONS
+ ***:-----------------------------------------------------------------------
+ */
+
+void set_tidtype(unsigned int tidtype)
+{
+ if (tidtype == TIDTYPE_SCB)
+ {
+ g_got_scb = 1;
+ }
+ else if (tidtype == TIDTYPE_FCB)
+ {
+ g_got_fcb = 1;
+ }
+ else
+ {
+ g_got_scb = 0;
+ g_got_fcb = 0;
+ }
+
+}
+
+void
+set_tcb_info(unsigned int tidtype, unsigned int cardtype)
+{
+ set_tidtype(tidtype);
+
+ g_tN = cardtype;
+ if (4 == g_tN) {
+ g_tcb_info = g_tcb_info4;
+ g_scb_info = g_scb_info4;
+ g_fcb_info = g_fcb_info4;
+ }
+ else if (5 == g_tN) {
+ g_tcb_info = g_tcb_info5;
+ g_scb_info = g_scb_info5;
+ g_fcb_info = g_fcb_info5;
+ }
+ else if (6 == g_tN) {
+ g_tcb_info = g_tcb_info6;
+ g_scb_info = g_scb_info6;
+ g_fcb_info = g_fcb_info6;
+ }
+}
+
+void
+set_print_style(unsigned int prntstyl)
+{
+ g_prntstyl=prntstyl;
+}
diff --git a/usr.sbin/cxgbetool/tcb_common.h b/usr.sbin/cxgbetool/tcb_common.h
new file mode 100644
index 000000000000..60f2acfe0887
--- /dev/null
+++ b/usr.sbin/cxgbetool/tcb_common.h
@@ -0,0 +1,160 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2018 Chelsio Communications, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (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$
+ *
+ */
+
+#ifndef __tcb_common_h
+#define __tcb_common_h
+
+/* ANSI C standard includes */
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#ifndef EOS
+#define EOS '\0'
+#endif
+
+#ifndef __variable_sizes
+
+/* windows has _UI64_MAX. C99 has ULLONG_MAX, but I don't compile
+with C99 for portability with windows, so the ui64 is a guess.
+I'll add an assert to cl_main to confirm these sizes are accurate.
+*/
+#ifdef _UI64_MAX /* windows */
+#if (_UI64_MAX == 0xFFFFFFFFFFFFFFFF)
+typedef __int64 si64;
+typedef unsigned __int64 ui64;
+#endif
+#else /*else of #ifdef _UI64_MAX */
+typedef long long int si64;
+typedef unsigned long long int ui64;
+#endif /*endif of #ifdef _UI64_MAX */
+#endif /* endif of #ifndef __variable_sizes */
+
+
+
+
+typedef struct tcb_var {
+ char *name;
+ int aux;
+ int lo;
+ int hi;
+
+ char *faka;
+ int flo;
+ int fhi;
+
+ char *aka;
+
+ int comp;
+
+ char *desc;
+ char *akadesc;
+
+ ui64 rawval;
+ unsigned val;
+
+} _TCBVAR;
+
+
+enum comp_types {
+
+ COMP_NONE=0,
+ COMP_ULP,
+ COMP_TX_MAX,
+ COMP_RCV_NXT,
+ COMP_PTR,
+ COMP_LEN,
+
+};
+
+
+enum tidtypes {
+ TIDTYPE_TCB=0,
+ TIDTYPE_SCB=1,
+ TIDTYPE_FCB=2,
+
+};
+
+
+enum prntstyls {
+ PRNTSTYL_VERBOSE=0,
+ PRNTSTYL_LIST=1,
+ PRNTSTYL_COMP=2,
+ PRNTSTYL_RAW=3,
+
+};
+
+
+/* from tp/src/tp.h */
+#define PM_MODE_PASS 0
+#define PM_MODE_DDP 1
+#define PM_MODE_ISCSI 2
+#define PM_MODE_IWARP 3
+#define PM_MODE_RDDP 4
+#define PM_MODE_IANDP 5
+#define PM_MODE_FCOE 6
+#define PM_MODE_USER 7
+#define PM_MODE_TLS 8
+#define PM_MODE_DTLS 9
+
+
+
+#define SEQ_ADD(a,b) (((a)+(b)) & 0xFFFFFFFF)
+#define SEQ_SUB(a,b) (((a)-(b)) & 0xFFFFFFFF)
+
+///* functions needed by the tcbshowtN.c code */
+extern unsigned val(char *name);
+extern ui64 val64(char *name);
+extern void PR(char *fmt, ...);
+extern char *spr_tcp_state(unsigned state);
+extern char *spr_ip_version(unsigned ipver);
+extern char *spr_cctrl_sel(unsigned cctrl_sel0,unsigned cctrl_sel1);
+extern char *spr_ulp_type(unsigned ulp_type);
+
+
+extern unsigned parse_tcb( _TCBVAR *base_tvp, unsigned char *buf);
+extern void display_tcb(_TCBVAR *tvp,unsigned char *buf,int aux);
+extern void parse_n_display_xcb(unsigned char *buf);
+
+extern void swizzle_tcb(unsigned char *buf);
+extern void set_tidtype(unsigned int tidtype);
+extern void set_tcb_info(unsigned int tidtype, unsigned int cardtype);
+extern void set_print_style(unsigned int prntstyl);
+
+#endif /* __tcb_common_h */
diff --git a/usr.sbin/cxgbetool/tcbinfot4.c b/usr.sbin/cxgbetool/tcbinfot4.c
new file mode 100644
index 000000000000..9daff0af3338
--- /dev/null
+++ b/usr.sbin/cxgbetool/tcbinfot4.c
@@ -0,0 +1,1423 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2018 Chelsio Communications, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/* Auto-generated file. Avoid direct editing. */
+/* Edits will be lost when file regenerated. */
+#include <stdio.h>
+#include "tcb_common.h"
+_TCBVAR g_tcb_info4[]={
+ {"ulp_type" , 0, 0, 3, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "ulp_type" , /* aka */
+ COMP_NONE , /* comp */
+ "ULP mode: 0 =toe, 2=iscsi, 4=rdma, 5=ddp, remaining values are reserved", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"ulp_raw" , 0, 4, 11, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "ulp" , /* aka */
+ COMP_ULP , /* comp */
+ "ULP subtype", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"l2t_ix" , 0, 12, 23, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "l2t_ix" , /* aka */
+ COMP_NONE , /* comp */
+ "Destination MAC address index", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"smac_sel" , 0, 24, 31, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "smac_sel" , /* aka */
+ COMP_NONE , /* comp */
+ "Source MAC address index", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MIGRATING" , 0, 32, 32, /* name,aux,lo,hi */
+ "t_flags" , 0, 0, /* faka,flo,fhi */
+ "migrating" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_NON_OFFLOAD" , 0, 33, 33, /* name,aux,lo,hi */
+ "t_flags" , 1, 1, /* faka,flo,fhi */
+ "non_offload" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_LOCK_TID" , 0, 34, 34, /* name,aux,lo,hi */
+ "t_flags" , 2, 2, /* faka,flo,fhi */
+ "lock_tid" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_KEEPALIVE" , 0, 35, 35, /* name,aux,lo,hi */
+ "t_flags" , 3, 3, /* faka,flo,fhi */
+ "keepalive" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DACK" , 0, 36, 36, /* name,aux,lo,hi */
+ "t_flags" , 4, 4, /* faka,flo,fhi */
+ "dack" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DACK_MSS" , 0, 37, 37, /* name,aux,lo,hi */
+ "t_flags" , 5, 5, /* faka,flo,fhi */
+ "dack_mss" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DACK_NOT_ACKED" , 0, 38, 38, /* name,aux,lo,hi */
+ "t_flags" , 6, 6, /* faka,flo,fhi */
+ "dack_not_acked" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_NAGLE" , 0, 39, 39, /* name,aux,lo,hi */
+ "t_flags" , 7, 7, /* faka,flo,fhi */
+ "nagle" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_SSWS_DISABLED" , 0, 40, 40, /* name,aux,lo,hi */
+ "t_flags" , 8, 8, /* faka,flo,fhi */
+ "ssws_disabled" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_FLOW_CONTROL_DDP" , 0, 41, 41, /* name,aux,lo,hi */
+ "t_flags" , 9, 9, /* faka,flo,fhi */
+ "rx_flow_control_ddp" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_FLOW_CONTROL_DISABLE" , 0, 42, 42, /* name,aux,lo,hi */
+ "t_flags" , 10, 10, /* faka,flo,fhi */
+ "rx_flow_control_disable" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_CHANNEL" , 0, 43, 43, /* name,aux,lo,hi */
+ "t_flags" , 11, 11, /* faka,flo,fhi */
+ "rx_channel" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_CHANNEL" , 0, 44, 45, /* name,aux,lo,hi */
+ "t_flags" , 12, 13, /* faka,flo,fhi */
+ "tx_channel" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_QUIESCE" , 0, 46, 46, /* name,aux,lo,hi */
+ "t_flags" , 14, 14, /* faka,flo,fhi */
+ "tx_quiesce" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_QUIESCE" , 0, 47, 47, /* name,aux,lo,hi */
+ "t_flags" , 15, 15, /* faka,flo,fhi */
+ "rx_quiesce" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_PACE_AUTO" , 0, 48, 48, /* name,aux,lo,hi */
+ "t_flags" , 16, 16, /* faka,flo,fhi */
+ "tx_pace_auto" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_PACE_FIXED" , 0, 49, 49, /* name,aux,lo,hi */
+ "t_flags" , 17, 17, /* faka,flo,fhi */
+ "tx_pace_fixed" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_QUEUE" , 0, 50, 52, /* name,aux,lo,hi */
+ "t_flags" , 18, 20, /* faka,flo,fhi */
+ "tx_queue" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TURBO" , 0, 53, 53, /* name,aux,lo,hi */
+ "t_flags" , 21, 21, /* faka,flo,fhi */
+ "turbo" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_SEL0" , 0, 54, 54, /* name,aux,lo,hi */
+ "t_flags" , 22, 22, /* faka,flo,fhi */
+ "cctrl_sel0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_SEL1" , 0, 55, 55, /* name,aux,lo,hi */
+ "t_flags" , 23, 23, /* faka,flo,fhi */
+ "cctrl_sel1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CORE_FIN" , 0, 56, 56, /* name,aux,lo,hi */
+ "t_flags" , 24, 24, /* faka,flo,fhi */
+ "core_fin" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CORE_URG" , 0, 57, 57, /* name,aux,lo,hi */
+ "t_flags" , 25, 25, /* faka,flo,fhi */
+ "core_urg" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CORE_MORE" , 0, 58, 58, /* name,aux,lo,hi */
+ "t_flags" , 26, 26, /* faka,flo,fhi */
+ "core_more" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CORE_PUSH" , 0, 59, 59, /* name,aux,lo,hi */
+ "t_flags" , 27, 27, /* faka,flo,fhi */
+ "core_push" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CORE_FLUSH" , 0, 60, 60, /* name,aux,lo,hi */
+ "t_flags" , 28, 28, /* faka,flo,fhi */
+ "core_flush" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RCV_COALESCE_ENABLE" , 0, 61, 61, /* name,aux,lo,hi */
+ "t_flags" , 29, 29, /* faka,flo,fhi */
+ "rcv_coalesce_enable" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RCV_COALESCE_PUSH" , 0, 62, 62, /* name,aux,lo,hi */
+ "t_flags" , 30, 30, /* faka,flo,fhi */
+ "rcv_coalesce_push" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RCV_COALESCE_LAST_PSH" , 0, 63, 63, /* name,aux,lo,hi */
+ "t_flags" , 31, 31, /* faka,flo,fhi */
+ "rcv_coalesce_last_psh" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RCV_COALESCE_HEARTBEAT" , 0, 64, 64, /* name,aux,lo,hi */
+ "t_flags" , 32, 32, /* faka,flo,fhi */
+ "rcv_coalesce_heartbeat" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_INIT" , 0, 65, 65, /* name,aux,lo,hi */
+ "t_flags" , 33, 33, /* faka,flo,fhi */
+ "init" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_ACTIVE_OPEN" , 0, 66, 66, /* name,aux,lo,hi */
+ "t_flags" , 34, 34, /* faka,flo,fhi */
+ "active_open" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_ASK_MODE" , 0, 67, 67, /* name,aux,lo,hi */
+ "t_flags" , 35, 35, /* faka,flo,fhi */
+ "ask_mode" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MOD_SCHD_REASON0" , 0, 68, 68, /* name,aux,lo,hi */
+ "t_flags" , 36, 36, /* faka,flo,fhi */
+ "mod_schd_reason0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MOD_SCHD_REASON1" , 0, 69, 69, /* name,aux,lo,hi */
+ "t_flags" , 37, 37, /* faka,flo,fhi */
+ "mod_schd_reason1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MOD_SCHD_REASON2" , 0, 70, 70, /* name,aux,lo,hi */
+ "t_flags" , 38, 38, /* faka,flo,fhi */
+ "mod_schd_reason2" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MOD_SCHD_TX" , 0, 71, 71, /* name,aux,lo,hi */
+ "t_flags" , 39, 39, /* faka,flo,fhi */
+ "mod_schd_tx" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MOD_SCHD_RX" , 0, 72, 72, /* name,aux,lo,hi */
+ "t_flags" , 40, 40, /* faka,flo,fhi */
+ "mod_schd_rx" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TIMER" , 0, 73, 73, /* name,aux,lo,hi */
+ "t_flags" , 41, 41, /* faka,flo,fhi */
+ "timer" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DACK_TIMER" , 0, 74, 74, /* name,aux,lo,hi */
+ "t_flags" , 42, 42, /* faka,flo,fhi */
+ "dack_timer" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_PEER_FIN" , 0, 75, 75, /* name,aux,lo,hi */
+ "t_flags" , 43, 43, /* faka,flo,fhi */
+ "peer_fin" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_COMPACT" , 0, 76, 76, /* name,aux,lo,hi */
+ "t_flags" , 44, 44, /* faka,flo,fhi */
+ "tx_compact" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_COMPACT" , 0, 77, 77, /* name,aux,lo,hi */
+ "t_flags" , 45, 45, /* faka,flo,fhi */
+ "rx_compact" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RDMA_ERROR" , 0, 78, 78, /* name,aux,lo,hi */
+ "t_flags" , 46, 46, /* faka,flo,fhi */
+ "rdma_error" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RDMA_FLM_ERROR" , 0, 79, 79, /* name,aux,lo,hi */
+ "t_flags" , 47, 47, /* faka,flo,fhi */
+ "rdma_flm_error" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_PDU_OUT" , 0, 80, 80, /* name,aux,lo,hi */
+ "t_flags" , 48, 48, /* faka,flo,fhi */
+ "tx_pdu_out" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_PDU_OUT" , 0, 81, 81, /* name,aux,lo,hi */
+ "t_flags" , 49, 49, /* faka,flo,fhi */
+ "rx_pdu_out" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DUPACK_COUNT_ODD" , 0, 82, 82, /* name,aux,lo,hi */
+ "t_flags" , 50, 50, /* faka,flo,fhi */
+ "dupack_count_odd" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_FAST_RECOVERY" , 0, 83, 83, /* name,aux,lo,hi */
+ "t_flags" , 51, 51, /* faka,flo,fhi */
+ "fast_recovery" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RECV_SCALE" , 0, 84, 84, /* name,aux,lo,hi */
+ "t_flags" , 52, 52, /* faka,flo,fhi */
+ "recv_scale" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RECV_TSTMP" , 0, 85, 85, /* name,aux,lo,hi */
+ "t_flags" , 53, 53, /* faka,flo,fhi */
+ "recv_tstmp" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RECV_SACK" , 0, 86, 86, /* name,aux,lo,hi */
+ "t_flags" , 54, 54, /* faka,flo,fhi */
+ "recv_sack" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_PEND_CTL0" , 0, 87, 87, /* name,aux,lo,hi */
+ "t_flags" , 55, 55, /* faka,flo,fhi */
+ "pend_ctl0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_PEND_CTL1" , 0, 88, 88, /* name,aux,lo,hi */
+ "t_flags" , 56, 56, /* faka,flo,fhi */
+ "pend_ctl1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_PEND_CTL2" , 0, 89, 89, /* name,aux,lo,hi */
+ "t_flags" , 57, 57, /* faka,flo,fhi */
+ "pend_ctl2" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_IP_VERSION" , 0, 90, 90, /* name,aux,lo,hi */
+ "t_flags" , 58, 58, /* faka,flo,fhi */
+ "ip_version" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_ECN" , 0, 91, 91, /* name,aux,lo,hi */
+ "t_flags" , 59, 59, /* faka,flo,fhi */
+ "cctrl_ecn" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_ECE" , 0, 92, 92, /* name,aux,lo,hi */
+ "t_flags" , 60, 60, /* faka,flo,fhi */
+ "cctrl_ece" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_CWR" , 0, 93, 93, /* name,aux,lo,hi */
+ "t_flags" , 61, 61, /* faka,flo,fhi */
+ "cctrl_cwr" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_RFR" , 0, 94, 94, /* name,aux,lo,hi */
+ "t_flags" , 62, 62, /* faka,flo,fhi */
+ "cctrl_rfr" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_UNUSED" , 0, 95, 95, /* name,aux,lo,hi */
+ "t_flags" , 63, 63, /* faka,flo,fhi */
+ "unused" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rss_info" , 0, 96, 105, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rss_info" , /* aka */
+ COMP_NONE , /* comp */
+ "RSS field", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tos" , 0, 106, 111, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tos" , /* aka */
+ COMP_NONE , /* comp */
+ "TOS field for IP header", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_state" , 0, 112, 115, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_state" , /* aka */
+ COMP_NONE , /* comp */
+ "Connection TCP state (see TCP state table)", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"max_rt" , 0, 116, 119, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "max_rt" , /* aka */
+ COMP_NONE , /* comp */
+ "Maximum re-transmissions", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_maxseg" , 0, 120, 123, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_maxseg" , /* aka */
+ COMP_NONE , /* comp */
+ "MTU table index", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"snd_scale" , 0, 124, 127, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_scale" , /* aka */
+ COMP_NONE , /* comp */
+ "Scaling for receive window (0-14). Note: this is reverse of common definition.", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rcv_scale" , 0, 128, 131, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rcv_scale" , /* aka */
+ COMP_NONE , /* comp */
+ "Scaling for send window (0-14). Note: this is reverse of common definition.", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_rxtshift" , 0, 132, 135, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_rxtshift" , /* aka */
+ COMP_NONE , /* comp */
+ "Retransmit exponential backoff", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_dupacks" , 0, 136, 139, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_dupacks" , /* aka */
+ COMP_NONE , /* comp */
+ "Number of duplicate ACKs received", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"timestamp_offset" , 0, 140, 143, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "timestamp_offset" , /* aka */
+ COMP_NONE , /* comp */
+ "Timestamp offset from running clock", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rcv_adv" , 0, 144, 159, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rcv_adv" , /* aka */
+ COMP_NONE , /* comp */
+ "Peer advertised window", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"timestamp" , 0, 160, 191, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "timestamp" , /* aka */
+ COMP_NONE , /* comp */
+ "Timer accounting field", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_rtt_ts_recent_age" , 0, 192, 223, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_rtt_ts_recent_age" , /* aka */
+ COMP_NONE , /* comp */
+ "Round-trip time; timestamps: ts_recent_age", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_rtseq_recent" , 0, 224, 255, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_rtseq_recent" , /* aka */
+ COMP_NONE , /* comp */
+ "Sequence number being timed t_rtseq; timestamps t_recent", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_srtt" , 0, 256, 271, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_srtt" , /* aka */
+ COMP_NONE , /* comp */
+ "Smoothed round-trip time", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_rttvar" , 0, 272, 287, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_rttvar" , /* aka */
+ COMP_NONE , /* comp */
+ "Variance in round-trip time", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_max" , 0, 288, 319, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_max" , /* aka */
+ COMP_NONE , /* comp */
+ "Highest sequence number in transmit buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"snd_una_raw" , 0, 320, 347, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_una" , /* aka */
+ COMP_TX_MAX , /* comp */
+ "Offset of snd_una from tx_max", /*desc*/
+ "Send unacknowledged", /*akadesc */
+ },
+ {"snd_nxt_raw" , 0, 348, 375, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_nxt" , /* aka */
+ COMP_TX_MAX , /* comp */
+ "Offset of snd_nxt from tx_max", /*desc*/
+ "Send next", /*akadesc */
+ },
+ {"snd_max_raw" , 0, 376, 403, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_max" , /* aka */
+ COMP_TX_MAX , /* comp */
+ "Offset of snd_max from tx_max", /*desc*/
+ "Highest sequence number sent", /*akadesc */
+ },
+ {"snd_rec_raw" , 0, 404, 431, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_rec" , /* aka */
+ COMP_TX_MAX , /* comp */
+ "Offset of NewReno fast recovery end sequence from tx_max", /*desc*/
+ "NewReno fast recovery end sequence number", /*akadesc */
+ },
+ {"snd_cwnd" , 0, 432, 459, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_cwnd" , /* aka */
+ COMP_NONE , /* comp */
+ "Congestion-control window", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"snd_ssthresh" , 0, 460, 487, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_ssthresh" , /* aka */
+ COMP_NONE , /* comp */
+ "Slow Start threshold", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_hdr_ptr_raw" , 0, 488, 504, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_hdr_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for first byte in send buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_last_ptr_raw" , 0, 505, 521, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_last_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for last byte in send buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rcv_nxt" , 0, 522, 553, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rcv_nxt" , /* aka */
+ COMP_NONE , /* comp */
+ "TCP receive next", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rcv_wnd" , 0, 554, 581, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rcv_wnd" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive credits (advertised to peer in receive window)", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_hdr_offset" , 0, 582, 609, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_hdr_offset" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive in-order buffered data", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"ts_last_ack_sent_raw" , 0, 610, 637, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "ts_last_ack_sent" , /* aka */
+ COMP_RCV_NXT , /* comp */
+ "Offset of highest sequence acked from rcv_nxt", /*desc*/
+ "Highest sequence number acked", /*akadesc */
+ },
+ {"rx_frag0_start_idx_raw" , 0, 638, 665, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag0_start_idx" , /* aka */
+ COMP_RCV_NXT , /* comp */
+ "Offset of receive fragment 0 start sequence from rcv_nxt", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag1_start_idx_offset" , 0, 666, 693, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag1_start_idx_offset" , /* aka */
+ COMP_RCV_NXT , /* comp */
+ "Offset of receive fragment 1 start sequence from rcv_nxt", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag0_len" , 0, 694, 721, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag0_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive re-order fragment 0 length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag1_len" , 0, 722, 749, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag1_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive re-order fragment 1 length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"pdu_len" , 0, 750, 765, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "pdu_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive recovered PDU length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ptr_raw" , 0, 766, 782, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for in-order receive buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag1_ptr_raw" , 0, 783, 799, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag1_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for out-of-order receive buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"main_slush" , 0, 800, 831, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "main_slush" , /* aka */
+ COMP_NONE , /* comp */
+ "Reserved", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"aux1_slush0" , 1, 832, 846, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "aux1_slush0" , /* aka */
+ COMP_NONE , /* comp */
+ "Reserved", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag2_start_idx_offset_raw", 1, 847, 874, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag2_start_idx_offset" , /* aka */
+ COMP_RCV_NXT , /* comp */
+ "Offset of receive fragment 2 start sequence from rcv_nxt", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag2_ptr_raw" , 1, 875, 891, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag2_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for out-of-order receive buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag2_len_raw" , 1, 892, 919, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag2_len" , /* aka */
+ COMP_LEN , /* comp */
+ "Receive re-order fragment 2 length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag3_ptr_raw" , 1, 920, 936, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag3_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for out-of-order receive buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag3_len_raw" , 1, 937, 964, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag3_len" , /* aka */
+ COMP_LEN , /* comp */
+ "Receive re-order fragment 3 length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag3_start_idx_offset_raw", 1, 965, 992, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag3_start_idx_offset" , /* aka */
+ COMP_RCV_NXT , /* comp */
+ "Offset of receive fragment 3 start sequence from rcv_nxt", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"pdu_hdr_len" , 1, 993, 1000, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "pdu_hdr_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive recovered PDU header length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"aux1_slush1" , 1, 1001, 1023, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "aux1_slush1" , /* aka */
+ COMP_NONE , /* comp */
+ "Reserved", /*desc*/
+ NULL, /*akadesc */
+ },
+
+ {"irs_ulp" , 2, 832, 840, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "irs_ulp" , /* aka */
+ COMP_NONE , /* comp */
+ "IRS modulo marker_interval when enterring iWARP mode", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"iss_ulp" , 2, 841, 849, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "iss_ulp" , /* aka */
+ COMP_NONE , /* comp */
+ "ISS modulo marker_interval when entering iWARP mode", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_pdu_len" , 2, 850, 863, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_pdu_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Length of Tx FPDU", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"cq_idx_sq" , 2, 864, 879, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "cq_idx_sq" , /* aka */
+ COMP_NONE , /* comp */
+ "CQ index of CQ for SQ", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"cq_idx_rq" , 2, 880, 895, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "cq_idx_rq" , /* aka */
+ COMP_NONE , /* comp */
+ "CQ index of CQ for RQ", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"qp_id" , 2, 896, 911, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "qp_id" , /* aka */
+ COMP_NONE , /* comp */
+ "QP index", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"pd_id" , 2, 912, 927, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "pd_id" , /* aka */
+ COMP_NONE , /* comp */
+ "PD index", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"STAG" , 2, 928, 959, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "stag" , /* aka */
+ COMP_NONE , /* comp */
+ "PDU response STAG", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rq_start" , 2, 960, 985, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rq_start" , /* aka */
+ COMP_NONE , /* comp */
+ "DW aligned starting addres of RQ", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rq_MSN" , 2, 986, 998, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rq_msn" , /* aka */
+ COMP_NONE , /* comp */
+ "Current MSN (modulo 8K, further check in ULP_RX)", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rq_max_offset" , 2, 999, 1002, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rq_max_offset" , /* aka */
+ COMP_NONE , /* comp */
+ "Log size RQ (the size in hardware is rounded up to a power of 2)", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rq_write_ptr" , 2, 1003, 1015, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rq_write_ptr" , /* aka */
+ COMP_NONE , /* comp */
+ "Host RQ write pointer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"RDMAP_opcode" , 2, 1016, 1019, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rdmap_opcode" , /* aka */
+ COMP_NONE , /* comp */
+ "Current FPDU command", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"ord_L_bit_vld" , 2, 1020, 1020, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "ord_l_bit_vld" , /* aka */
+ COMP_NONE , /* comp */
+ "Current FPDU has L-bit set", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_flush" , 2, 1021, 1021, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_flush" , /* aka */
+ COMP_NONE , /* comp */
+ "1 = flush CPL_TX_DATA", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_oos_rxmt" , 2, 1022, 1022, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_oos_rxmt" , /* aka */
+ COMP_NONE , /* comp */
+ "Retransmit is out of FPDU sync", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_oos_txmt" , 2, 1023, 1023, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_oos_txmt" , /* aka */
+ COMP_NONE , /* comp */
+ "Transmit is out of FPDU sync, or disable aligned transmission", /*desc*/
+ NULL, /*akadesc */
+ },
+
+ {"rx_ddp_buf0_offset" , 3, 832, 855, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf0_offset" , /* aka */
+ COMP_NONE , /* comp */
+ "Current offset into DDP buffer 0", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ddp_buf0_len" , 3, 856, 879, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf0_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Length of DDP buffer 0", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_INDICATE_OUT" , 3, 880, 880, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 0, 0, /* faka,flo,fhi */
+ "ddp_indicate_out" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_ACTIVE_BUF" , 3, 881, 881, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 1, 1, /* faka,flo,fhi */
+ "ddp_active_buf" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_OFF" , 3, 882, 882, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 2, 2, /* faka,flo,fhi */
+ "ddp_off" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_WAIT_FRAG" , 3, 883, 883, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 3, 3, /* faka,flo,fhi */
+ "ddp_wait_frag" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF_INF" , 3, 884, 884, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 4, 4, /* faka,flo,fhi */
+ "ddp_buf_inf" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_RX2TX" , 3, 885, 885, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 5, 5, /* faka,flo,fhi */
+ "ddp_rx2tx" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_MAIN_UNUSED" , 3, 886, 887, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 6, 7, /* faka,flo,fhi */
+ "ddp_main_unused" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF0_VALID" , 3, 888, 888, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 8, 8, /* faka,flo,fhi */
+ "ddp_buf0_valid" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF0_INDICATE" , 3, 889, 889, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 9, 9, /* faka,flo,fhi */
+ "ddp_buf0_indicate" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF0_FLUSH" , 3, 890, 890, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 10, 10, /* faka,flo,fhi */
+ "ddp_buf0_flush" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PSHF_ENABLE_0" , 3, 891, 891, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 11, 11, /* faka,flo,fhi */
+ "ddp_pshf_enable_0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PUSH_DISABLE_0" , 3, 892, 892, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 12, 12, /* faka,flo,fhi */
+ "ddp_push_disable_0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PSH_NO_INVALIDATE0" , 3, 893, 893, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 13, 13, /* faka,flo,fhi */
+ "ddp_psh_no_invalidate0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF0_UNUSED" , 3, 894, 895, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 14, 15, /* faka,flo,fhi */
+ "ddp_buf0_unused" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF1_VALID" , 3, 896, 896, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 16, 16, /* faka,flo,fhi */
+ "ddp_buf1_valid" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF1_INDICATE" , 3, 897, 897, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 17, 17, /* faka,flo,fhi */
+ "ddp_buf1_indicate" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF1_FLUSH" , 3, 898, 898, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 18, 18, /* faka,flo,fhi */
+ "ddp_buf1_flush" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PSHF_ENABLE_1" , 3, 899, 899, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 19, 19, /* faka,flo,fhi */
+ "ddp_pshf_enable_1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PUSH_DISABLE_1" , 3, 900, 900, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 20, 20, /* faka,flo,fhi */
+ "ddp_push_disable_1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PSH_NO_INVALIDATE1" , 3, 901, 901, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 21, 21, /* faka,flo,fhi */
+ "ddp_psh_no_invalidate1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF1_UNUSED" , 3, 902, 903, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 22, 23, /* faka,flo,fhi */
+ "ddp_buf1_unused" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ddp_buf1_offset" , 3, 904, 927, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf1_offset" , /* aka */
+ COMP_NONE , /* comp */
+ "Current offset into DDP buffer 1", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ddp_buf1_len" , 3, 928, 951, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf1_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Length of DDP buffer 1", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"aux3_slush" , 3, 952, 959, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "aux3_slush" , /* aka */
+ COMP_NONE , /* comp */
+ "Reserved", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ddp_buf0_tag" , 3, 960, 991, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf0_tag" , /* aka */
+ COMP_NONE , /* comp */
+ "Tag for DDP buffer 0", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ddp_buf1_tag" , 3, 992, 1023, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf1_tag" , /* aka */
+ COMP_NONE , /* comp */
+ "Tag for DDP buffer 1", /*desc*/
+ NULL, /*akadesc */
+ },
+ {NULL,0,0,0, NULL,0,0, NULL, 0, NULL, NULL}, /*terminator*/
+};
+
+/* ====================================================== */
+_TCBVAR g_scb_info4[]={
+ {"OPT_1_RSS_INFO" , 0, 0, 11, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_RSS_INFO" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_1_LISTEN_INTERFACE" , 0, 12, 19, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_LISTEN_INTERFACE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_1_LISTEN_FILTER" , 0, 20, 20, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_LISTEN_FILTER" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_1_SYN_DEFENSE" , 0, 21, 21, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_SYN_DEFENSE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_1_CONNECTION_POLICY" , 0, 22, 23, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_CONNECTION_POLICY" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_1_FLT_INFO" , 0, 28, 63, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_FLT_INFO" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_ACCEPT_MODE" , 0, 64, 65, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_ACCEPT_MODE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_TX_CHANNEL" , 0, 66, 67, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_TX_CHANNEL" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_NO_CONGESTION_CONTROL" , 0, 68, 68, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_NO_CONGESTION_CONTROL" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_DELAYED_ACK" , 0, 69, 69, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_DELAYED_ACK" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_INJECT_TIMER" , 0, 70, 70, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_INJECT_TIMER" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_NON_OFFLOAD" , 0, 71, 71, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_NON_OFFLOAD" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_ULP_MODE" , 0, 72, 75, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_ULP_MODE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_MAX_RCV_BUFFER" , 0, 76, 85, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_MAX_RCV_BUFFER" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_TOS" , 0, 86, 91, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_TOS" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_SM_SEL" , 0, 92, 99, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_SM_SEL" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_L2T_IX" , 0, 100, 111, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_L2T_IX" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_TCAM_BYPASS" , 0, 112, 112, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_TCAM_BYPASS" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_NAGLE" , 0, 113, 113, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_NAGLE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_WSF" , 0, 114, 117, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_WSF" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_KEEPALIVE" , 0, 118, 118, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_KEEPALIVE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_CONN_MAXRT" , 0, 119, 122, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_CONN_MAXRT" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_MAXRT_OVERRIDE" , 0, 123, 123, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_MAXRT_OVERRIDE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_MAX_SEG" , 0, 124, 127, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_MAX_SEG" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"scb_slush" , 0, 128, 1023, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "scb_slush" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {NULL,0,0,0, NULL,0,0, NULL, 0, NULL, NULL}, /*terminator*/
+};
+
+/* ====================================================== */
+_TCBVAR g_fcb_info4[]={
+ {"filter" , 0, 33, 33, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "filter" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Report_TID" , 0, 53, 53, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Report_TID" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Drop" , 0, 54, 54, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Drop" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Direct_Steer" , 0, 55, 55, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Direct_Steer" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Mask_Hash" , 0, 48, 48, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Mask_Hash" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Direct_Steer_Hash" , 0, 49, 49, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Direct_Steer_Hash" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Loopback" , 0, 91, 91, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Loopback" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Loopback_TX_Channel" , 0, 44, 45, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Loopback_TX_Channel" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Rewrite_DMAC" , 0, 92, 92, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Rewrite_DMAC" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Rewrite_SMAC" , 0, 93, 93, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Rewrite_SMAC" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Insert_VLAN" , 0, 94, 94, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Insert_VLAN" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Remove_VLAN" , 0, 39, 39, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Remove_VLAN" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Count_Hits" , 0, 36, 36, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Count_Hits" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Hits_high" , 0, 224, 255, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Hits_high" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Hits_low" , 0, 192, 223, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Hits_low" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {NULL,0,0,0, NULL,0,0, NULL, 0, NULL, NULL}, /*terminator*/
+};
+
diff --git a/usr.sbin/cxgbetool/tcbinfot5.c b/usr.sbin/cxgbetool/tcbinfot5.c
new file mode 100644
index 000000000000..b4baa31a82e2
--- /dev/null
+++ b/usr.sbin/cxgbetool/tcbinfot5.c
@@ -0,0 +1,1465 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2018 Chelsio Communications, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/* Auto-generated file. Avoid direct editing. */
+/* Edits will be lost when file regenerated. */
+#include <stdio.h>
+#include "tcb_common.h"
+_TCBVAR g_tcb_info5[]={
+ {"ulp_type" , 0, 0, 3, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "ulp_type" , /* aka */
+ COMP_NONE , /* comp */
+ "ULP mode: 0 =toe, 2=iscsi, 4=rdma, 5=ddp, 6=fcoe, 7=user, remaining values reserved", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"ulp_raw" , 0, 4, 11, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "ulp" , /* aka */
+ COMP_ULP , /* comp */
+ "ULP subtype", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"l2t_ix" , 0, 12, 23, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "l2t_ix" , /* aka */
+ COMP_NONE , /* comp */
+ "Destination MAC address index", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"smac_sel" , 0, 24, 31, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "smac_sel" , /* aka */
+ COMP_NONE , /* comp */
+ "Source MAC address index", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MIGRATING" , 0, 32, 32, /* name,aux,lo,hi */
+ "t_flags" , 0, 0, /* faka,flo,fhi */
+ "migrating" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_NON_OFFLOAD" , 0, 33, 33, /* name,aux,lo,hi */
+ "t_flags" , 1, 1, /* faka,flo,fhi */
+ "non_offload" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_LOCK_TID" , 0, 34, 34, /* name,aux,lo,hi */
+ "t_flags" , 2, 2, /* faka,flo,fhi */
+ "lock_tid" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_KEEPALIVE" , 0, 35, 35, /* name,aux,lo,hi */
+ "t_flags" , 3, 3, /* faka,flo,fhi */
+ "keepalive" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DACK" , 0, 36, 36, /* name,aux,lo,hi */
+ "t_flags" , 4, 4, /* faka,flo,fhi */
+ "dack" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DACK_MSS" , 0, 37, 37, /* name,aux,lo,hi */
+ "t_flags" , 5, 5, /* faka,flo,fhi */
+ "dack_mss" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DACK_NOT_ACKED" , 0, 38, 38, /* name,aux,lo,hi */
+ "t_flags" , 6, 6, /* faka,flo,fhi */
+ "dack_not_acked" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_NAGLE" , 0, 39, 39, /* name,aux,lo,hi */
+ "t_flags" , 7, 7, /* faka,flo,fhi */
+ "nagle" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_SSWS_DISABLED" , 0, 40, 40, /* name,aux,lo,hi */
+ "t_flags" , 8, 8, /* faka,flo,fhi */
+ "ssws_disabled" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_FLOW_CONTROL_DDP" , 0, 41, 41, /* name,aux,lo,hi */
+ "t_flags" , 9, 9, /* faka,flo,fhi */
+ "rx_flow_control_ddp" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_FLOW_CONTROL_DISABLE" , 0, 42, 42, /* name,aux,lo,hi */
+ "t_flags" , 10, 10, /* faka,flo,fhi */
+ "rx_flow_control_disable" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_CHANNEL" , 0, 43, 43, /* name,aux,lo,hi */
+ "t_flags" , 11, 11, /* faka,flo,fhi */
+ "rx_channel" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_CHANNEL" , 0, 44, 45, /* name,aux,lo,hi */
+ "t_flags" , 12, 13, /* faka,flo,fhi */
+ "tx_channel" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_QUIESCE" , 0, 46, 46, /* name,aux,lo,hi */
+ "t_flags" , 14, 14, /* faka,flo,fhi */
+ "tx_quiesce" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_QUIESCE" , 0, 47, 47, /* name,aux,lo,hi */
+ "t_flags" , 15, 15, /* faka,flo,fhi */
+ "rx_quiesce" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_PACE_AUTO" , 0, 48, 48, /* name,aux,lo,hi */
+ "t_flags" , 16, 16, /* faka,flo,fhi */
+ "tx_pace_auto" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_PACE_FIXED" , 0, 49, 49, /* name,aux,lo,hi */
+ "t_flags" , 17, 17, /* faka,flo,fhi */
+ "tx_pace_fixed" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_QUEUE" , 0, 50, 52, /* name,aux,lo,hi */
+ "t_flags" , 18, 20, /* faka,flo,fhi */
+ "tx_queue" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TURBO" , 0, 53, 53, /* name,aux,lo,hi */
+ "t_flags" , 21, 21, /* faka,flo,fhi */
+ "turbo" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_SEL0" , 0, 54, 54, /* name,aux,lo,hi */
+ "t_flags" , 22, 22, /* faka,flo,fhi */
+ "cctrl_sel0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_SEL1" , 0, 55, 55, /* name,aux,lo,hi */
+ "t_flags" , 23, 23, /* faka,flo,fhi */
+ "cctrl_sel1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CORE_FIN" , 0, 56, 56, /* name,aux,lo,hi */
+ "t_flags" , 24, 24, /* faka,flo,fhi */
+ "core_fin" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CORE_URG" , 0, 57, 57, /* name,aux,lo,hi */
+ "t_flags" , 25, 25, /* faka,flo,fhi */
+ "core_urg" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CORE_MORE" , 0, 58, 58, /* name,aux,lo,hi */
+ "t_flags" , 26, 26, /* faka,flo,fhi */
+ "core_more" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CORE_PUSH" , 0, 59, 59, /* name,aux,lo,hi */
+ "t_flags" , 27, 27, /* faka,flo,fhi */
+ "core_push" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CORE_FLUSH" , 0, 60, 60, /* name,aux,lo,hi */
+ "t_flags" , 28, 28, /* faka,flo,fhi */
+ "core_flush" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RCV_COALESCE_ENABLE" , 0, 61, 61, /* name,aux,lo,hi */
+ "t_flags" , 29, 29, /* faka,flo,fhi */
+ "rcv_coalesce_enable" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RCV_COALESCE_PUSH" , 0, 62, 62, /* name,aux,lo,hi */
+ "t_flags" , 30, 30, /* faka,flo,fhi */
+ "rcv_coalesce_push" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RCV_COALESCE_LAST_PSH" , 0, 63, 63, /* name,aux,lo,hi */
+ "t_flags" , 31, 31, /* faka,flo,fhi */
+ "rcv_coalesce_last_psh" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RCV_COALESCE_HEARTBEAT" , 0, 64, 64, /* name,aux,lo,hi */
+ "t_flags" , 32, 32, /* faka,flo,fhi */
+ "rcv_coalesce_heartbeat" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RSS_FW" , 0, 65, 65, /* name,aux,lo,hi */
+ "t_flags" , 33, 33, /* faka,flo,fhi */
+ "rss_fw" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_ACTIVE_OPEN" , 0, 66, 66, /* name,aux,lo,hi */
+ "t_flags" , 34, 34, /* faka,flo,fhi */
+ "active_open" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_ASK_MODE" , 0, 67, 67, /* name,aux,lo,hi */
+ "t_flags" , 35, 35, /* faka,flo,fhi */
+ "ask_mode" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MOD_SCHD_REASON0" , 0, 68, 68, /* name,aux,lo,hi */
+ "t_flags" , 36, 36, /* faka,flo,fhi */
+ "mod_schd_reason0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MOD_SCHD_REASON1" , 0, 69, 69, /* name,aux,lo,hi */
+ "t_flags" , 37, 37, /* faka,flo,fhi */
+ "mod_schd_reason1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MOD_SCHD_REASON2" , 0, 70, 70, /* name,aux,lo,hi */
+ "t_flags" , 38, 38, /* faka,flo,fhi */
+ "mod_schd_reason2" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MOD_SCHD_TX" , 0, 71, 71, /* name,aux,lo,hi */
+ "t_flags" , 39, 39, /* faka,flo,fhi */
+ "mod_schd_tx" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MOD_SCHD_RX" , 0, 72, 72, /* name,aux,lo,hi */
+ "t_flags" , 40, 40, /* faka,flo,fhi */
+ "mod_schd_rx" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TIMER" , 0, 73, 73, /* name,aux,lo,hi */
+ "t_flags" , 41, 41, /* faka,flo,fhi */
+ "timer" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DACK_TIMER" , 0, 74, 74, /* name,aux,lo,hi */
+ "t_flags" , 42, 42, /* faka,flo,fhi */
+ "dack_timer" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_PEER_FIN" , 0, 75, 75, /* name,aux,lo,hi */
+ "t_flags" , 43, 43, /* faka,flo,fhi */
+ "peer_fin" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_COMPACT" , 0, 76, 76, /* name,aux,lo,hi */
+ "t_flags" , 44, 44, /* faka,flo,fhi */
+ "tx_compact" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_COMPACT" , 0, 77, 77, /* name,aux,lo,hi */
+ "t_flags" , 45, 45, /* faka,flo,fhi */
+ "rx_compact" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RDMA_ERROR" , 0, 78, 78, /* name,aux,lo,hi */
+ "t_flags" , 46, 46, /* faka,flo,fhi */
+ "rdma_error" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RDMA_FLM_ERROR" , 0, 79, 79, /* name,aux,lo,hi */
+ "t_flags" , 47, 47, /* faka,flo,fhi */
+ "rdma_flm_error" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_PDU_OUT" , 0, 80, 80, /* name,aux,lo,hi */
+ "t_flags" , 48, 48, /* faka,flo,fhi */
+ "tx_pdu_out" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_PDU_OUT" , 0, 81, 81, /* name,aux,lo,hi */
+ "t_flags" , 49, 49, /* faka,flo,fhi */
+ "rx_pdu_out" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DUPACK_COUNT_ODD" , 0, 82, 82, /* name,aux,lo,hi */
+ "t_flags" , 50, 50, /* faka,flo,fhi */
+ "dupack_count_odd" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_FAST_RECOVERY" , 0, 83, 83, /* name,aux,lo,hi */
+ "t_flags" , 51, 51, /* faka,flo,fhi */
+ "fast_recovery" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RECV_SCALE" , 0, 84, 84, /* name,aux,lo,hi */
+ "t_flags" , 52, 52, /* faka,flo,fhi */
+ "recv_scale" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RECV_TSTMP" , 0, 85, 85, /* name,aux,lo,hi */
+ "t_flags" , 53, 53, /* faka,flo,fhi */
+ "recv_tstmp" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RECV_SACK" , 0, 86, 86, /* name,aux,lo,hi */
+ "t_flags" , 54, 54, /* faka,flo,fhi */
+ "recv_sack" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_PEND_CTL0" , 0, 87, 87, /* name,aux,lo,hi */
+ "t_flags" , 55, 55, /* faka,flo,fhi */
+ "pend_ctl0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_PEND_CTL1" , 0, 88, 88, /* name,aux,lo,hi */
+ "t_flags" , 56, 56, /* faka,flo,fhi */
+ "pend_ctl1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_PEND_CTL2" , 0, 89, 89, /* name,aux,lo,hi */
+ "t_flags" , 57, 57, /* faka,flo,fhi */
+ "pend_ctl2" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_IP_VERSION" , 0, 90, 90, /* name,aux,lo,hi */
+ "t_flags" , 58, 58, /* faka,flo,fhi */
+ "ip_version" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_ECN" , 0, 91, 91, /* name,aux,lo,hi */
+ "t_flags" , 59, 59, /* faka,flo,fhi */
+ "cctrl_ecn" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_ECE" , 0, 92, 92, /* name,aux,lo,hi */
+ "t_flags" , 60, 60, /* faka,flo,fhi */
+ "cctrl_ece" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_CWR" , 0, 93, 93, /* name,aux,lo,hi */
+ "t_flags" , 61, 61, /* faka,flo,fhi */
+ "cctrl_cwr" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_RFR" , 0, 94, 94, /* name,aux,lo,hi */
+ "t_flags" , 62, 62, /* faka,flo,fhi */
+ "cctrl_rfr" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_UNUSED" , 0, 95, 95, /* name,aux,lo,hi */
+ "t_flags" , 63, 63, /* faka,flo,fhi */
+ "unused" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rss_info" , 0, 96, 105, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rss_info" , /* aka */
+ COMP_NONE , /* comp */
+ "RSS field", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tos" , 0, 106, 111, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tos" , /* aka */
+ COMP_NONE , /* comp */
+ "TOS field for IP header", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_state" , 0, 112, 115, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_state" , /* aka */
+ COMP_NONE , /* comp */
+ "Connection TCP state (see TCP state table)", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"max_rt" , 0, 116, 119, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "max_rt" , /* aka */
+ COMP_NONE , /* comp */
+ "Maximum re-transmissions", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_maxseg" , 0, 120, 123, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_maxseg" , /* aka */
+ COMP_NONE , /* comp */
+ "MTU table index", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"snd_scale" , 0, 124, 127, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_scale" , /* aka */
+ COMP_NONE , /* comp */
+ "Scaling for receive window (0-14). Note: this is reverse of common definition.", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rcv_scale" , 0, 128, 131, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rcv_scale" , /* aka */
+ COMP_NONE , /* comp */
+ "Scaling for send window (0-14). Note: this is reverse of common definition.", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_rxtshift" , 0, 132, 135, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_rxtshift" , /* aka */
+ COMP_NONE , /* comp */
+ "Retransmit exponential backoff", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_dupacks" , 0, 136, 139, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_dupacks" , /* aka */
+ COMP_NONE , /* comp */
+ "Number of duplicate ACKs received", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"timestamp_offset" , 0, 140, 143, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "timestamp_offset" , /* aka */
+ COMP_NONE , /* comp */
+ "Timestamp offset from running clock", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rcv_adv" , 0, 144, 159, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rcv_adv" , /* aka */
+ COMP_NONE , /* comp */
+ "Peer advertised window", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"timestamp" , 0, 160, 191, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "timestamp" , /* aka */
+ COMP_NONE , /* comp */
+ "Timer accounting field", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_rtt_ts_recent_age" , 0, 192, 223, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_rtt_ts_recent_age" , /* aka */
+ COMP_NONE , /* comp */
+ "Round-trip time; timestamps: ts_recent_age", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_rtseq_recent" , 0, 224, 255, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_rtseq_recent" , /* aka */
+ COMP_NONE , /* comp */
+ "Sequence number being timed t_rtseq; timestamps t_recent", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_srtt" , 0, 256, 271, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_srtt" , /* aka */
+ COMP_NONE , /* comp */
+ "Smoothed round-trip time", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_rttvar" , 0, 272, 287, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_rttvar" , /* aka */
+ COMP_NONE , /* comp */
+ "Variance in round-trip time", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_max" , 0, 288, 319, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_max" , /* aka */
+ COMP_NONE , /* comp */
+ "Highest sequence number in transmit buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"snd_una_raw" , 0, 320, 347, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_una" , /* aka */
+ COMP_TX_MAX , /* comp */
+ "Offset of snd_una from tx_max", /*desc*/
+ "Send unacknowledged", /*akadesc */
+ },
+ {"snd_nxt_raw" , 0, 348, 375, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_nxt" , /* aka */
+ COMP_TX_MAX , /* comp */
+ "Offset of snd_nxt from tx_max", /*desc*/
+ "Send next", /*akadesc */
+ },
+ {"snd_max_raw" , 0, 376, 403, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_max" , /* aka */
+ COMP_TX_MAX , /* comp */
+ "Offset of snd_max from tx_max", /*desc*/
+ "Highest sequence number sent", /*akadesc */
+ },
+ {"snd_rec_raw" , 0, 404, 431, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_rec" , /* aka */
+ COMP_TX_MAX , /* comp */
+ "Offset of NewReno fast recovery end sequence from tx_max", /*desc*/
+ "NewReno fast recovery end sequence number", /*akadesc */
+ },
+ {"snd_cwnd" , 0, 432, 459, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_cwnd" , /* aka */
+ COMP_NONE , /* comp */
+ "Congestion-control window", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"snd_ssthresh" , 0, 460, 487, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_ssthresh" , /* aka */
+ COMP_NONE , /* comp */
+ "Slow Start threshold", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_hdr_ptr_raw" , 0, 488, 504, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_hdr_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for first byte in send buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_last_ptr_raw" , 0, 505, 521, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_last_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for last byte in send buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rcv_nxt" , 0, 522, 553, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rcv_nxt" , /* aka */
+ COMP_NONE , /* comp */
+ "TCP receive next", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rcv_wnd" , 0, 554, 581, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rcv_wnd" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive credits (advertised to peer in receive window)", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_hdr_offset" , 0, 582, 609, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_hdr_offset" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive in-order buffered data", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"ts_last_ack_sent_raw" , 0, 610, 637, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "ts_last_ack_sent" , /* aka */
+ COMP_RCV_NXT , /* comp */
+ "Offset of highest sequence acked from rcv_nxt", /*desc*/
+ "Highest sequence number acked", /*akadesc */
+ },
+ {"rx_frag0_start_idx_raw" , 0, 638, 665, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag0_start_idx" , /* aka */
+ COMP_RCV_NXT , /* comp */
+ "Offset of receive fragment 0 start sequence from rcv_nxt", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag1_start_idx_offset" , 0, 666, 693, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag1_start_idx_offset" , /* aka */
+ COMP_RCV_NXT , /* comp */
+ "Offset of receive fragment 1 start sequence from rcv_nxt", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag0_len" , 0, 694, 721, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag0_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive re-order fragment 0 length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag1_len" , 0, 722, 749, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag1_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive re-order fragment 1 length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"pdu_len" , 0, 750, 765, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "pdu_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive recovered PDU length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ptr_raw" , 0, 766, 782, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for in-order receive buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag1_ptr_raw" , 0, 783, 799, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag1_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for out-of-order receive buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"main_slush" , 0, 800, 831, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "main_slush" , /* aka */
+ COMP_NONE , /* comp */
+ "Reserved", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"aux1_slush0" , 1, 832, 846, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "aux1_slush0" , /* aka */
+ COMP_NONE , /* comp */
+ "Reserved", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag2_start_idx_offset_raw", 1, 847, 874, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag2_start_idx_offset" , /* aka */
+ COMP_RCV_NXT , /* comp */
+ "Offset of receive fragment 2 start sequence from rcv_nxt", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag2_ptr_raw" , 1, 875, 891, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag2_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for out-of-order receive buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag2_len_raw" , 1, 892, 919, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag2_len" , /* aka */
+ COMP_LEN , /* comp */
+ "Receive re-order fragment 2 length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag3_ptr_raw" , 1, 920, 936, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag3_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for out-of-order receive buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag3_len_raw" , 1, 937, 964, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag3_len" , /* aka */
+ COMP_LEN , /* comp */
+ "Receive re-order fragment 3 length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag3_start_idx_offset_raw", 1, 965, 992, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag3_start_idx_offset" , /* aka */
+ COMP_RCV_NXT , /* comp */
+ "Offset of receive fragment 3 start sequence from rcv_nxt", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"pdu_hdr_len" , 1, 993, 1000, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "pdu_hdr_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive recovered PDU header length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"aux1_slush1" , 1, 1001, 1019, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "aux1_slush1" , /* aka */
+ COMP_NONE , /* comp */
+ "Reserved", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"ulp_ext" , 1, 1020, 1023, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "ulp_ext" , /* aka */
+ COMP_NONE , /* comp */
+ "Extension of ulp_raw for PI configuration", /*desc*/
+ NULL, /*akadesc */
+ },
+
+ {"irs_ulp" , 2, 832, 840, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "irs_ulp" , /* aka */
+ COMP_NONE , /* comp */
+ "IRS modulo marker_interval when enterring iWARP mode", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"iss_ulp" , 2, 841, 849, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "iss_ulp" , /* aka */
+ COMP_NONE , /* comp */
+ "ISS modulo marker_interval when entering iWARP mode", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_pdu_len" , 2, 850, 863, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_pdu_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Length of Tx FPDU", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"cq_idx_sq" , 2, 864, 879, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "cq_idx_sq" , /* aka */
+ COMP_NONE , /* comp */
+ "CQ index of CQ for SQ", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"cq_idx_rq" , 2, 880, 895, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "cq_idx_rq" , /* aka */
+ COMP_NONE , /* comp */
+ "CQ index of CQ for RQ", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"qp_id" , 2, 896, 911, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "qp_id" , /* aka */
+ COMP_NONE , /* comp */
+ "QP index", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"pd_id" , 2, 912, 927, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "pd_id" , /* aka */
+ COMP_NONE , /* comp */
+ "PD index", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"STAG" , 2, 928, 959, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "stag" , /* aka */
+ COMP_NONE , /* comp */
+ "PDU response STAG", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rq_start" , 2, 960, 985, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rq_start" , /* aka */
+ COMP_NONE , /* comp */
+ "DW aligned starting addres of RQ", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rq_MSN" , 2, 986, 998, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rq_msn" , /* aka */
+ COMP_NONE , /* comp */
+ "Current MSN (modulo 8K, further check in ULP_RX)", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rq_max_offset" , 2, 999, 1002, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rq_max_offset" , /* aka */
+ COMP_NONE , /* comp */
+ "Log size RQ (the size in hardware is rounded up to a power of 2)", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rq_write_ptr" , 2, 1003, 1015, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rq_write_ptr" , /* aka */
+ COMP_NONE , /* comp */
+ "Host RQ write pointer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"RDMAP_opcode" , 2, 1016, 1019, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rdmap_opcode" , /* aka */
+ COMP_NONE , /* comp */
+ "Current FPDU command", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"ord_L_bit_vld" , 2, 1020, 1020, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "ord_l_bit_vld" , /* aka */
+ COMP_NONE , /* comp */
+ "Current FPDU has L-bit set", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_flush" , 2, 1021, 1021, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_flush" , /* aka */
+ COMP_NONE , /* comp */
+ "1 = flush CPL_TX_DATA", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_oos_rxmt" , 2, 1022, 1022, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_oos_rxmt" , /* aka */
+ COMP_NONE , /* comp */
+ "Retransmit is out of FPDU sync", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_oos_txmt" , 2, 1023, 1023, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_oos_txmt" , /* aka */
+ COMP_NONE , /* comp */
+ "Transmit is out of FPDU sync, or disable aligned transmission", /*desc*/
+ NULL, /*akadesc */
+ },
+
+ {"rx_ddp_buf0_offset" , 3, 832, 855, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf0_offset" , /* aka */
+ COMP_NONE , /* comp */
+ "Current offset into DDP buffer 0", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ddp_buf0_len" , 3, 856, 879, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf0_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Length of DDP buffer 0", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_INDICATE_OUT" , 3, 880, 880, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 0, 0, /* faka,flo,fhi */
+ "ddp_indicate_out" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_ACTIVE_BUF" , 3, 881, 881, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 1, 1, /* faka,flo,fhi */
+ "ddp_active_buf" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_OFF" , 3, 882, 882, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 2, 2, /* faka,flo,fhi */
+ "ddp_off" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_WAIT_FRAG" , 3, 883, 883, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 3, 3, /* faka,flo,fhi */
+ "ddp_wait_frag" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF_INF" , 3, 884, 884, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 4, 4, /* faka,flo,fhi */
+ "ddp_buf_inf" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_RX2TX" , 3, 885, 885, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 5, 5, /* faka,flo,fhi */
+ "ddp_rx2tx" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_MAIN_UNUSED" , 3, 886, 887, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 6, 7, /* faka,flo,fhi */
+ "ddp_main_unused" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF0_VALID" , 3, 888, 888, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 8, 8, /* faka,flo,fhi */
+ "ddp_buf0_valid" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF0_INDICATE" , 3, 889, 889, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 9, 9, /* faka,flo,fhi */
+ "ddp_buf0_indicate" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF0_FLUSH" , 3, 890, 890, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 10, 10, /* faka,flo,fhi */
+ "ddp_buf0_flush" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PSHF_ENABLE_0" , 3, 891, 891, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 11, 11, /* faka,flo,fhi */
+ "ddp_pshf_enable_0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PUSH_DISABLE_0" , 3, 892, 892, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 12, 12, /* faka,flo,fhi */
+ "ddp_push_disable_0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PSH_NO_INVALIDATE0" , 3, 893, 893, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 13, 13, /* faka,flo,fhi */
+ "ddp_psh_no_invalidate0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF0_UNUSED" , 3, 894, 895, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 14, 15, /* faka,flo,fhi */
+ "ddp_buf0_unused" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF1_VALID" , 3, 896, 896, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 16, 16, /* faka,flo,fhi */
+ "ddp_buf1_valid" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF1_INDICATE" , 3, 897, 897, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 17, 17, /* faka,flo,fhi */
+ "ddp_buf1_indicate" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF1_FLUSH" , 3, 898, 898, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 18, 18, /* faka,flo,fhi */
+ "ddp_buf1_flush" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PSHF_ENABLE_1" , 3, 899, 899, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 19, 19, /* faka,flo,fhi */
+ "ddp_pshf_enable_1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PUSH_DISABLE_1" , 3, 900, 900, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 20, 20, /* faka,flo,fhi */
+ "ddp_push_disable_1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PSH_NO_INVALIDATE1" , 3, 901, 901, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 21, 21, /* faka,flo,fhi */
+ "ddp_psh_no_invalidate1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF1_UNUSED" , 3, 902, 903, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 22, 23, /* faka,flo,fhi */
+ "ddp_buf1_unused" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ddp_buf1_offset" , 3, 904, 927, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf1_offset" , /* aka */
+ COMP_NONE , /* comp */
+ "Current offset into DDP buffer 1", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ddp_buf1_len" , 3, 928, 951, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf1_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Length of DDP buffer 1", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"aux3_slush" , 3, 952, 959, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "aux3_slush" , /* aka */
+ COMP_NONE , /* comp */
+ "Reserved", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ddp_buf0_tag" , 3, 960, 991, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf0_tag" , /* aka */
+ COMP_NONE , /* comp */
+ "Tag for DDP buffer 0", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ddp_buf1_tag" , 3, 992, 1023, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf1_tag" , /* aka */
+ COMP_NONE , /* comp */
+ "Tag for DDP buffer 1", /*desc*/
+ NULL, /*akadesc */
+ },
+ {NULL,0,0,0, NULL,0,0, NULL, 0, NULL, NULL}, /*terminator*/
+};
+
+/* ====================================================== */
+_TCBVAR g_scb_info5[]={
+ {"OPT_1_RSS_INFO" , 0, 0, 11, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_RSS_INFO" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_1_LISTEN_INTERFACE" , 0, 12, 19, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_LISTEN_INTERFACE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_1_LISTEN_FILTER" , 0, 20, 20, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_LISTEN_FILTER" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_1_SYN_DEFENSE" , 0, 21, 21, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_SYN_DEFENSE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_1_CONNECTION_POLICY" , 0, 22, 23, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_CONNECTION_POLICY" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_1_FLT_INFO" , 0, 24, 63, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_FLT_INFO" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_ACCEPT_MODE" , 0, 64, 65, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_ACCEPT_MODE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_TX_CHANNEL" , 0, 66, 67, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_TX_CHANNEL" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_NO_CONGESTION_CONTROL" , 0, 68, 68, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_NO_CONGESTION_CONTROL" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_DELAYED_ACK" , 0, 69, 69, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_DELAYED_ACK" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_INJECT_TIMER" , 0, 70, 70, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_INJECT_TIMER" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_NON_OFFLOAD" , 0, 71, 71, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_NON_OFFLOAD" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_ULP_MODE" , 0, 72, 75, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_ULP_MODE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_MAX_RCV_BUFFER" , 0, 76, 85, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_MAX_RCV_BUFFER" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_TOS" , 0, 86, 91, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_TOS" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_SM_SEL" , 0, 92, 99, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_SM_SEL" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_L2T_IX" , 0, 100, 111, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_L2T_IX" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_TCAM_BYPASS" , 0, 112, 112, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_TCAM_BYPASS" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_NAGLE" , 0, 113, 113, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_NAGLE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_WSF" , 0, 114, 117, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_WSF" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_KEEPALIVE" , 0, 118, 118, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_KEEPALIVE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_CONN_MAXRT" , 0, 119, 122, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_CONN_MAXRT" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_MAXRT_OVERRIDE" , 0, 123, 123, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_MAXRT_OVERRIDE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_MAX_SEG" , 0, 124, 127, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_MAX_SEG" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"scb_slush" , 0, 128, 1023, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "scb_slush" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {NULL,0,0,0, NULL,0,0, NULL, 0, NULL, NULL}, /*terminator*/
+};
+
+/* ====================================================== */
+_TCBVAR g_fcb_info5[]={
+ {"filter" , 0, 33, 33, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "filter" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Report_TID" , 0, 53, 53, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Report_TID" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Drop" , 0, 54, 54, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Drop" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Direct_Steer" , 0, 55, 55, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Direct_Steer" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Mask_Hash" , 0, 48, 48, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Mask_Hash" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Direct_Steer_Hash" , 0, 49, 49, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Direct_Steer_Hash" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Loopback" , 0, 91, 91, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Loopback" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Loopback_TX_Channel" , 0, 44, 45, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Loopback_TX_Channel" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Swap_MAC_addresses" , 0, 86, 86, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Swap_MAC_addresses" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Rewrite_DMAC" , 0, 92, 92, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Rewrite_DMAC" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Rewrite_SMAC" , 0, 93, 93, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Rewrite_SMAC" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Insert_VLAN" , 0, 94, 94, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Insert_VLAN" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Remove_VLAN" , 0, 39, 39, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Remove_VLAN" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"NAT_Mode" , 0, 50, 52, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "NAT_Mode" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"NAT_seq_check" , 0, 42, 42, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "NAT_seq_check" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"NAT_flag_check" , 0, 84, 84, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "NAT_flag_check" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Count_Hits" , 0, 36, 36, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Count_Hits" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Hit_frame_cnt" , 0, 160, 191, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Hit_frame_cnt" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Hit_byte_cnt_high" , 0, 224, 255, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Hit_byte_cnt_high" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Hit_byte_cnt_low" , 0, 192, 223, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Hit_byte_cnt_low" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {NULL,0,0,0, NULL,0,0, NULL, 0, NULL, NULL}, /*terminator*/
+};
+
diff --git a/usr.sbin/cxgbetool/tcbinfot6.c b/usr.sbin/cxgbetool/tcbinfot6.c
new file mode 100644
index 000000000000..81499136807a
--- /dev/null
+++ b/usr.sbin/cxgbetool/tcbinfot6.c
@@ -0,0 +1,1535 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2018 Chelsio Communications, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/* Auto-generated file. Avoid direct editing. */
+/* Edits will be lost when file regenerated. */
+#include <stdio.h>
+#include "tcb_common.h"
+_TCBVAR g_tcb_info6[]={
+ {"ulp_type" , 0, 0, 3, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "ulp_type" , /* aka */
+ COMP_NONE , /* comp */
+ "ULP mode: 0 =toe, 2=iscsi, 4=rdma, 5=ddp, 6=fcoe, 7=user, 8=tls, 9=dtls, remaining values reserved", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"ulp_raw" , 0, 4, 11, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "ulp" , /* aka */
+ COMP_ULP , /* comp */
+ "ULP subtype", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"l2t_ix" , 0, 12, 23, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "l2t_ix" , /* aka */
+ COMP_NONE , /* comp */
+ "Destination MAC address index", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"smac_sel" , 0, 24, 31, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "smac_sel" , /* aka */
+ COMP_NONE , /* comp */
+ "Source MAC address index", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MIGRATING" , 0, 32, 32, /* name,aux,lo,hi */
+ "t_flags" , 0, 0, /* faka,flo,fhi */
+ "migrating" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_NON_OFFLOAD" , 0, 33, 33, /* name,aux,lo,hi */
+ "t_flags" , 1, 1, /* faka,flo,fhi */
+ "non_offload" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_LOCK_TID" , 0, 34, 34, /* name,aux,lo,hi */
+ "t_flags" , 2, 2, /* faka,flo,fhi */
+ "lock_tid" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_KEEPALIVE" , 0, 35, 35, /* name,aux,lo,hi */
+ "t_flags" , 3, 3, /* faka,flo,fhi */
+ "keepalive" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DACK" , 0, 36, 36, /* name,aux,lo,hi */
+ "t_flags" , 4, 4, /* faka,flo,fhi */
+ "dack" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DACK_MSS" , 0, 37, 37, /* name,aux,lo,hi */
+ "t_flags" , 5, 5, /* faka,flo,fhi */
+ "dack_mss" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DACK_NOT_ACKED" , 0, 38, 38, /* name,aux,lo,hi */
+ "t_flags" , 6, 6, /* faka,flo,fhi */
+ "dack_not_acked" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_NAGLE" , 0, 39, 39, /* name,aux,lo,hi */
+ "t_flags" , 7, 7, /* faka,flo,fhi */
+ "nagle" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_SSWS_DISABLED" , 0, 40, 40, /* name,aux,lo,hi */
+ "t_flags" , 8, 8, /* faka,flo,fhi */
+ "ssws_disabled" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_FLOW_CONTROL_DDP" , 0, 41, 41, /* name,aux,lo,hi */
+ "t_flags" , 9, 9, /* faka,flo,fhi */
+ "rx_flow_control_ddp" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_FLOW_CONTROL_DISABLE" , 0, 42, 42, /* name,aux,lo,hi */
+ "t_flags" , 10, 10, /* faka,flo,fhi */
+ "rx_flow_control_disable" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_CHANNEL" , 0, 43, 43, /* name,aux,lo,hi */
+ "t_flags" , 11, 11, /* faka,flo,fhi */
+ "rx_channel" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_CHANNEL" , 0, 44, 45, /* name,aux,lo,hi */
+ "t_flags" , 12, 13, /* faka,flo,fhi */
+ "tx_channel" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_QUIESCE" , 0, 46, 46, /* name,aux,lo,hi */
+ "t_flags" , 14, 14, /* faka,flo,fhi */
+ "tx_quiesce" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_QUIESCE" , 0, 47, 47, /* name,aux,lo,hi */
+ "t_flags" , 15, 15, /* faka,flo,fhi */
+ "rx_quiesce" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_PACE_AUTO" , 0, 48, 48, /* name,aux,lo,hi */
+ "t_flags" , 16, 16, /* faka,flo,fhi */
+ "tx_pace_auto" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_PACE_FIXED" , 0, 49, 49, /* name,aux,lo,hi */
+ "t_flags" , 17, 17, /* faka,flo,fhi */
+ "tx_pace_fixed" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_QUEUE" , 0, 50, 52, /* name,aux,lo,hi */
+ "t_flags" , 18, 20, /* faka,flo,fhi */
+ "tx_queue" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TURBO" , 0, 53, 53, /* name,aux,lo,hi */
+ "t_flags" , 21, 21, /* faka,flo,fhi */
+ "turbo" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_SEL0" , 0, 54, 54, /* name,aux,lo,hi */
+ "t_flags" , 22, 22, /* faka,flo,fhi */
+ "cctrl_sel0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_SEL1" , 0, 55, 55, /* name,aux,lo,hi */
+ "t_flags" , 23, 23, /* faka,flo,fhi */
+ "cctrl_sel1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CORE_FIN" , 0, 56, 56, /* name,aux,lo,hi */
+ "t_flags" , 24, 24, /* faka,flo,fhi */
+ "core_fin" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CORE_URG" , 0, 57, 57, /* name,aux,lo,hi */
+ "t_flags" , 25, 25, /* faka,flo,fhi */
+ "core_urg" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CORE_MORE" , 0, 58, 58, /* name,aux,lo,hi */
+ "t_flags" , 26, 26, /* faka,flo,fhi */
+ "core_more" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CORE_PUSH" , 0, 59, 59, /* name,aux,lo,hi */
+ "t_flags" , 27, 27, /* faka,flo,fhi */
+ "core_push" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CORE_FLUSH" , 0, 60, 60, /* name,aux,lo,hi */
+ "t_flags" , 28, 28, /* faka,flo,fhi */
+ "core_flush" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RCV_COALESCE_ENABLE" , 0, 61, 61, /* name,aux,lo,hi */
+ "t_flags" , 29, 29, /* faka,flo,fhi */
+ "rcv_coalesce_enable" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RCV_COALESCE_PUSH" , 0, 62, 62, /* name,aux,lo,hi */
+ "t_flags" , 30, 30, /* faka,flo,fhi */
+ "rcv_coalesce_push" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RCV_COALESCE_LAST_PSH" , 0, 63, 63, /* name,aux,lo,hi */
+ "t_flags" , 31, 31, /* faka,flo,fhi */
+ "rcv_coalesce_last_psh" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RCV_COALESCE_HEARTBEAT" , 0, 64, 64, /* name,aux,lo,hi */
+ "t_flags" , 32, 32, /* faka,flo,fhi */
+ "rcv_coalesce_heartbeat" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RSS_FW" , 0, 65, 65, /* name,aux,lo,hi */
+ "t_flags" , 33, 33, /* faka,flo,fhi */
+ "rss_fw" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_ACTIVE_OPEN" , 0, 66, 66, /* name,aux,lo,hi */
+ "t_flags" , 34, 34, /* faka,flo,fhi */
+ "active_open" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_ASK_MODE" , 0, 67, 67, /* name,aux,lo,hi */
+ "t_flags" , 35, 35, /* faka,flo,fhi */
+ "ask_mode" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MOD_SCHD_REASON0" , 0, 68, 68, /* name,aux,lo,hi */
+ "t_flags" , 36, 36, /* faka,flo,fhi */
+ "mod_schd_reason0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MOD_SCHD_REASON1" , 0, 69, 69, /* name,aux,lo,hi */
+ "t_flags" , 37, 37, /* faka,flo,fhi */
+ "mod_schd_reason1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MOD_SCHD_REASON2" , 0, 70, 70, /* name,aux,lo,hi */
+ "t_flags" , 38, 38, /* faka,flo,fhi */
+ "mod_schd_reason2" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MOD_SCHD_TX" , 0, 71, 71, /* name,aux,lo,hi */
+ "t_flags" , 39, 39, /* faka,flo,fhi */
+ "mod_schd_tx" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_MOD_SCHD_RX" , 0, 72, 72, /* name,aux,lo,hi */
+ "t_flags" , 40, 40, /* faka,flo,fhi */
+ "mod_schd_rx" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TIMER" , 0, 73, 73, /* name,aux,lo,hi */
+ "t_flags" , 41, 41, /* faka,flo,fhi */
+ "timer" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DACK_TIMER" , 0, 74, 74, /* name,aux,lo,hi */
+ "t_flags" , 42, 42, /* faka,flo,fhi */
+ "dack_timer" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_PEER_FIN" , 0, 75, 75, /* name,aux,lo,hi */
+ "t_flags" , 43, 43, /* faka,flo,fhi */
+ "peer_fin" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_COMPACT" , 0, 76, 76, /* name,aux,lo,hi */
+ "t_flags" , 44, 44, /* faka,flo,fhi */
+ "tx_compact" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_COMPACT" , 0, 77, 77, /* name,aux,lo,hi */
+ "t_flags" , 45, 45, /* faka,flo,fhi */
+ "rx_compact" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RDMA_ERROR" , 0, 78, 78, /* name,aux,lo,hi */
+ "t_flags" , 46, 46, /* faka,flo,fhi */
+ "rdma_error" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RDMA_FLM_ERROR" , 0, 79, 79, /* name,aux,lo,hi */
+ "t_flags" , 47, 47, /* faka,flo,fhi */
+ "rdma_flm_error" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TX_PDU_OUT" , 0, 80, 80, /* name,aux,lo,hi */
+ "t_flags" , 48, 48, /* faka,flo,fhi */
+ "tx_pdu_out" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RX_PDU_OUT" , 0, 81, 81, /* name,aux,lo,hi */
+ "t_flags" , 49, 49, /* faka,flo,fhi */
+ "rx_pdu_out" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DUPACK_COUNT_ODD" , 0, 82, 82, /* name,aux,lo,hi */
+ "t_flags" , 50, 50, /* faka,flo,fhi */
+ "dupack_count_odd" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_FAST_RECOVERY" , 0, 83, 83, /* name,aux,lo,hi */
+ "t_flags" , 51, 51, /* faka,flo,fhi */
+ "fast_recovery" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RECV_SCALE" , 0, 84, 84, /* name,aux,lo,hi */
+ "t_flags" , 52, 52, /* faka,flo,fhi */
+ "recv_scale" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RECV_TSTMP" , 0, 85, 85, /* name,aux,lo,hi */
+ "t_flags" , 53, 53, /* faka,flo,fhi */
+ "recv_tstmp" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_RECV_SACK" , 0, 86, 86, /* name,aux,lo,hi */
+ "t_flags" , 54, 54, /* faka,flo,fhi */
+ "recv_sack" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_PEND_CTL0" , 0, 87, 87, /* name,aux,lo,hi */
+ "t_flags" , 55, 55, /* faka,flo,fhi */
+ "pend_ctl0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_PEND_CTL1" , 0, 88, 88, /* name,aux,lo,hi */
+ "t_flags" , 56, 56, /* faka,flo,fhi */
+ "pend_ctl1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_PEND_CTL2" , 0, 89, 89, /* name,aux,lo,hi */
+ "t_flags" , 57, 57, /* faka,flo,fhi */
+ "pend_ctl2" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_IP_VERSION" , 0, 90, 90, /* name,aux,lo,hi */
+ "t_flags" , 58, 58, /* faka,flo,fhi */
+ "ip_version" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_ECN" , 0, 91, 91, /* name,aux,lo,hi */
+ "t_flags" , 59, 59, /* faka,flo,fhi */
+ "cctrl_ecn" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_ECE" , 0, 92, 92, /* name,aux,lo,hi */
+ "t_flags" , 60, 60, /* faka,flo,fhi */
+ "cctrl_ece" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_CWR" , 0, 93, 93, /* name,aux,lo,hi */
+ "t_flags" , 61, 61, /* faka,flo,fhi */
+ "cctrl_cwr" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CCTRL_RFR" , 0, 94, 94, /* name,aux,lo,hi */
+ "t_flags" , 62, 62, /* faka,flo,fhi */
+ "cctrl_rfr" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_CORE_BYPASS" , 0, 95, 95, /* name,aux,lo,hi */
+ "t_flags" , 63, 63, /* faka,flo,fhi */
+ "core_bypass" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rss_info" , 0, 96, 105, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rss_info" , /* aka */
+ COMP_NONE , /* comp */
+ "RSS field", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tos" , 0, 106, 111, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tos" , /* aka */
+ COMP_NONE , /* comp */
+ "TOS field for IP header", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_state" , 0, 112, 115, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_state" , /* aka */
+ COMP_NONE , /* comp */
+ "Connection TCP state (see TCP state table)", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"max_rt" , 0, 116, 119, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "max_rt" , /* aka */
+ COMP_NONE , /* comp */
+ "Maximum re-transmissions", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_maxseg" , 0, 120, 123, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_maxseg" , /* aka */
+ COMP_NONE , /* comp */
+ "MTU table index", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"snd_scale" , 0, 124, 127, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_scale" , /* aka */
+ COMP_NONE , /* comp */
+ "Scaling for receive window (0-14). Note: this is reverse of common definition.", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rcv_scale" , 0, 128, 131, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rcv_scale" , /* aka */
+ COMP_NONE , /* comp */
+ "Scaling for send window (0-14). Note: this is reverse of common definition.", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_rxtshift" , 0, 132, 135, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_rxtshift" , /* aka */
+ COMP_NONE , /* comp */
+ "Retransmit exponential backoff", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_dupacks" , 0, 136, 139, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_dupacks" , /* aka */
+ COMP_NONE , /* comp */
+ "Number of duplicate ACKs received", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"timestamp_offset" , 0, 140, 143, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "timestamp_offset" , /* aka */
+ COMP_NONE , /* comp */
+ "Timestamp offset from running clock", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rcv_adv" , 0, 144, 159, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rcv_adv" , /* aka */
+ COMP_NONE , /* comp */
+ "Peer advertised window", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"timestamp" , 0, 160, 191, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "timestamp" , /* aka */
+ COMP_NONE , /* comp */
+ "Timer accounting field", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_rtt_ts_recent_age" , 0, 192, 223, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_rtt_ts_recent_age" , /* aka */
+ COMP_NONE , /* comp */
+ "Round-trip time; timestamps: ts_recent_age", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_rtseq_recent" , 0, 224, 255, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_rtseq_recent" , /* aka */
+ COMP_NONE , /* comp */
+ "Sequence number being timed t_rtseq; timestamps t_recent", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_srtt" , 0, 256, 271, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_srtt" , /* aka */
+ COMP_NONE , /* comp */
+ "Smoothed round-trip time", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"t_rttvar" , 0, 272, 287, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "t_rttvar" , /* aka */
+ COMP_NONE , /* comp */
+ "Variance in round-trip time", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_max" , 0, 288, 319, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_max" , /* aka */
+ COMP_NONE , /* comp */
+ "Highest sequence number in transmit buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"snd_una_raw" , 0, 320, 347, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_una" , /* aka */
+ COMP_TX_MAX , /* comp */
+ "Offset of snd_una from tx_max", /*desc*/
+ "Send unacknowledged", /*akadesc */
+ },
+ {"snd_nxt_raw" , 0, 348, 375, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_nxt" , /* aka */
+ COMP_TX_MAX , /* comp */
+ "Offset of snd_nxt from tx_max", /*desc*/
+ "Send next", /*akadesc */
+ },
+ {"snd_max_raw" , 0, 376, 403, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_max" , /* aka */
+ COMP_TX_MAX , /* comp */
+ "Offset of snd_max from tx_max", /*desc*/
+ "Highest sequence number sent", /*akadesc */
+ },
+ {"snd_rec_raw" , 0, 404, 431, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_rec" , /* aka */
+ COMP_TX_MAX , /* comp */
+ "Offset of NewReno fast recovery end sequence from tx_max", /*desc*/
+ "NewReno fast recovery end sequence number", /*akadesc */
+ },
+ {"snd_cwnd" , 0, 432, 459, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_cwnd" , /* aka */
+ COMP_NONE , /* comp */
+ "Congestion-control window", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"snd_ssthresh" , 0, 460, 487, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "snd_ssthresh" , /* aka */
+ COMP_NONE , /* comp */
+ "Slow Start threshold", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_hdr_ptr_raw" , 0, 488, 504, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_hdr_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for first byte in send buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_last_ptr_raw" , 0, 505, 521, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_last_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for last byte in send buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rcv_nxt" , 0, 522, 553, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rcv_nxt" , /* aka */
+ COMP_NONE , /* comp */
+ "TCP receive next", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rcv_wnd" , 0, 554, 581, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rcv_wnd" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive credits (advertised to peer in receive window)", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_hdr_offset" , 0, 582, 609, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_hdr_offset" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive in-order buffered data", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"ts_last_ack_sent_raw" , 0, 610, 637, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "ts_last_ack_sent" , /* aka */
+ COMP_RCV_NXT , /* comp */
+ "Offset of highest sequence acked from rcv_nxt", /*desc*/
+ "Highest sequence number acked", /*akadesc */
+ },
+ {"rx_frag0_start_idx_raw" , 0, 638, 665, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag0_start_idx" , /* aka */
+ COMP_RCV_NXT , /* comp */
+ "Offset of receive fragment 0 start sequence from rcv_nxt", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag1_start_idx_offset" , 0, 666, 693, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag1_start_idx_offset" , /* aka */
+ COMP_RCV_NXT , /* comp */
+ "Offset of receive fragment 1 start sequence from rcv_nxt", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag0_len" , 0, 694, 721, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag0_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive re-order fragment 0 length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag1_len" , 0, 722, 749, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag1_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive re-order fragment 1 length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"pdu_len" , 0, 750, 765, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "pdu_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive recovered PDU length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ptr_raw" , 0, 766, 782, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for in-order receive buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag1_ptr_raw" , 0, 783, 799, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag1_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for out-of-order receive buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"main_slush" , 0, 800, 831, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "main_slush" , /* aka */
+ COMP_NONE , /* comp */
+ "Reserved", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"aux1_slush0" , 1, 832, 846, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "aux1_slush0" , /* aka */
+ COMP_NONE , /* comp */
+ "Reserved", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag2_start_idx_offset_raw", 1, 847, 874, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag2_start_idx_offset" , /* aka */
+ COMP_RCV_NXT , /* comp */
+ "Offset of receive fragment 2 start sequence from rcv_nxt", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag2_ptr_raw" , 1, 875, 891, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag2_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for out-of-order receive buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag2_len_raw" , 1, 892, 919, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag2_len" , /* aka */
+ COMP_LEN , /* comp */
+ "Receive re-order fragment 2 length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag3_ptr_raw" , 1, 920, 936, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag3_ptr" , /* aka */
+ COMP_PTR , /* comp */
+ "Page pointer for out-of-order receive buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag3_len_raw" , 1, 937, 964, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag3_len" , /* aka */
+ COMP_LEN , /* comp */
+ "Receive re-order fragment 3 length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_frag3_start_idx_offset_raw", 1, 965, 992, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_frag3_start_idx_offset" , /* aka */
+ COMP_RCV_NXT , /* comp */
+ "Offset of receive fragment 3 start sequence from rcv_nxt", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"pdu_hdr_len" , 1, 993, 1000, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "pdu_hdr_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Receive recovered PDU header length", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"aux1_slush1" , 1, 1001, 1019, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "aux1_slush1" , /* aka */
+ COMP_NONE , /* comp */
+ "Reserved", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"ulp_ext" , 1, 1020, 1023, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "ulp_ext" , /* aka */
+ COMP_NONE , /* comp */
+ "Extension of ulp_raw for PI configuration", /*desc*/
+ NULL, /*akadesc */
+ },
+
+ {"irs_ulp" , 2, 832, 840, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "irs_ulp" , /* aka */
+ COMP_NONE , /* comp */
+ "IRS modulo marker_interval when enterring iWARP mode", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"iss_ulp" , 2, 841, 849, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "iss_ulp" , /* aka */
+ COMP_NONE , /* comp */
+ "ISS modulo marker_interval when entering iWARP mode", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_pdu_len" , 2, 850, 863, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_pdu_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Length of Tx FPDU", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"cq_idx_sq" , 2, 864, 879, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "cq_idx_sq" , /* aka */
+ COMP_NONE , /* comp */
+ "CQ index of CQ for SQ", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"cq_idx_rq" , 2, 880, 895, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "cq_idx_rq" , /* aka */
+ COMP_NONE , /* comp */
+ "CQ index of CQ for RQ", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"qp_id" , 2, 896, 911, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "qp_id" , /* aka */
+ COMP_NONE , /* comp */
+ "QP index", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"pd_id" , 2, 912, 927, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "pd_id" , /* aka */
+ COMP_NONE , /* comp */
+ "PD index", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"STAG" , 2, 928, 959, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "stag" , /* aka */
+ COMP_NONE , /* comp */
+ "PDU response STAG", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rq_start" , 2, 960, 985, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rq_start" , /* aka */
+ COMP_NONE , /* comp */
+ "DW aligned starting addres of RQ", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rq_MSN" , 2, 986, 998, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rq_msn" , /* aka */
+ COMP_NONE , /* comp */
+ "Current MSN (modulo 8K, further check in ULP_RX)", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rq_max_offset" , 2, 999, 1002, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rq_max_offset" , /* aka */
+ COMP_NONE , /* comp */
+ "Log size RQ (the size in hardware is rounded up to a power of 2)", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rq_write_ptr" , 2, 1003, 1015, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rq_write_ptr" , /* aka */
+ COMP_NONE , /* comp */
+ "Host RQ write pointer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"RDMAP_opcode" , 2, 1016, 1019, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rdmap_opcode" , /* aka */
+ COMP_NONE , /* comp */
+ "Current FPDU command", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"ord_L_bit_vld" , 2, 1020, 1020, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "ord_l_bit_vld" , /* aka */
+ COMP_NONE , /* comp */
+ "Current FPDU has L-bit set", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_flush" , 2, 1021, 1021, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_flush" , /* aka */
+ COMP_NONE , /* comp */
+ "1 = flush CPL_TX_DATA", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_oos_rxmt" , 2, 1022, 1022, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_oos_rxmt" , /* aka */
+ COMP_NONE , /* comp */
+ "Retransmit is out of FPDU sync", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"tx_oos_txmt" , 2, 1023, 1023, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "tx_oos_txmt" , /* aka */
+ COMP_NONE , /* comp */
+ "Transmit is out of FPDU sync, or disable aligned transmission", /*desc*/
+ NULL, /*akadesc */
+ },
+
+ {"rx_ddp_buf0_offset" , 3, 832, 855, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf0_offset" , /* aka */
+ COMP_NONE , /* comp */
+ "Current offset into DDP buffer 0", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ddp_buf0_len" , 3, 856, 879, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf0_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Length of DDP buffer 0", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_INDICATE_OUT" , 3, 880, 880, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 0, 0, /* faka,flo,fhi */
+ "ddp_indicate_out" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_ACTIVE_BUF" , 3, 881, 881, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 1, 1, /* faka,flo,fhi */
+ "ddp_active_buf" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_OFF" , 3, 882, 882, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 2, 2, /* faka,flo,fhi */
+ "ddp_off" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_WAIT_FRAG" , 3, 883, 883, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 3, 3, /* faka,flo,fhi */
+ "ddp_wait_frag" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF_INF" , 3, 884, 884, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 4, 4, /* faka,flo,fhi */
+ "ddp_buf_inf" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_RX2TX" , 3, 885, 885, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 5, 5, /* faka,flo,fhi */
+ "ddp_rx2tx" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_INDICATE_FLL" , 3, 886, 886, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 6, 6, /* faka,flo,fhi */
+ "ddp_indicate_fll" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_MAIN_UNUSED" , 3, 887, 887, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 7, 7, /* faka,flo,fhi */
+ "ddp_main_unused" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_TLS_KEY_MODE" , 3, 887, 887, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 7, 7, /* faka,flo,fhi */
+ "tls_key_mode" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF0_VALID" , 3, 888, 888, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 8, 8, /* faka,flo,fhi */
+ "ddp_buf0_valid" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF0_INDICATE" , 3, 889, 889, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 9, 9, /* faka,flo,fhi */
+ "ddp_buf0_indicate" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF0_FLUSH" , 3, 890, 890, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 10, 10, /* faka,flo,fhi */
+ "ddp_buf0_flush" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PSHF_ENABLE_0" , 3, 891, 891, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 11, 11, /* faka,flo,fhi */
+ "ddp_pshf_enable_0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PUSH_DISABLE_0" , 3, 892, 892, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 12, 12, /* faka,flo,fhi */
+ "ddp_push_disable_0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PSH_NO_INVALIDATE0" , 3, 893, 893, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 13, 13, /* faka,flo,fhi */
+ "ddp_psh_no_invalidate0" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF0_UNUSED" , 3, 894, 895, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 14, 15, /* faka,flo,fhi */
+ "ddp_buf0_unused" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF1_VALID" , 3, 896, 896, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 16, 16, /* faka,flo,fhi */
+ "ddp_buf1_valid" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF1_INDICATE" , 3, 897, 897, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 17, 17, /* faka,flo,fhi */
+ "ddp_buf1_indicate" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF1_FLUSH" , 3, 898, 898, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 18, 18, /* faka,flo,fhi */
+ "ddp_buf1_flush" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PSHF_ENABLE_1" , 3, 899, 899, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 19, 19, /* faka,flo,fhi */
+ "ddp_pshf_enable_1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PUSH_DISABLE_1" , 3, 900, 900, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 20, 20, /* faka,flo,fhi */
+ "ddp_push_disable_1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_PSH_NO_INVALIDATE1" , 3, 901, 901, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 21, 21, /* faka,flo,fhi */
+ "ddp_psh_no_invalidate1" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"TF_DDP_BUF1_UNUSED" , 3, 902, 903, /* name,aux,lo,hi */
+ "rx_ddp_flags" , 22, 23, /* faka,flo,fhi */
+ "ddp_buf1_unused" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ddp_buf1_offset" , 3, 904, 927, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf1_offset" , /* aka */
+ COMP_NONE , /* comp */
+ "Current offset into DDP buffer 1", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ddp_buf1_len" , 3, 928, 951, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf1_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Length of DDP buffer 1", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"aux3_slush" , 3, 952, 959, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "aux3_slush" , /* aka */
+ COMP_NONE , /* comp */
+ "Reserved", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ddp_buf0_tag" , 3, 960, 991, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf0_tag" , /* aka */
+ COMP_NONE , /* comp */
+ "Tag for DDP buffer 0", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_ddp_buf1_tag" , 3, 992, 1023, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_ddp_buf1_tag" , /* aka */
+ COMP_NONE , /* comp */
+ "Tag for DDP buffer 1", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_tls_buf_offset" , 4, 832, 855, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_tls_buf_offset" , /* aka */
+ COMP_NONE , /* comp */
+ "Current offset into DDP buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_tls_buf_len" , 4, 856, 879, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_tls_buf_len" , /* aka */
+ COMP_NONE , /* comp */
+ "Length of DDP buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_tls_flags" , 4, 880, 895, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_tls_flags" , /* aka */
+ COMP_NONE , /* comp */
+ "DDP control flags", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_tls_seq" , 4, 896, 959, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_tls_seq" , /* aka */
+ COMP_NONE , /* comp */
+ "TLS/SSL sequence number", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_tls_buf_tag" , 4, 960, 991, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_tls_buf_tag" , /* aka */
+ COMP_NONE , /* comp */
+ "Tag for DDP buffer", /*desc*/
+ NULL, /*akadesc */
+ },
+ {"rx_tls_key_tag" , 4, 992, 1023, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "rx_tls_key_tag" , /* aka */
+ COMP_NONE , /* comp */
+ "Tag for TLS crypto state", /*desc*/
+ NULL, /*akadesc */
+ },
+ {NULL,0,0,0, NULL,0,0, NULL, 0, NULL, NULL}, /*terminator*/
+};
+
+/* ====================================================== */
+_TCBVAR g_scb_info6[]={
+ {"OPT_1_RSS_INFO" , 0, 0, 11, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_RSS_INFO" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_1_LISTEN_INTERFACE" , 0, 12, 19, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_LISTEN_INTERFACE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_1_LISTEN_FILTER" , 0, 20, 20, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_LISTEN_FILTER" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_1_SYN_DEFENSE" , 0, 21, 21, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_SYN_DEFENSE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_1_CONNECTION_POLICY" , 0, 22, 23, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_CONNECTION_POLICY" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_1_FLT_INFO" , 0, 24, 63, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_1_FLT_INFO" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_ACCEPT_MODE" , 0, 64, 65, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_ACCEPT_MODE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_TX_CHANNEL" , 0, 66, 67, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_TX_CHANNEL" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_NO_CONGESTION_CONTROL" , 0, 68, 68, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_NO_CONGESTION_CONTROL" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_DELAYED_ACK" , 0, 69, 69, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_DELAYED_ACK" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_INJECT_TIMER" , 0, 70, 70, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_INJECT_TIMER" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_NON_OFFLOAD" , 0, 71, 71, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_NON_OFFLOAD" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_ULP_MODE" , 0, 72, 75, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_ULP_MODE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_MAX_RCV_BUFFER" , 0, 76, 85, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_MAX_RCV_BUFFER" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_TOS" , 0, 86, 91, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_TOS" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_SM_SEL" , 0, 92, 99, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_SM_SEL" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_L2T_IX" , 0, 100, 111, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_L2T_IX" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_TCAM_BYPASS" , 0, 112, 112, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_TCAM_BYPASS" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_NAGLE" , 0, 113, 113, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_NAGLE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_WSF" , 0, 114, 117, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_WSF" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_KEEPALIVE" , 0, 118, 118, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_KEEPALIVE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_CONN_MAXRT" , 0, 119, 122, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_CONN_MAXRT" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_MAXRT_OVERRIDE" , 0, 123, 123, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_MAXRT_OVERRIDE" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"OPT_0_MAX_SEG" , 0, 124, 127, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "OPT_0_MAX_SEG" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"scb_slush" , 0, 128, 1023, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "scb_slush" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {NULL,0,0,0, NULL,0,0, NULL, 0, NULL, NULL}, /*terminator*/
+};
+
+/* ====================================================== */
+_TCBVAR g_fcb_info6[]={
+ {"filter" , 0, 33, 33, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "filter" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Drop_Encapsulation_Headers" , 0, 35, 35, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Drop_Encapsulation_Headers" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Report_TID" , 0, 53, 53, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Report_TID" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Drop" , 0, 54, 54, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Drop" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Direct_Steer" , 0, 55, 55, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Direct_Steer" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Mask_Hash" , 0, 48, 48, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Mask_Hash" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Direct_Steer_Hash" , 0, 49, 49, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Direct_Steer_Hash" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Loopback" , 0, 91, 91, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Loopback" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Loopback_TX_Channel" , 0, 44, 45, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Loopback_TX_Channel" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Loopback_TX_Loopback" , 0, 85, 85, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Loopback_TX_Loopback" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Swap_MAC_addresses" , 0, 86, 86, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Swap_MAC_addresses" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Rewrite_DMAC" , 0, 92, 92, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Rewrite_DMAC" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Rewrite_SMAC" , 0, 93, 93, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Rewrite_SMAC" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Insert_VLAN" , 0, 94, 94, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Insert_VLAN" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Remove_VLAN" , 0, 39, 39, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Remove_VLAN" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"NAT_Mode" , 0, 50, 52, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "NAT_Mode" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"NAT_seq_check" , 0, 42, 42, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "NAT_seq_check" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"NAT_flag_check" , 0, 84, 84, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "NAT_flag_check" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Count_Hits" , 0, 36, 36, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Count_Hits" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Hit_frame_cnt" , 0, 160, 191, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Hit_frame_cnt" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Hit_byte_cnt_high" , 0, 224, 255, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Hit_byte_cnt_high" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {"Hit_byte_cnt_low" , 0, 192, 223, /* name,aux,lo,hi */
+ NULL , 0, 0, /* faka,flo,fhi */
+ "Hit_byte_cnt_low" , /* aka */
+ COMP_NONE , /* comp */
+ NULL, /*desc*/
+ NULL, /*akadesc */
+ },
+ {NULL,0,0,0, NULL,0,0, NULL, 0, NULL, NULL}, /*terminator*/
+};
+
diff --git a/usr.sbin/cxgbetool/tcbshowt4.c b/usr.sbin/cxgbetool/tcbshowt4.c
new file mode 100644
index 000000000000..4237b64fb0b8
--- /dev/null
+++ b/usr.sbin/cxgbetool/tcbshowt4.c
@@ -0,0 +1,416 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2018 Chelsio Communications, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/* Auto-generated file. Avoid direct editing. */
+/* Edits will be lost when file regenerated. */
+#include <stdio.h>
+#include "tcb_common.h"
+
+void t4_display_tcb_aux_0 (_TCBVAR *tvp, int aux)
+{
+
+
+
+
+
+
+
+ PR("STATE:\n");
+ PR(" %-12s (%-2u), %s, lock_tid %u, init %u\n",
+ spr_tcp_state(val("t_state")),
+ val("t_state"),
+ spr_ip_version(val("ip_version")),
+ val("lock_tid"),
+ val("init")
+ );
+ PR(" l2t_ix 0x%x, smac sel 0x%x, tos 0x%x\n",
+ val("l2t_ix"),
+ val("smac_sel"),
+ val("tos")
+ );
+ PR(" maxseg %u, recv_scaleflag %u, recv_tstmp %u, recv_sack %u\n",
+ val("t_maxseg"), val("recv_scale"),
+ val("recv_tstmp"), val("recv_sack"));
+
+
+ PR("TIMERS:\n"); /* **************************************** */
+ PR(" timer %u, dack_timer %u\n",
+ val("timer"), val("dack_timer"));
+ PR(" mod_schd: tx: %u, rx: %u, reason 0x%1x\n",
+ val("mod_schd_tx"),
+ val("mod_schd_rx"),
+ ((val("mod_schd_reason2")<<2) | (val("mod_schd_reason1")<<1) |
+ val("mod_schd_reason0"))
+ );
+
+
+ PR(" max_rt %-2u, rxtshift %u, keepalive %u\n",
+ val("max_rt"), val("t_rxtshift"),
+ val("keepalive"));
+ PR(" timestamp_offset 0x%x, timestamp 0x%x\n",
+ val("timestamp_offset"),val("timestamp"));
+
+
+ PR(" t_rtt_ts_recent_age %u t_rttseq_recent %u\n",
+ val("t_rtt_ts_recent_age"), val("t_rtseq_recent"));
+ PR(" t_srtt %u, t_rttvar %u\n",
+ val("t_srtt"),val("t_rttvar"));
+
+
+
+
+
+
+ PR("TRANSMIT BUFFER:\n"); /* *************************** */
+ PR(" snd_una %u, snd_nxt %u, snd_max %u, tx_max %u\n",
+ val("snd_una"),val("snd_nxt"),
+ val("snd_max"),val("tx_max"));
+ PR(" core_fin %u, tx_hdr_offset %u\n",
+ val("core_fin"), SEQ_SUB(val("tx_max"),val("snd_una"))
+ );
+ if (val("recv_scale") && !val("active_open")) {
+ PR(" rcv_adv %-5u << %-2u == %u (recv_scaleflag %u rcv_scale %u active open %u)\n",
+ val("rcv_adv"), val("rcv_scale"),
+ val("rcv_adv") << val("rcv_scale"),
+ val("recv_scale"), val("rcv_scale"), val("active_open"));
+ } else {
+ PR(" rcv_adv %-5u (rcv_scale %-2u recv_scaleflag %u active_open %u)\n",
+ val("rcv_adv"), val("rcv_scale"),
+ val("recv_scale"), val("active_open"));
+ }
+
+ PR(" snd_cwnd %-5u snd_ssthresh %u snd_rec %u\n",
+ val("snd_cwnd") , val("snd_ssthresh"), val("snd_rec")
+ );
+
+
+
+
+ PR(" cctrl: sel %s, ecn %u, ece %u, cwr %u, rfr %u\n",
+ spr_cctrl_sel(val("cctrl_sel0"),val("cctrl_sel1")),
+ val("cctrl_ecn"), val("cctrl_ece"), val("cctrl_cwr"),
+ val("cctrl_rfr"));
+ PR(" t_dupacks %u, dupack_count_odd %u, fast_recovery %u\n",
+ val("t_dupacks"), val("dupack_count_odd"),val("fast_recovery"));
+ PR(" core_more %u, core_urg, %u core_push %u,",
+ val("core_more"),val("core_urg"),val("core_push"));
+ PR(" core_flush %u\n",val("core_flush"));
+ PR(" nagle %u, ssws_disable %u, turbo %u,",
+ val("nagle"), val("ssws_disabled"), val("turbo"));
+ PR(" tx_pdu_out %u\n",val("tx_pdu_out"));
+ PR(" tx_pace_auto %u, tx_pace_fixed %u, tx_queue %u",
+ val("tx_pace_auto"),val("tx_pace_fixed"),val("tx_queue"));
+
+
+ PR(" tx_quiesce %u\n",val("tx_quiesce"));
+ PR(" tx_channel %u, tx_channel1 %u, tx_channel0 %u\n",
+ val("tx_channel"),
+ (val("tx_channel")>>1)&1,
+ val("tx_channel")&1
+ );
+
+
+
+
+ PR(" tx_hdr_ptr 0x%-6x tx_last_ptr 0x%-6x tx_compact %u\n",
+ val("tx_hdr_ptr"),val("tx_last_ptr"),val("tx_compact"));
+
+
+
+
+ PR("RECEIVE BUFFER:\n"); /* *************************** */
+ PR(" last_ack_sent %-10u rx_compact %u\n",
+ val("ts_last_ack_sent"),val("rx_compact"));
+ PR(" rcv_nxt %-10u hdr_off %-10u\n",
+ val("rcv_nxt"), val("rx_hdr_offset"));
+ PR(" frag0_idx %-10u length %-10u frag0_ptr 0x%-8x\n",
+ val("rx_frag0_start_idx"),
+ val("rx_frag0_len"),
+ val("rx_ptr"));
+ PR(" frag1_idx %-10u length %-10u ",
+ val("rx_frag1_start_idx_offset"),
+ val("rx_frag1_len"));
+
+
+
+
+ if (val("ulp_type")!=4) { /* RDMA has FRAG1 idx && len, but no ptr? Should I not display frag1 at all? */
+ PR("frag1_ptr 0x%-8x\n",val("rx_frag1_ptr"));
+ } else {
+ PR("\n");
+ }
+
+
+ if (val("ulp_type") !=6 && val("ulp_type") != 5 && val("ulp_type") !=4) {
+ PR(" frag2_idx %-10u length %-10u frag2_ptr 0x%-8x\n",
+ val("rx_frag2_start_idx_offset"),
+ val("rx_frag2_len"),
+ val("rx_frag2_ptr"));
+ PR(" frag3_idx %-10u length %-10u frag3_ptr 0x%-8x\n",
+ val("rx_frag3_start_idx_offset"),
+ val("rx_frag3_len"),
+ val("rx_frag3_ptr"));
+ }
+
+
+
+
+
+
+ PR(" peer_fin %u, rx_pdu_out %u, pdu_len %u\n",
+ val("peer_fin"),val("rx_pdu_out"), val("pdu_len"));
+
+
+
+
+ if (val("recv_scale")) {
+ PR(" rcv_wnd %u >> snd_scale %u == %u, recv_scaleflag = %u\n",
+ val("rcv_wnd"), val("snd_scale"),
+ val("rcv_wnd") >> val("snd_scale"),
+ val("recv_scale"));
+ } else {
+ PR(" rcv_wnd %u. (snd_scale %u, recv_scaleflag = %u)\n",
+ val("rcv_wnd"), val("snd_scale"),
+ val("recv_scale"));
+ }
+
+
+
+
+ PR(" dack_mss %u dack %u, dack_not_acked: %u\n",
+ val("dack_mss"),val("dack"),val("dack_not_acked"));
+ PR(" rcv_coal %u rcv_co_psh %u rcv_co_last_psh %u heart %u\n",
+ val("rcv_coalesce_enable"),
+ val("rcv_coalesce_push"),
+ val("rcv_coalesce_last_psh"),
+ val("rcv_coalesce_heartbeat"));
+
+ PR(" rx_channel %u rx_quiesce %u rx_flow_ctrl_dis %u,",
+ val("rx_channel"), val("rx_quiesce"),
+ val("rx_flow_control_disable"));
+ PR(" rx_flow_ctrl_ddp %u\n",
+ val("rx_flow_control_ddp"));
+
+
+ PR("MISCELANEOUS:\n"); /* *************************** */
+ PR(" pend_ctl: 0x%1x, unused_flags: 0x%x, main_slush: 0x%x\n",
+ ((val("pend_ctl2")<<2) | (val("pend_ctl1")<<1) |
+ val("pend_ctl0")),
+ val("unused"),val("main_slush"));
+ PR(" Migrating %u, ask_mode %u, non_offload %u, rss_info %u\n",
+ val("migrating"),
+ val("ask_mode"), val("non_offload"), val("rss_info"));
+ PR(" ULP: ulp_type %u (%s), ulp_raw %u\n",
+ val("ulp_type"), spr_ulp_type(val("ulp_type")),val("ulp_raw"));
+ PR(" RDMA: error %u, flm_err %u\n",
+ val("rdma_error"), val("rdma_flm_error"));
+
+
+}
+void t4_display_tcb_aux_1 (_TCBVAR *tvp, int aux)
+{
+
+
+
+ PR(" aux1_slush0: 0x%x aux1_slush1 0x%x\n",
+ val("aux1_slush0"), val("aux1_slush1"));
+ PR(" pdu_hdr_len %u\n",val("pdu_hdr_len"));
+
+
+
+}
+void t4_display_tcb_aux_2 (_TCBVAR *tvp, int aux)
+{
+
+
+
+
+ PR(" qp_id %u, pd_id %u, stag %u\n",
+ val("qp_id"), val("pd_id"),val("stag"));
+ PR(" irs_ulp %u, iss_ulp %u\n",
+ val("irs_ulp"),val("iss_ulp"));
+ PR(" tx_pdu_len %u\n",
+ val("tx_pdu_len"));
+ PR(" cq_idx_sq %u, cq_idx_rq %u\n",
+ val("cq_idx_sq"),val("cq_idx_rq"));
+ PR(" rq_start %u, rq_MSN %u, rq_max_off %u, rq_write_ptr %u\n",
+ val("rq_start"),val("rq_msn"),val("rq_max_offset"),
+ val("rq_write_ptr"));
+ PR(" L_valid %u, rdmap opcode %u\n",
+ val("ord_l_bit_vld"),val("rdmap_opcode"));
+ PR(" tx_flush: %u, tx_oos_rxmt %u, tx_oos_txmt %u\n",
+ val("tx_flush"),val("tx_oos_rxmt"),val("tx_oos_txmt"));
+
+
+
+
+}
+void t4_display_tcb_aux_3 (_TCBVAR *tvp, int aux)
+{
+
+
+
+
+ PR(" aux3_slush: 0x%x, unused: buf0 0x%x, buf1: 0x%x, main: 0x%x\n",
+ val("aux3_slush"),val("ddp_buf0_unused"),val("ddp_buf1_unused"),
+ val("ddp_main_unused"));
+
+
+
+
+
+ PR(" DDP: DDPOFF ActBuf IndOut WaitFrag Rx2Tx BufInf\n");
+ PR(" %u %u %u %u %u %u\n",
+ val("ddp_off"),val("ddp_active_buf"),val("ddp_indicate_out"),
+ val("ddp_wait_frag"),val("ddp_rx2tx"),val("ddp_buf_inf")
+ );
+
+
+
+
+
+ PR(" Ind PshfEn PushDis Flush NoInvalidate\n");
+ PR(" Buf0: %u %u %u %u %u\n",
+ val("ddp_buf0_indicate"),
+ val("ddp_pshf_enable_0"), val("ddp_push_disable_0"),
+ val("ddp_buf0_flush"), val("ddp_psh_no_invalidate0")
+ );
+ PR(" Buf1: %u %u %u %u %u\n",
+ val("ddp_buf1_indicate"),
+ val("ddp_pshf_enable_1"), val("ddp_push_disable_1"),
+ val("ddp_buf1_flush"), val("ddp_psh_no_invalidate1")
+ );
+
+
+
+
+
+
+
+
+
+
+ PR(" Valid Offset Length Tag\n");
+ PR(" Buf0: %u 0x%6.6x 0x%6.6x 0x%8.8x",
+ val("ddp_buf0_valid"),val("rx_ddp_buf0_offset"),
+ val("rx_ddp_buf0_len"),val("rx_ddp_buf0_tag")
+
+
+ );
+ if (0==val("ddp_off") && 1==val("ddp_buf0_valid") && 0==val("ddp_active_buf")) {
+ PR(" (Active)\n");
+ } else {
+ PR(" (Inactive)\n");
+ }
+
+
+ PR(" Buf1: %u 0x%6.6x 0x%6.6x 0x%8.8x",
+ val("ddp_buf1_valid"),val("rx_ddp_buf1_offset"),
+ val("rx_ddp_buf1_len"),val("rx_ddp_buf1_tag")
+
+
+ );
+
+
+ if (0==val("ddp_off") && 1==val("ddp_buf1_valid") && 1==val("ddp_active_buf")) {
+ PR(" (Active)\n");
+ } else {
+ PR(" (Inactive)\n");
+ }
+
+
+
+
+
+
+ if (1==val("ddp_off")) {
+ PR(" DDP is off (which also disables indicate)\n");
+ } else if (1==val("ddp_buf0_valid") && 0==val("ddp_active_buf")) {
+ PR(" Data being DDP'ed to buf 0, ");
+ PR("which has %u - %u = %u bytes of space left\n",
+ val("rx_ddp_buf0_len"),val("rx_ddp_buf0_offset"),
+ val("rx_ddp_buf0_len")-val("rx_ddp_buf0_offset")
+ );
+ if (1==val("ddp_buf1_valid")) {
+ PR(" And buf1, which is also valid, has %u - %u = %u bytes of space left\n",
+ val("rx_ddp_buf1_len"),val("rx_ddp_buf1_offset"),
+ val("rx_ddp_buf1_len")-val("rx_ddp_buf1_offset")
+ );
+ }
+ } else if (1==val("ddp_buf1_valid") && 1==val("ddp_active_buf")) {
+ PR(" Data being DDP'ed to buf 1, ");
+ PR("which has %u - %u = %u bytes of space left\n",
+ val("rx_ddp_buf1_len"),val("rx_ddp_buf1_offset"),
+ val("rx_ddp_buf1_len")-val("rx_ddp_buf1_offset")
+ );
+ if (1==val("ddp_buf0_valid")) {
+ PR(" And buf0, which is also valid, has %u - %u = %u bytes of space left\n",
+ val("rx_ddp_buf0_len"),val("rx_ddp_buf0_offset"),
+ val("rx_ddp_buf0_len")-val("rx_ddp_buf0_offset")
+ );
+ }
+ } else if (0==val("ddp_buf0_valid") && 1==val("ddp_buf1_valid") && 0==val("ddp_active_buf")) {
+ PR(" !!! Invalid DDP buf 1 valid, but buf 0 active.\n");
+ } else if (1==val("ddp_buf0_valid") && 0==val("ddp_buf1_valid") && 1==val("ddp_active_buf")) {
+ PR(" !!! Invalid DDP buf 0 valid, but buf 1 active.\n");
+ } else {
+ PR(" DDP is enabled, but no buffers are active && valid.\n");
+
+
+
+
+ if (0==val("ddp_indicate_out")) {
+ if (0==val("ddp_buf0_indicate") && 0==val("ddp_buf1_indicate")) {
+ PR(" 0 length Indicate buffers ");
+ if (0==val("rx_hdr_offset")) {
+ PR("will cause new data to be held in PMRX.\n");
+ } else {
+ PR("is causing %u bytes to be held in PMRX\n",
+ val("rx_hdr_offset"));
+ }
+ } else {
+ PR(" Data being indicated to host\n");
+ }
+ } else if (1==val("ddp_indicate_out")) {
+ PR(" Indicate is off, which ");
+ if (0==val("rx_hdr_offset")) {
+ PR("will cause new data to be held in PMRX.\n");
+ } else {
+ PR("is causing %u bytes to be held in PMRX\n",
+ val("rx_hdr_offset"));
+ }
+ }
+ }
+
+
+
+
+}
diff --git a/usr.sbin/cxgbetool/tcbshowt5.c b/usr.sbin/cxgbetool/tcbshowt5.c
new file mode 100644
index 000000000000..3f5aa8474226
--- /dev/null
+++ b/usr.sbin/cxgbetool/tcbshowt5.c
@@ -0,0 +1,427 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2018 Chelsio Communications, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/* Auto-generated file. Avoid direct editing. */
+/* Edits will be lost when file regenerated. */
+#include <stdio.h>
+#include "tcb_common.h"
+
+void t5_display_tcb_aux_0 (_TCBVAR *tvp, int aux)
+{
+
+
+
+
+
+
+
+ PR("STATE:\n");
+ PR(" %-12s (%-2u), %s, lock_tid %u, rss_fw %u\n",
+ spr_tcp_state(val("t_state")),
+ val("t_state"),
+ spr_ip_version(val("ip_version")),
+ val("lock_tid"),
+ val("rss_fw")
+ );
+ PR(" l2t_ix 0x%x, smac sel 0x%x, tos 0x%x\n",
+ val("l2t_ix"),
+ val("smac_sel"),
+ val("tos")
+ );
+ PR(" maxseg %u, recv_scaleflag %u, recv_tstmp %u, recv_sack %u\n",
+ val("t_maxseg"), val("recv_scale"),
+ val("recv_tstmp"), val("recv_sack"));
+
+
+ PR("TIMERS:\n"); /* **************************************** */
+ PR(" timer %u, dack_timer %u\n",
+ val("timer"), val("dack_timer"));
+ PR(" mod_schd: tx: %u, rx: %u, reason 0x%1x\n",
+ val("mod_schd_tx"),
+ val("mod_schd_rx"),
+ ((val("mod_schd_reason2")<<2) | (val("mod_schd_reason1")<<1) |
+ val("mod_schd_reason0"))
+ );
+
+
+ PR(" max_rt %-2u, rxtshift %u, keepalive %u\n",
+ val("max_rt"), val("t_rxtshift"),
+ val("keepalive"));
+ PR(" timestamp_offset 0x%x, timestamp 0x%x\n",
+ val("timestamp_offset"),val("timestamp"));
+
+
+ PR(" t_rtt_ts_recent_age %u t_rttseq_recent %u\n",
+ val("t_rtt_ts_recent_age"), val("t_rtseq_recent"));
+ PR(" t_srtt %u, t_rttvar %u\n",
+ val("t_srtt"),val("t_rttvar"));
+
+
+
+
+
+
+ PR("TRANSMIT BUFFER:\n"); /* *************************** */
+ PR(" snd_una %u, snd_nxt %u, snd_max %u, tx_max %u\n",
+ val("snd_una"),val("snd_nxt"),
+ val("snd_max"),val("tx_max"));
+ PR(" core_fin %u, tx_hdr_offset %u\n",
+ val("core_fin"), SEQ_SUB(val("tx_max"),val("snd_una"))
+ );
+ if (val("recv_scale") && !val("active_open")) {
+ PR(" rcv_adv %-5u << %-2u == %u (recv_scaleflag %u rcv_scale %u active open %u)\n",
+ val("rcv_adv"), val("rcv_scale"),
+ val("rcv_adv") << val("rcv_scale"),
+ val("recv_scale"), val("rcv_scale"), val("active_open"));
+ } else {
+ PR(" rcv_adv %-5u (rcv_scale %-2u recv_scaleflag %u active_open %u)\n",
+ val("rcv_adv"), val("rcv_scale"),
+ val("recv_scale"), val("active_open"));
+ }
+
+ PR(" snd_cwnd %-5u snd_ssthresh %u snd_rec %u\n",
+ val("snd_cwnd") , val("snd_ssthresh"), val("snd_rec")
+ );
+
+
+
+
+ PR(" cctrl: sel %s, ecn %u, ece %u, cwr %u, rfr %u\n",
+ spr_cctrl_sel(val("cctrl_sel0"),val("cctrl_sel1")),
+ val("cctrl_ecn"), val("cctrl_ece"), val("cctrl_cwr"),
+ val("cctrl_rfr"));
+ PR(" t_dupacks %u, dupack_count_odd %u, fast_recovery %u\n",
+ val("t_dupacks"), val("dupack_count_odd"),val("fast_recovery"));
+ PR(" core_more %u, core_urg, %u core_push %u,",
+ val("core_more"),val("core_urg"),val("core_push"));
+ PR(" core_flush %u\n",val("core_flush"));
+ PR(" nagle %u, ssws_disable %u, turbo %u,",
+ val("nagle"), val("ssws_disabled"), val("turbo"));
+ PR(" tx_pdu_out %u\n",val("tx_pdu_out"));
+ PR(" tx_pace_auto %u, tx_pace_fixed %u, tx_queue %u",
+ val("tx_pace_auto"),val("tx_pace_fixed"),val("tx_queue"));
+
+
+ PR(" tx_quiesce %u\n",val("tx_quiesce"));
+ PR(" tx_channel %u, tx_channel1 %u, tx_channel0 %u\n",
+ val("tx_channel"),
+ (val("tx_channel")>>1)&1,
+ val("tx_channel")&1
+ );
+
+
+
+
+ PR(" tx_hdr_ptr 0x%-6x tx_last_ptr 0x%-6x tx_compact %u\n",
+ val("tx_hdr_ptr"),val("tx_last_ptr"),val("tx_compact"));
+
+
+
+
+ PR("RECEIVE BUFFER:\n"); /* *************************** */
+ PR(" last_ack_sent %-10u rx_compact %u\n",
+ val("ts_last_ack_sent"),val("rx_compact"));
+ PR(" rcv_nxt %-10u hdr_off %-10u\n",
+ val("rcv_nxt"), val("rx_hdr_offset"));
+ PR(" frag0_idx %-10u length %-10u rx_ptr 0x%-8x\n",
+ val("rx_frag0_start_idx"),
+ val("rx_frag0_len"),
+ val("rx_ptr"));
+ PR(" frag1_idx %-10u length %-10u ",
+ val("rx_frag1_start_idx_offset"),
+ val("rx_frag1_len"));
+
+
+
+
+ if (val("ulp_type")!=4) { /* RDMA has FRAG1 idx && len, but no ptr? Should I not display frag1 at all? */
+ PR("frag1_ptr 0x%-8x\n",val("rx_frag1_ptr"));
+ } else {
+ PR("\n");
+ }
+
+
+ if (val("ulp_type") !=6 && val("ulp_type") != 5 && val("ulp_type") !=4) {
+ PR(" frag2_idx %-10u length %-10u frag2_ptr 0x%-8x\n",
+ val("rx_frag2_start_idx_offset"),
+ val("rx_frag2_len"),
+ val("rx_frag2_ptr"));
+ PR(" frag3_idx %-10u length %-10u frag3_ptr 0x%-8x\n",
+ val("rx_frag3_start_idx_offset"),
+ val("rx_frag3_len"),
+ val("rx_frag3_ptr"));
+ }
+
+
+
+
+
+
+ PR(" peer_fin %u, rx_pdu_out %u, pdu_len %u\n",
+ val("peer_fin"),val("rx_pdu_out"), val("pdu_len"));
+
+
+
+
+ if (val("recv_scale")) {
+ PR(" rcv_wnd %u >> snd_scale %u == %u, recv_scaleflag = %u\n",
+ val("rcv_wnd"), val("snd_scale"),
+ val("rcv_wnd") >> val("snd_scale"),
+ val("recv_scale"));
+ } else {
+ PR(" rcv_wnd %u. (snd_scale %u, recv_scaleflag = %u)\n",
+ val("rcv_wnd"), val("snd_scale"),
+ val("recv_scale"));
+ }
+
+
+
+
+ PR(" dack_mss %u dack %u, dack_not_acked: %u\n",
+ val("dack_mss"),val("dack"),val("dack_not_acked"));
+ PR(" rcv_coal %u rcv_co_psh %u rcv_co_last_psh %u heart %u\n",
+ val("rcv_coalesce_enable"),
+ val("rcv_coalesce_push"),
+ val("rcv_coalesce_last_psh"),
+ val("rcv_coalesce_heartbeat"));
+
+ PR(" rx_channel %u rx_quiesce %u rx_flow_ctrl_dis %u,",
+ val("rx_channel"), val("rx_quiesce"),
+ val("rx_flow_control_disable"));
+ PR(" rx_flow_ctrl_ddp %u\n",
+ val("rx_flow_control_ddp"));
+
+
+ PR("MISCELANEOUS:\n"); /* *************************** */
+ PR(" pend_ctl: 0x%1x, unused_flags: 0x%x, main_slush: 0x%x\n",
+ ((val("pend_ctl2")<<2) | (val("pend_ctl1")<<1) |
+ val("pend_ctl0")),
+ val("unused"),val("main_slush"));
+ PR(" Migrating %u, ask_mode %u, non_offload %u, rss_info %u\n",
+ val("migrating"),
+ val("ask_mode"), val("non_offload"), val("rss_info"));
+ PR(" ULP: ulp_type %u (%s), ulp_raw %u",
+ val("ulp_type"), spr_ulp_type(val("ulp_type")),
+ val("ulp_raw"));
+
+
+ if (aux==1) {
+ PR(", ulp_ext %u",val("ulp_ext"));
+ }
+ PR("\n");
+
+
+
+
+ PR(" RDMA: error %u, flm_err %u\n",
+ val("rdma_error"), val("rdma_flm_error"));
+
+
+}
+void t5_display_tcb_aux_1 (_TCBVAR *tvp, int aux)
+{
+
+
+
+ PR(" aux1_slush0: 0x%x aux1_slush1 0x%x\n",
+ val("aux1_slush0"), val("aux1_slush1"));
+ PR(" pdu_hdr_len %u\n",val("pdu_hdr_len"));
+
+
+
+}
+void t5_display_tcb_aux_2 (_TCBVAR *tvp, int aux)
+{
+
+
+
+
+ PR(" qp_id %u, pd_id %u, stag %u\n",
+ val("qp_id"), val("pd_id"),val("stag"));
+ PR(" irs_ulp %u, iss_ulp %u\n",
+ val("irs_ulp"),val("iss_ulp"));
+ PR(" tx_pdu_len %u\n",
+ val("tx_pdu_len"));
+ PR(" cq_idx_sq %u, cq_idx_rq %u\n",
+ val("cq_idx_sq"),val("cq_idx_rq"));
+ PR(" rq_start %u, rq_MSN %u, rq_max_off %u, rq_write_ptr %u\n",
+ val("rq_start"),val("rq_msn"),val("rq_max_offset"),
+ val("rq_write_ptr"));
+ PR(" L_valid %u, rdmap opcode %u\n",
+ val("ord_l_bit_vld"),val("rdmap_opcode"));
+ PR(" tx_flush: %u, tx_oos_rxmt %u, tx_oos_txmt %u\n",
+ val("tx_flush"),val("tx_oos_rxmt"),val("tx_oos_txmt"));
+
+
+
+
+}
+void t5_display_tcb_aux_3 (_TCBVAR *tvp, int aux)
+{
+
+
+
+
+ PR(" aux3_slush: 0x%x, unused: buf0 0x%x, buf1: 0x%x, main: 0x%x\n",
+ val("aux3_slush"),val("ddp_buf0_unused"),val("ddp_buf1_unused"),
+ val("ddp_main_unused"));
+
+
+
+
+
+ PR(" DDP: DDPOFF ActBuf IndOut WaitFrag Rx2Tx BufInf\n");
+ PR(" %u %u %u %u %u %u\n",
+ val("ddp_off"),val("ddp_active_buf"),val("ddp_indicate_out"),
+ val("ddp_wait_frag"),val("ddp_rx2tx"),val("ddp_buf_inf")
+ );
+
+
+
+
+
+ PR(" Ind PshfEn PushDis Flush NoInvalidate\n");
+ PR(" Buf0: %u %u %u %u %u\n",
+ val("ddp_buf0_indicate"),
+ val("ddp_pshf_enable_0"), val("ddp_push_disable_0"),
+ val("ddp_buf0_flush"), val("ddp_psh_no_invalidate0")
+ );
+ PR(" Buf1: %u %u %u %u %u\n",
+ val("ddp_buf1_indicate"),
+ val("ddp_pshf_enable_1"), val("ddp_push_disable_1"),
+ val("ddp_buf1_flush"), val("ddp_psh_no_invalidate1")
+ );
+
+
+
+
+
+
+
+
+
+
+ PR(" Valid Offset Length Tag\n");
+ PR(" Buf0: %u 0x%6.6x 0x%6.6x 0x%8.8x",
+ val("ddp_buf0_valid"),val("rx_ddp_buf0_offset"),
+ val("rx_ddp_buf0_len"),val("rx_ddp_buf0_tag")
+
+
+ );
+ if (0==val("ddp_off") && 1==val("ddp_buf0_valid") && 0==val("ddp_active_buf")) {
+ PR(" (Active)\n");
+ } else {
+ PR(" (Inactive)\n");
+ }
+
+
+ PR(" Buf1: %u 0x%6.6x 0x%6.6x 0x%8.8x",
+ val("ddp_buf1_valid"),val("rx_ddp_buf1_offset"),
+ val("rx_ddp_buf1_len"),val("rx_ddp_buf1_tag")
+
+
+ );
+
+
+ if (0==val("ddp_off") && 1==val("ddp_buf1_valid") && 1==val("ddp_active_buf")) {
+ PR(" (Active)\n");
+ } else {
+ PR(" (Inactive)\n");
+ }
+
+
+
+
+
+
+ if (1==val("ddp_off")) {
+ PR(" DDP is off (which also disables indicate)\n");
+ } else if (1==val("ddp_buf0_valid") && 0==val("ddp_active_buf")) {
+ PR(" Data being DDP'ed to buf 0, ");
+ PR("which has %u - %u = %u bytes of space left\n",
+ val("rx_ddp_buf0_len"),val("rx_ddp_buf0_offset"),
+ val("rx_ddp_buf0_len")-val("rx_ddp_buf0_offset")
+ );
+ if (1==val("ddp_buf1_valid")) {
+ PR(" And buf1, which is also valid, has %u - %u = %u bytes of space left\n",
+ val("rx_ddp_buf1_len"),val("rx_ddp_buf1_offset"),
+ val("rx_ddp_buf1_len")-val("rx_ddp_buf1_offset")
+ );
+ }
+ } else if (1==val("ddp_buf1_valid") && 1==val("ddp_active_buf")) {
+ PR(" Data being DDP'ed to buf 1, ");
+ PR("which has %u - %u = %u bytes of space left\n",
+ val("rx_ddp_buf1_len"),val("rx_ddp_buf1_offset"),
+ val("rx_ddp_buf1_len")-val("rx_ddp_buf1_offset")
+ );
+ if (1==val("ddp_buf0_valid")) {
+ PR(" And buf0, which is also valid, has %u - %u = %u bytes of space left\n",
+ val("rx_ddp_buf0_len"),val("rx_ddp_buf0_offset"),
+ val("rx_ddp_buf0_len")-val("rx_ddp_buf0_offset")
+ );
+ }
+ } else if (0==val("ddp_buf0_valid") && 1==val("ddp_buf1_valid") && 0==val("ddp_active_buf")) {
+ PR(" !!! Invalid DDP buf 1 valid, but buf 0 active.\n");
+ } else if (1==val("ddp_buf0_valid") && 0==val("ddp_buf1_valid") && 1==val("ddp_active_buf")) {
+ PR(" !!! Invalid DDP buf 0 valid, but buf 1 active.\n");
+ } else {
+ PR(" DDP is enabled, but no buffers are active && valid.\n");
+
+
+
+
+ if (0==val("ddp_indicate_out")) {
+ if (0==val("ddp_buf0_indicate") && 0==val("ddp_buf1_indicate")) {
+ PR(" 0 length Indicate buffers ");
+ if (0==val("rx_hdr_offset")) {
+ PR("will cause new data to be held in PMRX.\n");
+ } else {
+ PR("is causing %u bytes to be held in PMRX\n",
+ val("rx_hdr_offset"));
+ }
+ } else {
+ PR(" Data being indicated to host\n");
+ }
+ } else if (1==val("ddp_indicate_out")) {
+ PR(" Indicate is off, which ");
+ if (0==val("rx_hdr_offset")) {
+ PR("will cause new data to be held in PMRX.\n");
+ } else {
+ PR("is causing %u bytes to be held in PMRX\n",
+ val("rx_hdr_offset"));
+ }
+ }
+ }
+
+
+
+
+}
diff --git a/usr.sbin/cxgbetool/tcbshowt6.c b/usr.sbin/cxgbetool/tcbshowt6.c
new file mode 100644
index 000000000000..2aa6a6afab56
--- /dev/null
+++ b/usr.sbin/cxgbetool/tcbshowt6.c
@@ -0,0 +1,443 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2018 Chelsio Communications, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/* Auto-generated file. Avoid direct editing. */
+/* Edits will be lost when file regenerated. */
+#include <stdio.h>
+#include "tcb_common.h"
+
+void t6_display_tcb_aux_0 (_TCBVAR *tvp, int aux)
+{
+
+
+
+
+
+
+
+ PR("STATE:\n");
+ PR(" %-12s (%-2u), %s, lock_tid %u, rss_fw %u\n",
+ spr_tcp_state(val("t_state")),
+ val("t_state"),
+ spr_ip_version(val("ip_version")),
+ val("lock_tid"),
+ val("rss_fw")
+ );
+ PR(" l2t_ix 0x%x, smac sel 0x%x, tos 0x%x\n",
+ val("l2t_ix"),
+ val("smac_sel"),
+ val("tos")
+ );
+ PR(" maxseg %u, recv_scaleflag %u, recv_tstmp %u, recv_sack %u\n",
+ val("t_maxseg"), val("recv_scale"),
+ val("recv_tstmp"), val("recv_sack"));
+
+
+ PR("TIMERS:\n"); /* **************************************** */
+ PR(" timer %u, dack_timer %u\n",
+ val("timer"), val("dack_timer"));
+ PR(" mod_schd: tx: %u, rx: %u, reason 0x%1x\n",
+ val("mod_schd_tx"),
+ val("mod_schd_rx"),
+ ((val("mod_schd_reason2")<<2) | (val("mod_schd_reason1")<<1) |
+ val("mod_schd_reason0"))
+ );
+
+
+ PR(" max_rt %-2u, rxtshift %u, keepalive %u\n",
+ val("max_rt"), val("t_rxtshift"),
+ val("keepalive"));
+ PR(" timestamp_offset 0x%x, timestamp 0x%x\n",
+ val("timestamp_offset"),val("timestamp"));
+
+
+ PR(" t_rtt_ts_recent_age %u t_rttseq_recent %u\n",
+ val("t_rtt_ts_recent_age"), val("t_rtseq_recent"));
+ PR(" t_srtt %u, t_rttvar %u\n",
+ val("t_srtt"),val("t_rttvar"));
+
+
+
+
+
+
+ PR("TRANSMIT BUFFER:\n"); /* *************************** */
+ PR(" snd_una %u, snd_nxt %u, snd_max %u, tx_max %u\n",
+ val("snd_una"),val("snd_nxt"),
+ val("snd_max"),val("tx_max"));
+ PR(" core_fin %u, tx_hdr_offset %u\n",
+ val("core_fin"), SEQ_SUB(val("tx_max"),val("snd_una"))
+ );
+ if (val("recv_scale") && !val("active_open")) {
+ PR(" rcv_adv %-5u << %-2u == %u (recv_scaleflag %u rcv_scale %u active open %u)\n",
+ val("rcv_adv"), val("rcv_scale"),
+ val("rcv_adv") << val("rcv_scale"),
+ val("recv_scale"), val("rcv_scale"), val("active_open"));
+ } else {
+ PR(" rcv_adv %-5u (rcv_scale %-2u recv_scaleflag %u active_open %u)\n",
+ val("rcv_adv"), val("rcv_scale"),
+ val("recv_scale"), val("active_open"));
+ }
+
+ PR(" snd_cwnd %-5u snd_ssthresh %u snd_rec %u\n",
+ val("snd_cwnd") , val("snd_ssthresh"), val("snd_rec")
+ );
+
+
+
+
+ PR(" cctrl: sel %s, ecn %u, ece %u, cwr %u, rfr %u\n",
+ spr_cctrl_sel(val("cctrl_sel0"),val("cctrl_sel1")),
+ val("cctrl_ecn"), val("cctrl_ece"), val("cctrl_cwr"),
+ val("cctrl_rfr"));
+ PR(" t_dupacks %u, dupack_count_odd %u, fast_recovery %u\n",
+ val("t_dupacks"), val("dupack_count_odd"),val("fast_recovery"));
+ PR(" core_more %u, core_urg, %u core_push %u,",
+ val("core_more"),val("core_urg"),val("core_push"));
+ PR(" core_flush %u\n",val("core_flush"));
+ PR(" nagle %u, ssws_disable %u, turbo %u,",
+ val("nagle"), val("ssws_disabled"), val("turbo"));
+ PR(" tx_pdu_out %u\n",val("tx_pdu_out"));
+ PR(" tx_pace_auto %u, tx_pace_fixed %u, tx_queue %u",
+ val("tx_pace_auto"),val("tx_pace_fixed"),val("tx_queue"));
+
+
+ PR(" tx_quiesce %u\n",val("tx_quiesce"));
+ PR(" tx_channel %u, tx_channel1 %u, tx_channel0 %u\n",
+ val("tx_channel"),
+ (val("tx_channel")>>1)&1,
+ val("tx_channel")&1
+ );
+
+
+
+
+ PR(" tx_hdr_ptr 0x%-6x tx_last_ptr 0x%-6x tx_compact %u\n",
+ val("tx_hdr_ptr"),val("tx_last_ptr"),val("tx_compact"));
+
+
+
+
+ PR("RECEIVE BUFFER:\n"); /* *************************** */
+ PR(" last_ack_sent %-10u rx_compact %u\n",
+ val("ts_last_ack_sent"),val("rx_compact"));
+ PR(" rcv_nxt %-10u hdr_off %-10u\n",
+ val("rcv_nxt"), val("rx_hdr_offset"));
+ PR(" frag0_idx %-10u length %-10u frag0_ptr 0x%-8x\n",
+ val("rx_frag0_start_idx"),
+ val("rx_frag0_len"),
+ val("rx_ptr"));
+ PR(" frag1_idx %-10u length %-10u ",
+ val("rx_frag1_start_idx_offset"),
+ val("rx_frag1_len"));
+
+
+
+
+ if (val("ulp_type")!=4) { /* RDMA has FRAG1 idx && len, but no ptr? Should I not display frag1 at all? */
+ PR("frag1_ptr 0x%-8x\n",val("rx_frag1_ptr"));
+ } else {
+ PR("\n");
+ }
+
+
+ if (val("ulp_type") != 9 && val("ulp_type")!=8 && val("ulp_type") !=6 &&
+ val("ulp_type") != 5 && val("ulp_type") !=4) {
+ PR(" frag2_idx %-10u length %-10u frag2_ptr 0x%-8x\n",
+ val("rx_frag2_start_idx_offset"),
+ val("rx_frag2_len"),
+ val("rx_frag2_ptr"));
+ PR(" frag3_idx %-10u length %-10u frag3_ptr 0x%-8x\n",
+ val("rx_frag3_start_idx_offset"),
+ val("rx_frag3_len"),
+ val("rx_frag3_ptr"));
+ }
+
+
+
+
+
+
+ PR(" peer_fin %u, rx_pdu_out %u, pdu_len %u\n",
+ val("peer_fin"),val("rx_pdu_out"), val("pdu_len"));
+
+
+
+
+ if (val("recv_scale")) {
+ PR(" rcv_wnd %u >> snd_scale %u == %u, recv_scaleflag = %u\n",
+ val("rcv_wnd"), val("snd_scale"),
+ val("rcv_wnd") >> val("snd_scale"),
+ val("recv_scale"));
+ } else {
+ PR(" rcv_wnd %u. (snd_scale %u, recv_scaleflag = %u)\n",
+ val("rcv_wnd"), val("snd_scale"),
+ val("recv_scale"));
+ }
+
+
+
+
+ PR(" dack_mss %u dack %u, dack_not_acked: %u\n",
+ val("dack_mss"),val("dack"),val("dack_not_acked"));
+ PR(" rcv_coal %u rcv_co_psh %u rcv_co_last_psh %u heart %u\n",
+ val("rcv_coalesce_enable"),
+ val("rcv_coalesce_push"),
+ val("rcv_coalesce_last_psh"),
+ val("rcv_coalesce_heartbeat"));
+
+ PR(" rx_channel %u rx_quiesce %u rx_flow_ctrl_dis %u,",
+ val("rx_channel"), val("rx_quiesce"),
+ val("rx_flow_control_disable"));
+ PR(" rx_flow_ctrl_ddp %u\n",
+ val("rx_flow_control_ddp"));
+
+
+ PR("MISCELANEOUS:\n"); /* *************************** */
+ PR(" pend_ctl: 0x%1x, core_bypass: 0x%x, main_slush: 0x%x\n",
+ ((val("pend_ctl2")<<2) | (val("pend_ctl1")<<1) |
+ val("pend_ctl0")),
+ val("core_bypass"),val("main_slush"));
+ PR(" Migrating %u, ask_mode %u, non_offload %u, rss_info %u\n",
+ val("migrating"),
+ val("ask_mode"), val("non_offload"), val("rss_info"));
+ PR(" ULP: ulp_type %u (%s), ulp_raw %u",
+ val("ulp_type"), spr_ulp_type(val("ulp_type")),
+ val("ulp_raw"));
+
+
+ if (aux==1) {
+ PR(", ulp_ext %u",val("ulp_ext"));
+ }
+ PR("\n");
+
+
+
+
+ PR(" RDMA: error %u, flm_err %u\n",
+ val("rdma_error"), val("rdma_flm_error"));
+
+
+}
+void t6_display_tcb_aux_1 (_TCBVAR *tvp, int aux)
+{
+
+
+
+ PR(" aux1_slush0: 0x%x aux1_slush1 0x%x\n",
+ val("aux1_slush0"), val("aux1_slush1"));
+ PR(" pdu_hdr_len %u\n",val("pdu_hdr_len"));
+
+
+
+}
+void t6_display_tcb_aux_2 (_TCBVAR *tvp, int aux)
+{
+
+
+
+
+ PR(" qp_id %u, pd_id %u, stag %u\n",
+ val("qp_id"), val("pd_id"),val("stag"));
+ PR(" irs_ulp %u, iss_ulp %u\n",
+ val("irs_ulp"),val("iss_ulp"));
+ PR(" tx_pdu_len %u\n",
+ val("tx_pdu_len"));
+ PR(" cq_idx_sq %u, cq_idx_rq %u\n",
+ val("cq_idx_sq"),val("cq_idx_rq"));
+ PR(" rq_start %u, rq_MSN %u, rq_max_off %u, rq_write_ptr %u\n",
+ val("rq_start"),val("rq_msn"),val("rq_max_offset"),
+ val("rq_write_ptr"));
+ PR(" L_valid %u, rdmap opcode %u\n",
+ val("ord_l_bit_vld"),val("rdmap_opcode"));
+ PR(" tx_flush: %u, tx_oos_rxmt %u, tx_oos_txmt %u\n",
+ val("tx_flush"),val("tx_oos_rxmt"),val("tx_oos_txmt"));
+
+
+
+
+}
+void t6_display_tcb_aux_3 (_TCBVAR *tvp, int aux)
+{
+
+
+
+
+
+
+ PR(" aux3_slush: 0x%x, unused: buf0 0x%x, buf1: 0x%x\n",
+ val("aux3_slush"),val("ddp_buf0_unused"),val("ddp_buf1_unused"));
+
+
+ PR(" ind_full: %u, tls_key_mode: %u\n",
+ val("ddp_indicate_fll"),val("tls_key_mode"));
+
+
+ PR(" DDP: DDPOFF ActBuf IndOut WaitFrag Rx2Tx BufInf\n");
+ PR(" %u %u %u %u %u %u\n",
+ val("ddp_off"),val("ddp_active_buf"),val("ddp_indicate_out"),
+ val("ddp_wait_frag"),val("ddp_rx2tx"),val("ddp_buf_inf")
+ );
+
+
+ PR(" Ind PshfEn PushDis Flush NoInvalidate\n");
+ PR(" Buf0: %u %u %u %u %u\n",
+ val("ddp_buf0_indicate"),
+ val("ddp_pshf_enable_0"), val("ddp_push_disable_0"),
+ val("ddp_buf0_flush"), val("ddp_psh_no_invalidate0")
+ );
+ PR(" Buf1: %u %u %u %u %u\n",
+ val("ddp_buf1_indicate"),
+ val("ddp_pshf_enable_1"), val("ddp_push_disable_1"),
+ val("ddp_buf1_flush"), val("ddp_psh_no_invalidate1")
+ );
+
+
+
+
+
+
+
+
+
+
+ PR(" Valid Offset Length Tag\n");
+ PR(" Buf0: %u 0x%6.6x 0x%6.6x 0x%8.8x",
+ val("ddp_buf0_valid"),val("rx_ddp_buf0_offset"),
+ val("rx_ddp_buf0_len"),val("rx_ddp_buf0_tag")
+
+
+ );
+ if (0==val("ddp_off") && 1==val("ddp_buf0_valid") && 0==val("ddp_active_buf")) {
+ PR(" (Active)\n");
+ } else {
+ PR(" (Inactive)\n");
+ }
+
+
+ PR(" Buf1: %u 0x%6.6x 0x%6.6x 0x%8.8x",
+ val("ddp_buf1_valid"),val("rx_ddp_buf1_offset"),
+ val("rx_ddp_buf1_len"),val("rx_ddp_buf1_tag")
+
+
+ );
+
+
+ if (0==val("ddp_off") && 1==val("ddp_buf1_valid") && 1==val("ddp_active_buf")) {
+ PR(" (Active)\n");
+ } else {
+ PR(" (Inactive)\n");
+ }
+
+
+
+
+
+
+ if (1==val("ddp_off")) {
+ PR(" DDP is off (which also disables indicate)\n");
+ } else if (1==val("ddp_buf0_valid") && 0==val("ddp_active_buf")) {
+ PR(" Data being DDP'ed to buf 0, ");
+ PR("which has %u - %u = %u bytes of space left\n",
+ val("rx_ddp_buf0_len"),val("rx_ddp_buf0_offset"),
+ val("rx_ddp_buf0_len")-val("rx_ddp_buf0_offset")
+ );
+ if (1==val("ddp_buf1_valid")) {
+ PR(" And buf1, which is also valid, has %u - %u = %u bytes of space left\n",
+ val("rx_ddp_buf1_len"),val("rx_ddp_buf1_offset"),
+ val("rx_ddp_buf1_len")-val("rx_ddp_buf1_offset")
+ );
+ }
+ } else if (1==val("ddp_buf1_valid") && 1==val("ddp_active_buf")) {
+ PR(" Data being DDP'ed to buf 1, ");
+ PR("which has %u - %u = %u bytes of space left\n",
+ val("rx_ddp_buf1_len"),val("rx_ddp_buf1_offset"),
+ val("rx_ddp_buf1_len")-val("rx_ddp_buf1_offset")
+ );
+ if (1==val("ddp_buf0_valid")) {
+ PR(" And buf0, which is also valid, has %u - %u = %u bytes of space left\n",
+ val("rx_ddp_buf0_len"),val("rx_ddp_buf0_offset"),
+ val("rx_ddp_buf0_len")-val("rx_ddp_buf0_offset")
+ );
+ }
+ } else if (0==val("ddp_buf0_valid") && 1==val("ddp_buf1_valid") && 0==val("ddp_active_buf")) {
+ PR(" !!! Invalid DDP buf 1 valid, but buf 0 active.\n");
+ } else if (1==val("ddp_buf0_valid") && 0==val("ddp_buf1_valid") && 1==val("ddp_active_buf")) {
+ PR(" !!! Invalid DDP buf 0 valid, but buf 1 active.\n");
+ } else {
+ PR(" DDP is enabled, but no buffers are active && valid.\n");
+
+
+
+
+ if (0==val("ddp_indicate_out")) {
+ if (0==val("ddp_buf0_indicate") && 0==val("ddp_buf1_indicate")) {
+ PR(" 0 length Indicate buffers ");
+ if (0==val("rx_hdr_offset")) {
+ PR("will cause new data to be held in PMRX.\n");
+ } else {
+ PR("is causing %u bytes to be held in PMRX\n",
+ val("rx_hdr_offset"));
+ }
+ } else {
+ PR(" Data being indicated to host\n");
+ }
+ } else if (1==val("ddp_indicate_out")) {
+ PR(" Indicate is off, which ");
+ if (0==val("rx_hdr_offset")) {
+ PR("will cause new data to be held in PMRX.\n");
+ } else {
+ PR("is causing %u bytes to be held in PMRX\n",
+ val("rx_hdr_offset"));
+ }
+ }
+ }
+
+
+
+
+}
+void t6_display_tcb_aux_4 (_TCBVAR *tvp, int aux)
+{
+
+
+
+ PR("TLS: offset: 0x%6.6x, len:0x%6.6x, flags: 0x%4.4x\n",
+ val("rx_tls_buf_offset"),val("rx_tls_buf_len"),
+ val("rx_tls_flags"));
+ PR(" seq: 0x%llx \n",val64("rx_tls_seq"));
+ PR(" tag: 0x%8.8x, key:0x%8.8x\n",
+ val("rx_tls_buf_tag"),val("rx_tls_key_tag"));
+
+
+
+
+}