xref: /freebsd-src/usr.sbin/cxgbetool/tcb_common.h (revision b3e7694832e81d7a904a10f525f8797b753bf0d3)
1ae9b4017SNavdeep Parhar /*-
2*4d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
3ae9b4017SNavdeep Parhar  *
4ae9b4017SNavdeep Parhar  * Copyright (c) 2018 Chelsio Communications, Inc.
5ae9b4017SNavdeep Parhar  * All rights reserved.
6ae9b4017SNavdeep Parhar  *
7ae9b4017SNavdeep Parhar  * Redistribution and use in source and binary forms, with or without
8ae9b4017SNavdeep Parhar  * modification, are permitted provided that the following conditions
9ae9b4017SNavdeep Parhar  * are met:
10ae9b4017SNavdeep Parhar  * 1. Redistributions of source code must retain the above copyright
11ae9b4017SNavdeep Parhar  *    notice, this list of conditions and the following disclaimer.
12ae9b4017SNavdeep Parhar  * 2. Redistributions in binary form must reproduce the above copyright
13ae9b4017SNavdeep Parhar  *    notice, this list of conditions and the following disclaimer in the
14ae9b4017SNavdeep Parhar  *    documentation and/or other materials provided with the distribution.
15ae9b4017SNavdeep Parhar  *
16ae9b4017SNavdeep Parhar  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17ae9b4017SNavdeep Parhar  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18ae9b4017SNavdeep Parhar  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19ae9b4017SNavdeep Parhar  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20ae9b4017SNavdeep Parhar  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21ae9b4017SNavdeep Parhar  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22ae9b4017SNavdeep Parhar  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23ae9b4017SNavdeep Parhar  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24ae9b4017SNavdeep Parhar  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25ae9b4017SNavdeep Parhar  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26ae9b4017SNavdeep Parhar  * SUCH DAMAGE.
27ae9b4017SNavdeep Parhar  *
28ae9b4017SNavdeep Parhar  */
29ae9b4017SNavdeep Parhar 
30ae9b4017SNavdeep Parhar #ifndef	__tcb_common_h
31ae9b4017SNavdeep Parhar #define	__tcb_common_h
32ae9b4017SNavdeep Parhar 
33ae9b4017SNavdeep Parhar /* ANSI C standard includes */
34ae9b4017SNavdeep Parhar #include        <assert.h>
35ae9b4017SNavdeep Parhar #include        <stdlib.h>
36ae9b4017SNavdeep Parhar #include        <string.h>
37ae9b4017SNavdeep Parhar #include        <ctype.h>
38ae9b4017SNavdeep Parhar #include        <stdio.h>
39ae9b4017SNavdeep Parhar #include        <stdarg.h>
40ae9b4017SNavdeep Parhar 
41ae9b4017SNavdeep Parhar 
42ae9b4017SNavdeep Parhar #ifndef FALSE
43ae9b4017SNavdeep Parhar #define FALSE 0
44ae9b4017SNavdeep Parhar #endif
45ae9b4017SNavdeep Parhar 
46ae9b4017SNavdeep Parhar #ifndef EOS
47ae9b4017SNavdeep Parhar #define EOS  '\0'
48ae9b4017SNavdeep Parhar #endif
49ae9b4017SNavdeep Parhar 
50ae9b4017SNavdeep Parhar #ifndef __variable_sizes
51ae9b4017SNavdeep Parhar 
52ae9b4017SNavdeep Parhar /* windows has _UI64_MAX.  C99 has ULLONG_MAX, but I don't compile
53ae9b4017SNavdeep Parhar with C99 for portability with windows, so the ui64 is a guess.
54ae9b4017SNavdeep Parhar I'll add an assert to cl_main to confirm these sizes are accurate.
55ae9b4017SNavdeep Parhar */
56ae9b4017SNavdeep Parhar #ifdef _UI64_MAX   /* windows */
57ae9b4017SNavdeep Parhar #if   (_UI64_MAX ==  0xFFFFFFFFFFFFFFFF)
58ae9b4017SNavdeep Parhar typedef __int64                      si64;
59ae9b4017SNavdeep Parhar typedef unsigned __int64             ui64;
60ae9b4017SNavdeep Parhar #endif
61ae9b4017SNavdeep Parhar #else  /*else of #ifdef _UI64_MAX */
62ae9b4017SNavdeep Parhar typedef long long int                si64;
63ae9b4017SNavdeep Parhar typedef unsigned long long int       ui64;
64ae9b4017SNavdeep Parhar #endif /*endif of #ifdef _UI64_MAX */
65ae9b4017SNavdeep Parhar #endif /* endif of #ifndef __variable_sizes */
66ae9b4017SNavdeep Parhar 
67ae9b4017SNavdeep Parhar 
68ae9b4017SNavdeep Parhar 
69ae9b4017SNavdeep Parhar 
70ae9b4017SNavdeep Parhar typedef struct tcb_var {
71ae9b4017SNavdeep Parhar   char *name;
72ae9b4017SNavdeep Parhar   int   aux;
73ae9b4017SNavdeep Parhar   int   lo;
74ae9b4017SNavdeep Parhar   int   hi;
75ae9b4017SNavdeep Parhar 
76ae9b4017SNavdeep Parhar   char *faka;
77ae9b4017SNavdeep Parhar   int  flo;
78ae9b4017SNavdeep Parhar   int  fhi;
79ae9b4017SNavdeep Parhar 
80ae9b4017SNavdeep Parhar   char *aka;
81ae9b4017SNavdeep Parhar 
82ae9b4017SNavdeep Parhar   int   comp;
83ae9b4017SNavdeep Parhar 
84ae9b4017SNavdeep Parhar   char *desc;
85ae9b4017SNavdeep Parhar   char *akadesc;
86ae9b4017SNavdeep Parhar 
87ae9b4017SNavdeep Parhar   ui64 rawval;
88ae9b4017SNavdeep Parhar   unsigned val;
89ae9b4017SNavdeep Parhar 
90ae9b4017SNavdeep Parhar } _TCBVAR;
91ae9b4017SNavdeep Parhar 
92ae9b4017SNavdeep Parhar 
93ae9b4017SNavdeep Parhar enum comp_types {
94ae9b4017SNavdeep Parhar 
95ae9b4017SNavdeep Parhar   COMP_NONE=0,
96ae9b4017SNavdeep Parhar   COMP_ULP,
97ae9b4017SNavdeep Parhar   COMP_TX_MAX,
98ae9b4017SNavdeep Parhar   COMP_RCV_NXT,
99ae9b4017SNavdeep Parhar   COMP_PTR,
100ae9b4017SNavdeep Parhar   COMP_LEN,
101ae9b4017SNavdeep Parhar 
102ae9b4017SNavdeep Parhar };
103ae9b4017SNavdeep Parhar 
104ae9b4017SNavdeep Parhar 
105ae9b4017SNavdeep Parhar enum tidtypes {
106ae9b4017SNavdeep Parhar   TIDTYPE_TCB=0,
107ae9b4017SNavdeep Parhar   TIDTYPE_SCB=1,
108ae9b4017SNavdeep Parhar   TIDTYPE_FCB=2,
109ae9b4017SNavdeep Parhar 
110ae9b4017SNavdeep Parhar };
111ae9b4017SNavdeep Parhar 
112ae9b4017SNavdeep Parhar 
113ae9b4017SNavdeep Parhar enum prntstyls {
114ae9b4017SNavdeep Parhar   PRNTSTYL_VERBOSE=0,
115ae9b4017SNavdeep Parhar   PRNTSTYL_LIST=1,
116ae9b4017SNavdeep Parhar   PRNTSTYL_COMP=2,
117ae9b4017SNavdeep Parhar   PRNTSTYL_RAW=3,
118ae9b4017SNavdeep Parhar 
119ae9b4017SNavdeep Parhar };
120ae9b4017SNavdeep Parhar 
121ae9b4017SNavdeep Parhar 
122ae9b4017SNavdeep Parhar /* from tp/src/tp.h */
123ae9b4017SNavdeep Parhar #define PM_MODE_PASS  0
124ae9b4017SNavdeep Parhar #define PM_MODE_DDP   1
125ae9b4017SNavdeep Parhar #define PM_MODE_ISCSI 2
126ae9b4017SNavdeep Parhar #define PM_MODE_IWARP 3
127ae9b4017SNavdeep Parhar #define PM_MODE_RDDP  4
128ae9b4017SNavdeep Parhar #define PM_MODE_IANDP 5
129ae9b4017SNavdeep Parhar #define PM_MODE_FCOE  6
130ae9b4017SNavdeep Parhar #define PM_MODE_USER  7
131ae9b4017SNavdeep Parhar #define PM_MODE_TLS   8
132ae9b4017SNavdeep Parhar #define PM_MODE_DTLS  9
133ae9b4017SNavdeep Parhar 
134ae9b4017SNavdeep Parhar 
135ae9b4017SNavdeep Parhar 
136ae9b4017SNavdeep Parhar #define SEQ_ADD(a,b)    (((a)+(b)) & 0xFFFFFFFF)
137ae9b4017SNavdeep Parhar #define SEQ_SUB(a,b)    (((a)-(b)) & 0xFFFFFFFF)
138ae9b4017SNavdeep Parhar 
139ae9b4017SNavdeep Parhar ///* functions needed by the tcbshowtN.c code */
140ae9b4017SNavdeep Parhar extern unsigned val(char *name);
141ae9b4017SNavdeep Parhar extern ui64 val64(char *name);
142ae9b4017SNavdeep Parhar extern void PR(char *fmt, ...);
143ae9b4017SNavdeep Parhar extern char *spr_tcp_state(unsigned state);
144ae9b4017SNavdeep Parhar extern char *spr_ip_version(unsigned ipver);
145ae9b4017SNavdeep Parhar extern char *spr_cctrl_sel(unsigned cctrl_sel0,unsigned cctrl_sel1);
146ae9b4017SNavdeep Parhar extern char *spr_ulp_type(unsigned ulp_type);
147ae9b4017SNavdeep Parhar 
148ae9b4017SNavdeep Parhar 
149ae9b4017SNavdeep Parhar extern unsigned parse_tcb( _TCBVAR *base_tvp, unsigned char *buf);
150ae9b4017SNavdeep Parhar extern void display_tcb(_TCBVAR *tvp,unsigned char *buf,int aux);
151ae9b4017SNavdeep Parhar extern void parse_n_display_xcb(unsigned char *buf);
152ae9b4017SNavdeep Parhar 
153ae9b4017SNavdeep Parhar extern void swizzle_tcb(unsigned char *buf);
154ae9b4017SNavdeep Parhar extern void  set_tidtype(unsigned int tidtype);
155ae9b4017SNavdeep Parhar extern void set_tcb_info(unsigned int tidtype, unsigned int cardtype);
156ae9b4017SNavdeep Parhar extern void set_print_style(unsigned int prntstyl);
157ae9b4017SNavdeep Parhar 
158ae9b4017SNavdeep Parhar #endif /* __tcb_common_h */
159