xref: /dpdk/drivers/net/octeontx/base/octeontx_pki_var.h (revision 89f0711f9ddfb5822da9d34f384b92f72a61c4dc)
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