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