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