1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2017 Cavium, Inc 3 */ 4 5 #ifndef __OCTEONTX_PKI_VAR_H__ 6 #define __OCTEONTX_PKI_VAR_H__ 7 8 #include <rte_byteorder.h> 9 10 #define OCTTX_PACKET_WQE_SKIP 128 11 #define OCTTX_PACKET_FIRST_SKIP 240 12 #define OCTTX_PACKET_LATER_SKIP 128 13 14 /* WQE descriptor */ 15 typedef union octtx_wqe_s { 16 uint64_t w[6]; 17 18 struct { 19 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN 20 struct { 21 uint64_t pknd : 6; 22 uint64_t rsvd0 : 10; 23 uint64_t style : 8; 24 uint64_t bufs : 8; 25 uint64_t chan : 12; 26 uint64_t apad : 3; 27 uint64_t rsvd1 : 1; 28 uint64_t aura : 12; 29 uint64_t rsvd2 : 4; 30 } w0; 31 32 struct { 33 uint64_t tag : 32; 34 uint64_t tt : 2; 35 uint64_t grp : 10; 36 uint64_t rsvd0 : 2; 37 uint64_t rsvd1 : 2; 38 uint64_t len : 16; 39 } w1; 40 41 struct { 42 uint64_t op_code : 8; 43 uint64_t err_lev : 3; 44 uint64_t raw : 1; 45 uint64_t l2m : 1; 46 uint64_t l2b : 1; 47 uint64_t l3m : 1; 48 uint64_t l3b : 1; 49 uint64_t l3fr : 1; 50 uint64_t pf1 : 1; 51 uint64_t pf2 : 1; 52 uint64_t pf3 : 1; 53 uint64_t pf4 : 1; 54 uint64_t sh : 1; 55 uint64_t vs : 1; 56 uint64_t vv : 1; 57 uint64_t rsvd0 : 8; 58 uint64_t lae : 1; 59 uint64_t lbty : 5; 60 uint64_t lcty : 5; 61 uint64_t ldty : 5; 62 uint64_t lety : 5; 63 uint64_t lfty : 5; 64 uint64_t lgty : 5; 65 uint64_t sw : 1; 66 } w2; 67 68 struct { 69 uint64_t addr; /* Byte addr of start-of-pkt */ 70 } w3; 71 72 struct { 73 uint64_t laptr : 8; 74 uint64_t lbptr : 8; 75 uint64_t lcptr : 8; 76 uint64_t ldprt : 8; 77 uint64_t leptr : 8; 78 uint64_t lfptr : 8; 79 uint64_t lgptr : 8; 80 uint64_t vlptr : 8; 81 } w4; 82 83 struct { 84 uint64_t rsvd0 : 47; 85 uint64_t dwd : 1; 86 uint64_t size : 16; 87 } w5; 88 #else 89 struct { 90 uint64_t rsvd2 : 4; 91 uint64_t aura : 12; 92 uint64_t rsvd1 : 1; 93 uint64_t apad : 3; 94 uint64_t chan : 12; 95 uint64_t bufs : 8; 96 uint64_t style : 8; 97 uint64_t rsvd0 : 10; 98 uint64_t pknd : 6; 99 } w0; 100 101 struct { 102 uint64_t len : 16; 103 uint64_t rsvd1 : 2; 104 uint64_t rsvd0 : 2; 105 uint64_t grp : 10; 106 uint64_t tt : 2; 107 uint64_t tag : 32; 108 } w1; 109 110 struct { 111 uint64_t sw : 1; 112 uint64_t lgty : 5; 113 uint64_t lfty : 5; 114 uint64_t lety : 5; 115 uint64_t ldty : 5; 116 uint64_t lcty : 5; 117 uint64_t lbty : 5; 118 uint64_t lae : 1; 119 uint64_t rsvd0 : 8; 120 uint64_t vv : 1; 121 uint64_t vs : 1; 122 uint64_t sh : 1; 123 uint64_t pf4 : 1; 124 uint64_t pf3 : 1; 125 uint64_t pf2 : 1; 126 uint64_t pf1 : 1; 127 uint64_t l3fr : 1; 128 uint64_t l3b : 1; 129 uint64_t l3m : 1; 130 uint64_t l2b : 1; 131 uint64_t l2m : 1; 132 uint64_t raw : 1; 133 uint64_t err_lev : 3; 134 uint64_t op_code : 8; 135 } w2; 136 137 struct { 138 uint64_t addr; /* Byte addr of start-of-pkt */ 139 } w3; 140 141 struct { 142 uint64_t vlptr : 8; 143 uint64_t lgptr : 8; 144 uint64_t lfptr : 8; 145 uint64_t leptr : 8; 146 uint64_t ldprt : 8; 147 uint64_t lcptr : 8; 148 uint64_t lbptr : 8; 149 uint64_t laptr : 8; 150 } w4; 151 #endif 152 } s; 153 154 } __rte_packed octtx_wqe_t; 155 156 enum occtx_pki_ltype_e { 157 OCCTX_PKI_LTYPE_NONE = 0, 158 OCCTX_PKI_LTYPE_ENET = 1, 159 OCCTX_PKI_LTYPE_VLAN = 2, 160 OCCTX_PKI_LTYPE_SNAP_PAYLD = 5, 161 OCCTX_PKI_LTYPE_ARP = 6, 162 OCCTX_PKI_LTYPE_RARP = 7, 163 OCCTX_PKI_LTYPE_IP4 = 8, 164 OCCTX_PKI_LTYPE_IP4_OPT = 9, 165 OCCTX_PKI_LTYPE_IP6 = 0xa, 166 OCCTX_PKI_LTYPE_IP6_OPT = 0xb, 167 OCCTX_PKI_LTYPE_IPSEC_ESP = 0xc, 168 OCCTX_PKI_LTYPE_IPFRAG = 0xd, 169 OCCTX_PKI_LTYPE_IPCOMP = 0xe, 170 OCCTX_PKI_LTYPE_TCP = 0x10, 171 OCCTX_PKI_LTYPE_UDP = 0x11, 172 OCCTX_PKI_LTYPE_SCTP = 0x12, 173 OCCTX_PKI_LTYPE_UDP_VXLAN = 0x13, 174 OCCTX_PKI_LTYPE_GRE = 0x14, 175 OCCTX_PKI_LTYPE_NVGRE = 0x15, 176 OCCTX_PKI_LTYPE_GTP = 0x16, 177 OCCTX_PKI_LTYPE_UDP_GENEVE = 0x17, 178 OCCTX_PKI_LTYPE_SW28 = 0x1c, 179 OCCTX_PKI_LTYPE_SW29 = 0x1d, 180 OCCTX_PKI_LTYPE_SW30 = 0x1e, 181 OCCTX_PKI_LTYPE_SW31 = 0x1f, 182 OCCTX_PKI_LTYPE_LAST 183 }; 184 185 enum lc_type_e { 186 LC_NONE = OCCTX_PKI_LTYPE_NONE, 187 LC_IPV4 = OCCTX_PKI_LTYPE_IP4, 188 LC_IPV4_OPT = OCCTX_PKI_LTYPE_IP4_OPT, 189 LC_IPV6 = OCCTX_PKI_LTYPE_IP6, 190 LC_IPV6_OPT = OCCTX_PKI_LTYPE_IP6_OPT, 191 }; 192 193 enum le_type_e { 194 LE_NONE = OCCTX_PKI_LTYPE_NONE, 195 }; 196 197 enum lf_type_e { 198 LF_NONE = OCCTX_PKI_LTYPE_NONE, 199 LF_IPSEC_ESP = OCCTX_PKI_LTYPE_IPSEC_ESP, 200 LF_IPFRAG = OCCTX_PKI_LTYPE_IPFRAG, 201 LF_IPCOMP = OCCTX_PKI_LTYPE_IPCOMP, 202 LF_TCP = OCCTX_PKI_LTYPE_TCP, 203 LF_UDP = OCCTX_PKI_LTYPE_UDP, 204 LF_GRE = OCCTX_PKI_LTYPE_GRE, 205 LF_UDP_GENEVE = OCCTX_PKI_LTYPE_UDP_GENEVE, 206 LF_UDP_VXLAN = OCCTX_PKI_LTYPE_UDP_VXLAN, 207 LF_NVGRE = OCCTX_PKI_LTYPE_NVGRE, 208 }; 209 #endif /* __OCTEONTX_PKI_VAR_H__ */ 210