1
2
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_MAXREGVAL 496
12#define OCTTX_PACKET_FIRST_SKIP_MAXLEN 512
13#define OCTTX_PACKET_FIRST_SKIP_ADJUST(x) \
14 (RTE_MIN(x, OCTTX_PACKET_FIRST_SKIP_MAXREGVAL))
15#define OCTTX_PACKET_FIRST_SKIP_SUM(p) \
16 (OCTTX_PACKET_WQE_SKIP \
17 + rte_pktmbuf_priv_size(p) \
18 + RTE_PKTMBUF_HEADROOM)
19#define OCTTX_PACKET_FIRST_SKIP(p) \
20 OCTTX_PACKET_FIRST_SKIP_ADJUST(OCTTX_PACKET_FIRST_SKIP_SUM(p))
21#define OCTTX_PACKET_LATER_SKIP 128
22
23
24typedef union octtx_wqe_s {
25 uint64_t w[6];
26
27 struct {
28#if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
29 struct {
30 uint64_t pknd : 6;
31 uint64_t rsvd0 : 10;
32 uint64_t style : 8;
33 uint64_t bufs : 8;
34 uint64_t chan : 12;
35 uint64_t apad : 3;
36 uint64_t rsvd1 : 1;
37 uint64_t aura : 12;
38 uint64_t rsvd2 : 4;
39 } w0;
40
41 struct {
42 uint64_t tag : 32;
43 uint64_t tt : 2;
44 uint64_t grp : 10;
45 uint64_t rsvd0 : 2;
46 uint64_t rsvd1 : 2;
47 uint64_t len : 16;
48 } w1;
49
50 struct {
51 uint64_t op_code : 8;
52 uint64_t err_lev : 3;
53 uint64_t raw : 1;
54 uint64_t l2m : 1;
55 uint64_t l2b : 1;
56 uint64_t l3m : 1;
57 uint64_t l3b : 1;
58 uint64_t l3fr : 1;
59 uint64_t pf1 : 1;
60 uint64_t pf2 : 1;
61 uint64_t pf3 : 1;
62 uint64_t pf4 : 1;
63 uint64_t sh : 1;
64 uint64_t vs : 1;
65 uint64_t vv : 1;
66 uint64_t rsvd0 : 8;
67 uint64_t lae : 1;
68 uint64_t lbty : 5;
69 uint64_t lcty : 5;
70 uint64_t ldty : 5;
71 uint64_t lety : 5;
72 uint64_t lfty : 5;
73 uint64_t lgty : 5;
74 uint64_t sw : 1;
75 } w2;
76
77 struct {
78 uint64_t addr;
79 } w3;
80
81 struct {
82 uint64_t laptr : 8;
83 uint64_t lbptr : 8;
84 uint64_t lcptr : 8;
85 uint64_t ldprt : 8;
86 uint64_t leptr : 8;
87 uint64_t lfptr : 8;
88 uint64_t lgptr : 8;
89 uint64_t vlptr : 8;
90 } w4;
91
92 struct {
93 uint64_t rsvd0 : 47;
94 uint64_t dwd : 1;
95 uint64_t size : 16;
96 } w5;
97#else
98 struct {
99 uint64_t rsvd2 : 4;
100 uint64_t aura : 12;
101 uint64_t rsvd1 : 1;
102 uint64_t apad : 3;
103 uint64_t chan : 12;
104 uint64_t bufs : 8;
105 uint64_t style : 8;
106 uint64_t rsvd0 : 10;
107 uint64_t pknd : 6;
108 } w0;
109
110 struct {
111 uint64_t len : 16;
112 uint64_t rsvd1 : 2;
113 uint64_t rsvd0 : 2;
114 uint64_t grp : 10;
115 uint64_t tt : 2;
116 uint64_t tag : 32;
117 } w1;
118
119 struct {
120 uint64_t sw : 1;
121 uint64_t lgty : 5;
122 uint64_t lfty : 5;
123 uint64_t lety : 5;
124 uint64_t ldty : 5;
125 uint64_t lcty : 5;
126 uint64_t lbty : 5;
127 uint64_t lae : 1;
128 uint64_t rsvd0 : 8;
129 uint64_t vv : 1;
130 uint64_t vs : 1;
131 uint64_t sh : 1;
132 uint64_t pf4 : 1;
133 uint64_t pf3 : 1;
134 uint64_t pf2 : 1;
135 uint64_t pf1 : 1;
136 uint64_t l3fr : 1;
137 uint64_t l3b : 1;
138 uint64_t l3m : 1;
139 uint64_t l2b : 1;
140 uint64_t l2m : 1;
141 uint64_t raw : 1;
142 uint64_t err_lev : 3;
143 uint64_t op_code : 8;
144 } w2;
145
146 struct {
147 uint64_t addr;
148 } w3;
149
150 struct {
151 uint64_t vlptr : 8;
152 uint64_t lgptr : 8;
153 uint64_t lfptr : 8;
154 uint64_t leptr : 8;
155 uint64_t ldprt : 8;
156 uint64_t lcptr : 8;
157 uint64_t lbptr : 8;
158 uint64_t laptr : 8;
159 } w4;
160#endif
161 } s;
162
163} __rte_packed octtx_wqe_t;
164
165enum occtx_pki_ltype_e {
166 OCCTX_PKI_LTYPE_NONE = 0,
167 OCCTX_PKI_LTYPE_ENET = 1,
168 OCCTX_PKI_LTYPE_VLAN = 2,
169 OCCTX_PKI_LTYPE_SNAP_PAYLD = 5,
170 OCCTX_PKI_LTYPE_ARP = 6,
171 OCCTX_PKI_LTYPE_RARP = 7,
172 OCCTX_PKI_LTYPE_IP4 = 8,
173 OCCTX_PKI_LTYPE_IP4_OPT = 9,
174 OCCTX_PKI_LTYPE_IP6 = 0xa,
175 OCCTX_PKI_LTYPE_IP6_OPT = 0xb,
176 OCCTX_PKI_LTYPE_IPSEC_ESP = 0xc,
177 OCCTX_PKI_LTYPE_IPFRAG = 0xd,
178 OCCTX_PKI_LTYPE_IPCOMP = 0xe,
179 OCCTX_PKI_LTYPE_TCP = 0x10,
180 OCCTX_PKI_LTYPE_UDP = 0x11,
181 OCCTX_PKI_LTYPE_SCTP = 0x12,
182 OCCTX_PKI_LTYPE_UDP_VXLAN = 0x13,
183 OCCTX_PKI_LTYPE_GRE = 0x14,
184 OCCTX_PKI_LTYPE_NVGRE = 0x15,
185 OCCTX_PKI_LTYPE_GTP = 0x16,
186 OCCTX_PKI_LTYPE_UDP_GENEVE = 0x17,
187 OCCTX_PKI_LTYPE_SW28 = 0x1c,
188 OCCTX_PKI_LTYPE_SW29 = 0x1d,
189 OCCTX_PKI_LTYPE_SW30 = 0x1e,
190 OCCTX_PKI_LTYPE_SW31 = 0x1f,
191 OCCTX_PKI_LTYPE_LAST
192};
193
194enum lc_type_e {
195 LC_NONE = OCCTX_PKI_LTYPE_NONE,
196 LC_IPV4 = OCCTX_PKI_LTYPE_IP4,
197 LC_IPV4_OPT = OCCTX_PKI_LTYPE_IP4_OPT,
198 LC_IPV6 = OCCTX_PKI_LTYPE_IP6,
199 LC_IPV6_OPT = OCCTX_PKI_LTYPE_IP6_OPT,
200};
201
202enum le_type_e {
203 LE_NONE = OCCTX_PKI_LTYPE_NONE,
204};
205
206enum lf_type_e {
207 LF_NONE = OCCTX_PKI_LTYPE_NONE,
208 LF_IPSEC_ESP = OCCTX_PKI_LTYPE_IPSEC_ESP,
209 LF_IPFRAG = OCCTX_PKI_LTYPE_IPFRAG,
210 LF_IPCOMP = OCCTX_PKI_LTYPE_IPCOMP,
211 LF_TCP = OCCTX_PKI_LTYPE_TCP,
212 LF_UDP = OCCTX_PKI_LTYPE_UDP,
213 LF_GRE = OCCTX_PKI_LTYPE_GRE,
214 LF_UDP_GENEVE = OCCTX_PKI_LTYPE_UDP_GENEVE,
215 LF_UDP_VXLAN = OCCTX_PKI_LTYPE_UDP_VXLAN,
216 LF_NVGRE = OCCTX_PKI_LTYPE_NVGRE,
217};
218
219
220typedef union octtx_pki_buflink_w0_u {
221 uint64_t v;
222 struct {
223 uint64_t size:16;
224 uint64_t rsvd1:15;
225 uint64_t invfree:1;
226
227 uint64_t aura:16;
228 uint64_t sw:9;
229 uint64_t later_invfree:1;
230 uint64_t rsvd2:5;
231
232 uint64_t has_aura:1;
233 } s;
234} octtx_pki_buflink_w0_t;
235
236
237typedef union octtx_pki_buflink_w1_u {
238 uint64_t v;
239 struct {
240 uint64_t addr;
241 } s;
242} octtx_pki_buflink_w1_t;
243
244
245typedef struct octtx_pki_buflink_s {
246 octtx_pki_buflink_w0_t w0;
247 octtx_pki_buflink_w1_t w1;
248} octtx_pki_buflink_t;
249
250#endif
251