1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2015-2020 Beijing WangXun Technology Co., Ltd.
3 */
4
5 #include <rte_mbuf.h>
6 #include <rte_memory.h>
7
8 #include "base/txgbe_type.h"
9 #include "txgbe_ptypes.h"
10
11 /* The txgbe_ptype_lookup is used to convert from the 8-bit ptid in the
12 * hardware to a bit-field that can be used by SW to more easily determine the
13 * packet type.
14 *
15 * Macros are used to shorten the table lines and make this table human
16 * readable.
17 *
18 * We store the PTYPE in the top byte of the bit field - this is just so that
19 * we can check that the table doesn't have a row missing, as the index into
20 * the table should be the PTYPE.
21 *
22 * Typical work flow:
23 *
24 * IF NOT txgbe_ptype_lookup[ptid].known
25 * THEN
26 * Packet is unknown
27 * ELSE IF txgbe_ptype_lookup[ptid].mac == TXGBE_DEC_PTYPE_MAC_IP
28 * Use the rest of the fields to look at the tunnels, inner protocols, etc
29 * ELSE
30 * Use the enum txgbe_l2_ptypes to decode the packet type
31 * ENDIF
32 */
33 #define TPTE(ptid, l2, l3, l4, tun, el2, el3, el4) \
34 [ptid] = (RTE_PTYPE_L2_##l2 | \
35 RTE_PTYPE_L3_##l3 | \
36 RTE_PTYPE_L4_##l4 | \
37 RTE_PTYPE_TUNNEL_##tun | \
38 RTE_PTYPE_INNER_L2_##el2 | \
39 RTE_PTYPE_INNER_L3_##el3 | \
40 RTE_PTYPE_INNER_L4_##el4)
41
42 #define RTE_PTYPE_L2_NONE 0
43 #define RTE_PTYPE_L3_NONE 0
44 #define RTE_PTYPE_L4_NONE 0
45 #define RTE_PTYPE_TUNNEL_NONE 0
46 #define RTE_PTYPE_INNER_L2_NONE 0
47 #define RTE_PTYPE_INNER_L3_NONE 0
48 #define RTE_PTYPE_INNER_L4_NONE 0
49
50 static u32 txgbe_ptype_lookup[TXGBE_PTID_MAX] __rte_cache_aligned = {
51 /* L2:0-3 L3:4-7 L4:8-11 TUN:12-15 EL2:16-19 EL3:20-23 EL2:24-27 */
52 /* L2: ETH */
53 TPTE(0x10, ETHER, NONE, NONE, NONE, NONE, NONE, NONE),
54 TPTE(0x11, ETHER, NONE, NONE, NONE, NONE, NONE, NONE),
55 TPTE(0x12, ETHER_TIMESYNC, NONE, NONE, NONE, NONE, NONE, NONE),
56 TPTE(0x13, ETHER_FIP, NONE, NONE, NONE, NONE, NONE, NONE),
57 TPTE(0x14, ETHER_LLDP, NONE, NONE, NONE, NONE, NONE, NONE),
58 TPTE(0x15, ETHER_CNM, NONE, NONE, NONE, NONE, NONE, NONE),
59 TPTE(0x16, ETHER_EAPOL, NONE, NONE, NONE, NONE, NONE, NONE),
60 TPTE(0x17, ETHER_ARP, NONE, NONE, NONE, NONE, NONE, NONE),
61 /* L2: Ethertype Filter */
62 TPTE(0x18, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
63 TPTE(0x19, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
64 TPTE(0x1A, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
65 TPTE(0x1B, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
66 TPTE(0x1C, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
67 TPTE(0x1D, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
68 TPTE(0x1E, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
69 TPTE(0x1F, ETHER_FILTER, NONE, NONE, NONE, NONE, NONE, NONE),
70 /* L3: IP */
71 TPTE(0x20, ETHER, IPV4, NONFRAG, NONE, NONE, NONE, NONE),
72 TPTE(0x21, ETHER, IPV4, FRAG, NONE, NONE, NONE, NONE),
73 TPTE(0x22, ETHER, IPV4, NONFRAG, NONE, NONE, NONE, NONE),
74 TPTE(0x23, ETHER, IPV4, UDP, NONE, NONE, NONE, NONE),
75 TPTE(0x24, ETHER, IPV4, TCP, NONE, NONE, NONE, NONE),
76 TPTE(0x25, ETHER, IPV4, SCTP, NONE, NONE, NONE, NONE),
77 TPTE(0x29, ETHER, IPV6, FRAG, NONE, NONE, NONE, NONE),
78 TPTE(0x2A, ETHER, IPV6, NONFRAG, NONE, NONE, NONE, NONE),
79 TPTE(0x2B, ETHER, IPV6, UDP, NONE, NONE, NONE, NONE),
80 TPTE(0x2C, ETHER, IPV6, TCP, NONE, NONE, NONE, NONE),
81 TPTE(0x2D, ETHER, IPV6, SCTP, NONE, NONE, NONE, NONE),
82 /* L2: FCoE */
83 TPTE(0x30, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
84 TPTE(0x31, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
85 TPTE(0x32, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
86 TPTE(0x33, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
87 TPTE(0x34, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
88 TPTE(0x35, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
89 TPTE(0x36, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
90 TPTE(0x37, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
91 TPTE(0x38, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
92 TPTE(0x39, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),
93 /* IPv4 -> IPv4/IPv6 */
94 TPTE(0x81, ETHER, IPV4, NONE, IP, NONE, IPV4, FRAG),
95 TPTE(0x82, ETHER, IPV4, NONE, IP, NONE, IPV4, NONFRAG),
96 TPTE(0x83, ETHER, IPV4, NONE, IP, NONE, IPV4, UDP),
97 TPTE(0x84, ETHER, IPV4, NONE, IP, NONE, IPV4, TCP),
98 TPTE(0x85, ETHER, IPV4, NONE, IP, NONE, IPV4, SCTP),
99 TPTE(0x89, ETHER, IPV4, NONE, IP, NONE, IPV6, FRAG),
100 TPTE(0x8A, ETHER, IPV4, NONE, IP, NONE, IPV6, NONFRAG),
101 TPTE(0x8B, ETHER, IPV4, NONE, IP, NONE, IPV6, UDP),
102 TPTE(0x8C, ETHER, IPV4, NONE, IP, NONE, IPV6, TCP),
103 TPTE(0x8D, ETHER, IPV4, NONE, IP, NONE, IPV6, SCTP),
104 /* IPv4 -> GRE/Teredo/VXLAN -> NONE/IPv4/IPv6 */
105 TPTE(0x90, ETHER, IPV4, NONE, GRENAT, NONE, NONE, NONE),
106 TPTE(0x91, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, FRAG),
107 TPTE(0x92, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, NONFRAG),
108 TPTE(0x93, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, UDP),
109 TPTE(0x94, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, TCP),
110 TPTE(0x95, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, SCTP),
111 TPTE(0x99, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, FRAG),
112 TPTE(0x9A, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, NONFRAG),
113 TPTE(0x9B, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, UDP),
114 TPTE(0x9C, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, TCP),
115 TPTE(0x9D, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, SCTP),
116 /* IPv4 -> GRE/Teredo/VXLAN -> MAC -> NONE/IPv4/IPv6 */
117 TPTE(0xA0, ETHER, IPV4, NONE, GRENAT, ETHER, NONE, NONE),
118 TPTE(0xA1, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, FRAG),
119 TPTE(0xA2, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, NONFRAG),
120 TPTE(0xA3, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, UDP),
121 TPTE(0xA4, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, TCP),
122 TPTE(0xA5, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, SCTP),
123 TPTE(0xA9, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, FRAG),
124 TPTE(0xAA, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, NONFRAG),
125 TPTE(0xAB, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, UDP),
126 TPTE(0xAC, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, TCP),
127 TPTE(0xAD, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, SCTP),
128 /* IPv4 -> GRE/Teredo/VXLAN -> MAC+VLAN -> NONE/IPv4/IPv6 */
129 TPTE(0xB0, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, NONE, NONE),
130 TPTE(0xB1, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, FRAG),
131 TPTE(0xB2, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, NONFRAG),
132 TPTE(0xB3, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, UDP),
133 TPTE(0xB4, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, TCP),
134 TPTE(0xB5, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, SCTP),
135 TPTE(0xB9, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, FRAG),
136 TPTE(0xBA, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, NONFRAG),
137 TPTE(0xBB, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, UDP),
138 TPTE(0xBC, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, TCP),
139 TPTE(0xBD, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, SCTP),
140 /* IPv6 -> IPv4/IPv6 */
141 TPTE(0xC1, ETHER, IPV6, NONE, IP, NONE, IPV4, FRAG),
142 TPTE(0xC2, ETHER, IPV6, NONE, IP, NONE, IPV4, NONFRAG),
143 TPTE(0xC3, ETHER, IPV6, NONE, IP, NONE, IPV4, UDP),
144 TPTE(0xC4, ETHER, IPV6, NONE, IP, NONE, IPV4, TCP),
145 TPTE(0xC5, ETHER, IPV6, NONE, IP, NONE, IPV4, SCTP),
146 TPTE(0xC9, ETHER, IPV6, NONE, IP, NONE, IPV6, FRAG),
147 TPTE(0xCA, ETHER, IPV6, NONE, IP, NONE, IPV6, NONFRAG),
148 TPTE(0xCB, ETHER, IPV6, NONE, IP, NONE, IPV6, UDP),
149 TPTE(0xCC, ETHER, IPV6, NONE, IP, NONE, IPV6, TCP),
150 TPTE(0xCD, ETHER, IPV6, NONE, IP, NONE, IPV6, SCTP),
151 /* IPv6 -> GRE/Teredo/VXLAN -> NONE/IPv4/IPv6 */
152 TPTE(0xD0, ETHER, IPV6, NONE, GRENAT, NONE, NONE, NONE),
153 TPTE(0xD1, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, FRAG),
154 TPTE(0xD2, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, NONFRAG),
155 TPTE(0xD3, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, UDP),
156 TPTE(0xD4, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, TCP),
157 TPTE(0xD5, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, SCTP),
158 TPTE(0xD9, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, FRAG),
159 TPTE(0xDA, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, NONFRAG),
160 TPTE(0xDB, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, UDP),
161 TPTE(0xDC, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, TCP),
162 TPTE(0xDD, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, SCTP),
163 /* IPv6 -> GRE/Teredo/VXLAN -> MAC -> NONE/IPv4/IPv6 */
164 TPTE(0xE0, ETHER, IPV6, NONE, GRENAT, ETHER, NONE, NONE),
165 TPTE(0xE1, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, FRAG),
166 TPTE(0xE2, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, NONFRAG),
167 TPTE(0xE3, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, UDP),
168 TPTE(0xE4, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, TCP),
169 TPTE(0xE5, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, SCTP),
170 TPTE(0xE9, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, FRAG),
171 TPTE(0xEA, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, NONFRAG),
172 TPTE(0xEB, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, UDP),
173 TPTE(0xEC, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, TCP),
174 TPTE(0xED, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, SCTP),
175 /* IPv6 -> GRE/Teredo/VXLAN -> MAC+VLAN -> NONE/IPv4/IPv6 */
176 TPTE(0xF0, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, NONE, NONE),
177 TPTE(0xF1, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, FRAG),
178 TPTE(0xF2, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, NONFRAG),
179 TPTE(0xF3, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, UDP),
180 TPTE(0xF4, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, TCP),
181 TPTE(0xF5, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, SCTP),
182 TPTE(0xF9, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, FRAG),
183 TPTE(0xFA, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, NONFRAG),
184 TPTE(0xFB, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, UDP),
185 TPTE(0xFC, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, TCP),
186 TPTE(0xFD, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, SCTP),
187 };
188
txgbe_get_supported_ptypes(void)189 u32 *txgbe_get_supported_ptypes(void)
190 {
191 static u32 ptypes[] = {
192 /* For non-vec functions,
193 * refers to txgbe_rxd_pkt_info_to_pkt_type();
194 */
195 RTE_PTYPE_L2_ETHER,
196 RTE_PTYPE_L3_IPV4,
197 RTE_PTYPE_L3_IPV4_EXT,
198 RTE_PTYPE_L3_IPV6,
199 RTE_PTYPE_L3_IPV6_EXT,
200 RTE_PTYPE_L4_SCTP,
201 RTE_PTYPE_L4_TCP,
202 RTE_PTYPE_L4_UDP,
203 RTE_PTYPE_TUNNEL_IP,
204 RTE_PTYPE_INNER_L3_IPV6,
205 RTE_PTYPE_INNER_L3_IPV6_EXT,
206 RTE_PTYPE_INNER_L4_TCP,
207 RTE_PTYPE_INNER_L4_UDP,
208 RTE_PTYPE_UNKNOWN
209 };
210
211 return ptypes;
212 }
213
214 static inline u8
txgbe_encode_ptype_fcoe(u32 ptype)215 txgbe_encode_ptype_fcoe(u32 ptype)
216 {
217 u8 ptid;
218
219 UNREFERENCED_PARAMETER(ptype);
220 ptid = TXGBE_PTID_PKT_FCOE;
221
222 return ptid;
223 }
224
225 static inline u8
txgbe_encode_ptype_mac(u32 ptype)226 txgbe_encode_ptype_mac(u32 ptype)
227 {
228 u8 ptid;
229
230 ptid = TXGBE_PTID_PKT_MAC;
231
232 switch (ptype & RTE_PTYPE_L2_MASK) {
233 case RTE_PTYPE_L2_ETHER_FCOE:
234 ptid = txgbe_encode_ptype_fcoe(ptype);
235 break;
236 case RTE_PTYPE_UNKNOWN:
237 break;
238 case RTE_PTYPE_L2_ETHER_TIMESYNC:
239 ptid |= TXGBE_PTID_TYP_TS;
240 break;
241 case RTE_PTYPE_L2_ETHER_ARP:
242 ptid |= TXGBE_PTID_TYP_ARP;
243 break;
244 case RTE_PTYPE_L2_ETHER_LLDP:
245 ptid |= TXGBE_PTID_TYP_LLDP;
246 break;
247 default:
248 ptid |= TXGBE_PTID_TYP_MAC;
249 break;
250 }
251
252 return ptid;
253 }
254
255 static inline u8
txgbe_encode_ptype_ip(u32 ptype)256 txgbe_encode_ptype_ip(u32 ptype)
257 {
258 u8 ptid;
259
260 ptid = TXGBE_PTID_PKT_IP;
261
262 switch (ptype & RTE_PTYPE_L3_MASK) {
263 case RTE_PTYPE_L3_IPV4:
264 case RTE_PTYPE_L3_IPV4_EXT:
265 case RTE_PTYPE_L3_IPV4_EXT_UNKNOWN:
266 break;
267 case RTE_PTYPE_L3_IPV6:
268 case RTE_PTYPE_L3_IPV6_EXT:
269 case RTE_PTYPE_L3_IPV6_EXT_UNKNOWN:
270 ptid |= TXGBE_PTID_PKT_IPV6;
271 break;
272 default:
273 return txgbe_encode_ptype_mac(ptype);
274 }
275
276 switch (ptype & RTE_PTYPE_L4_MASK) {
277 case RTE_PTYPE_L4_TCP:
278 ptid |= TXGBE_PTID_TYP_TCP;
279 break;
280 case RTE_PTYPE_L4_UDP:
281 ptid |= TXGBE_PTID_TYP_UDP;
282 break;
283 case RTE_PTYPE_L4_SCTP:
284 ptid |= TXGBE_PTID_TYP_SCTP;
285 break;
286 case RTE_PTYPE_L4_FRAG:
287 ptid |= TXGBE_PTID_TYP_IPFRAG;
288 break;
289 default:
290 ptid |= TXGBE_PTID_TYP_IPDATA;
291 break;
292 }
293
294 return ptid;
295 }
296
297 static inline u8
txgbe_encode_ptype_tunnel(u32 ptype)298 txgbe_encode_ptype_tunnel(u32 ptype)
299 {
300 u8 ptid;
301
302 ptid = TXGBE_PTID_PKT_TUN;
303
304 switch (ptype & RTE_PTYPE_L3_MASK) {
305 case RTE_PTYPE_L3_IPV4:
306 case RTE_PTYPE_L3_IPV4_EXT:
307 case RTE_PTYPE_L3_IPV4_EXT_UNKNOWN:
308 break;
309 case RTE_PTYPE_L3_IPV6:
310 case RTE_PTYPE_L3_IPV6_EXT:
311 case RTE_PTYPE_L3_IPV6_EXT_UNKNOWN:
312 ptid |= TXGBE_PTID_TUN_IPV6;
313 break;
314 default:
315 return txgbe_encode_ptype_ip(ptype);
316 }
317
318 switch (ptype & RTE_PTYPE_TUNNEL_MASK) {
319 case RTE_PTYPE_TUNNEL_IP:
320 ptid |= TXGBE_PTID_TUN_EI;
321 break;
322 case RTE_PTYPE_TUNNEL_GRE:
323 ptid |= TXGBE_PTID_TUN_EIG;
324 break;
325 case RTE_PTYPE_TUNNEL_VXLAN:
326 case RTE_PTYPE_TUNNEL_VXLAN_GPE:
327 case RTE_PTYPE_TUNNEL_NVGRE:
328 case RTE_PTYPE_TUNNEL_GENEVE:
329 case RTE_PTYPE_TUNNEL_GRENAT:
330 break;
331 default:
332 return ptid;
333 }
334
335 switch (ptype & RTE_PTYPE_INNER_L2_MASK) {
336 case RTE_PTYPE_INNER_L2_ETHER:
337 ptid |= TXGBE_PTID_TUN_EIGM;
338 break;
339 case RTE_PTYPE_INNER_L2_ETHER_VLAN:
340 ptid |= TXGBE_PTID_TUN_EIGMV;
341 break;
342 case RTE_PTYPE_INNER_L2_ETHER_QINQ:
343 ptid |= TXGBE_PTID_TUN_EIGMV;
344 break;
345 default:
346 break;
347 }
348
349 switch (ptype & RTE_PTYPE_INNER_L3_MASK) {
350 case RTE_PTYPE_INNER_L3_IPV4:
351 case RTE_PTYPE_INNER_L3_IPV4_EXT:
352 case RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN:
353 break;
354 case RTE_PTYPE_INNER_L3_IPV6:
355 case RTE_PTYPE_INNER_L3_IPV6_EXT:
356 case RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN:
357 ptid |= TXGBE_PTID_PKT_IPV6;
358 break;
359 default:
360 return ptid;
361 }
362
363 switch (ptype & RTE_PTYPE_INNER_L4_MASK) {
364 case RTE_PTYPE_INNER_L4_TCP:
365 ptid |= TXGBE_PTID_TYP_TCP;
366 break;
367 case RTE_PTYPE_INNER_L4_UDP:
368 ptid |= TXGBE_PTID_TYP_UDP;
369 break;
370 case RTE_PTYPE_INNER_L4_SCTP:
371 ptid |= TXGBE_PTID_TYP_SCTP;
372 break;
373 case RTE_PTYPE_INNER_L4_FRAG:
374 ptid |= TXGBE_PTID_TYP_IPFRAG;
375 break;
376 default:
377 ptid |= TXGBE_PTID_TYP_IPDATA;
378 break;
379 }
380
381 return ptid;
382 }
383
txgbe_decode_ptype(u8 ptid)384 u32 txgbe_decode_ptype(u8 ptid)
385 {
386 if (-1 != txgbe_etflt_id(ptid))
387 return RTE_PTYPE_UNKNOWN;
388
389 return txgbe_ptype_lookup[ptid];
390 }
391
txgbe_encode_ptype(u32 ptype)392 u8 txgbe_encode_ptype(u32 ptype)
393 {
394 u8 ptid = 0;
395
396 if (ptype & RTE_PTYPE_TUNNEL_MASK)
397 ptid = txgbe_encode_ptype_tunnel(ptype);
398 else if (ptype & RTE_PTYPE_L3_MASK)
399 ptid = txgbe_encode_ptype_ip(ptype);
400 else if (ptype & RTE_PTYPE_L2_MASK)
401 ptid = txgbe_encode_ptype_mac(ptype);
402 else
403 ptid = TXGBE_PTID_NULL;
404
405 return ptid;
406 }
407
408 /**
409 * Use 2 different table for normal packet and tunnel packet
410 * to save the space.
411 */
412 const u32
413 txgbe_ptype_table[TXGBE_PTID_MAX] __rte_cache_aligned = {
414 [TXGBE_PT_ETHER] = RTE_PTYPE_L2_ETHER,
415 [TXGBE_PT_IPV4] = RTE_PTYPE_L2_ETHER |
416 RTE_PTYPE_L3_IPV4,
417 [TXGBE_PT_IPV4_TCP] = RTE_PTYPE_L2_ETHER |
418 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_TCP,
419 [TXGBE_PT_IPV4_UDP] = RTE_PTYPE_L2_ETHER |
420 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_UDP,
421 [TXGBE_PT_IPV4_SCTP] = RTE_PTYPE_L2_ETHER |
422 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_SCTP,
423 [TXGBE_PT_IPV4_EXT] = RTE_PTYPE_L2_ETHER |
424 RTE_PTYPE_L3_IPV4_EXT,
425 [TXGBE_PT_IPV4_EXT_TCP] = RTE_PTYPE_L2_ETHER |
426 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_TCP,
427 [TXGBE_PT_IPV4_EXT_UDP] = RTE_PTYPE_L2_ETHER |
428 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_UDP,
429 [TXGBE_PT_IPV4_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
430 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_SCTP,
431 [TXGBE_PT_IPV6] = RTE_PTYPE_L2_ETHER |
432 RTE_PTYPE_L3_IPV6,
433 [TXGBE_PT_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
434 RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_TCP,
435 [TXGBE_PT_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
436 RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_UDP,
437 [TXGBE_PT_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
438 RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_SCTP,
439 [TXGBE_PT_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
440 RTE_PTYPE_L3_IPV6_EXT,
441 [TXGBE_PT_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
442 RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_TCP,
443 [TXGBE_PT_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
444 RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_UDP,
445 [TXGBE_PT_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
446 RTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_SCTP,
447 [TXGBE_PT_IPV4_IPV6] = RTE_PTYPE_L2_ETHER |
448 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
449 RTE_PTYPE_INNER_L3_IPV6,
450 [TXGBE_PT_IPV4_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
451 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
452 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_TCP,
453 [TXGBE_PT_IPV4_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
454 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
455 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_UDP,
456 [TXGBE_PT_IPV4_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
457 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
458 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_SCTP,
459 [TXGBE_PT_IPV4_EXT_IPV6] = RTE_PTYPE_L2_ETHER |
460 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
461 RTE_PTYPE_INNER_L3_IPV6,
462 [TXGBE_PT_IPV4_EXT_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
463 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
464 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_TCP,
465 [TXGBE_PT_IPV4_EXT_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
466 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
467 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_UDP,
468 [TXGBE_PT_IPV4_EXT_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
469 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
470 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_SCTP,
471 [TXGBE_PT_IPV4_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
472 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
473 RTE_PTYPE_INNER_L3_IPV6_EXT,
474 [TXGBE_PT_IPV4_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
475 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
476 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_TCP,
477 [TXGBE_PT_IPV4_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
478 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
479 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_UDP,
480 [TXGBE_PT_IPV4_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
481 RTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |
482 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_SCTP,
483 [TXGBE_PT_IPV4_EXT_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
484 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
485 RTE_PTYPE_INNER_L3_IPV6_EXT,
486 [TXGBE_PT_IPV4_EXT_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
487 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
488 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_TCP,
489 [TXGBE_PT_IPV4_EXT_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
490 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
491 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_UDP,
492 [TXGBE_PT_IPV4_EXT_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
493 RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |
494 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_SCTP,
495 };
496
497 const u32
498 txgbe_ptype_table_tn[TXGBE_PTID_MAX] __rte_cache_aligned = {
499 [TXGBE_PT_NVGRE] = RTE_PTYPE_L2_ETHER |
500 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
501 RTE_PTYPE_INNER_L2_ETHER,
502 [TXGBE_PT_NVGRE_IPV4] = RTE_PTYPE_L2_ETHER |
503 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
504 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
505 [TXGBE_PT_NVGRE_IPV4_EXT] = RTE_PTYPE_L2_ETHER |
506 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
507 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT,
508 [TXGBE_PT_NVGRE_IPV6] = RTE_PTYPE_L2_ETHER |
509 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
510 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6,
511 [TXGBE_PT_NVGRE_IPV4_IPV6] = RTE_PTYPE_L2_ETHER |
512 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
513 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
514 [TXGBE_PT_NVGRE_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
515 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
516 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT,
517 [TXGBE_PT_NVGRE_IPV4_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
518 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
519 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
520 [TXGBE_PT_NVGRE_IPV4_TCP] = RTE_PTYPE_L2_ETHER |
521 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
522 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4 |
523 RTE_PTYPE_INNER_L4_TCP,
524 [TXGBE_PT_NVGRE_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
525 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
526 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6 |
527 RTE_PTYPE_INNER_L4_TCP,
528 [TXGBE_PT_NVGRE_IPV4_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
529 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
530 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
531 [TXGBE_PT_NVGRE_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
532 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
533 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT |
534 RTE_PTYPE_INNER_L4_TCP,
535 [TXGBE_PT_NVGRE_IPV4_IPV6_EXT_TCP] =
536 RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
537 RTE_PTYPE_TUNNEL_GRE | RTE_PTYPE_INNER_L2_ETHER |
538 RTE_PTYPE_INNER_L3_IPV4,
539 [TXGBE_PT_NVGRE_IPV4_UDP] = RTE_PTYPE_L2_ETHER |
540 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
541 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4 |
542 RTE_PTYPE_INNER_L4_UDP,
543 [TXGBE_PT_NVGRE_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
544 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
545 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6 |
546 RTE_PTYPE_INNER_L4_UDP,
547 [TXGBE_PT_NVGRE_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
548 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
549 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6 |
550 RTE_PTYPE_INNER_L4_SCTP,
551 [TXGBE_PT_NVGRE_IPV4_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
552 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
553 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
554 [TXGBE_PT_NVGRE_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
555 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
556 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT |
557 RTE_PTYPE_INNER_L4_UDP,
558 [TXGBE_PT_NVGRE_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
559 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
560 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT |
561 RTE_PTYPE_INNER_L4_SCTP,
562 [TXGBE_PT_NVGRE_IPV4_IPV6_EXT_UDP] =
563 RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
564 RTE_PTYPE_TUNNEL_GRE | RTE_PTYPE_INNER_L2_ETHER |
565 RTE_PTYPE_INNER_L3_IPV4,
566 [TXGBE_PT_NVGRE_IPV4_SCTP] = RTE_PTYPE_L2_ETHER |
567 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
568 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4 |
569 RTE_PTYPE_INNER_L4_SCTP,
570 [TXGBE_PT_NVGRE_IPV4_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
571 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
572 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT |
573 RTE_PTYPE_INNER_L4_SCTP,
574 [TXGBE_PT_NVGRE_IPV4_EXT_TCP] = RTE_PTYPE_L2_ETHER |
575 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
576 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT |
577 RTE_PTYPE_INNER_L4_TCP,
578 [TXGBE_PT_NVGRE_IPV4_EXT_UDP] = RTE_PTYPE_L2_ETHER |
579 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |
580 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT |
581 RTE_PTYPE_INNER_L4_UDP,
582
583 [TXGBE_PT_VXLAN] = RTE_PTYPE_L2_ETHER |
584 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
585 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER,
586 [TXGBE_PT_VXLAN_IPV4] = RTE_PTYPE_L2_ETHER |
587 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
588 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
589 RTE_PTYPE_INNER_L3_IPV4,
590 [TXGBE_PT_VXLAN_IPV4_EXT] = RTE_PTYPE_L2_ETHER |
591 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
592 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
593 RTE_PTYPE_INNER_L3_IPV4_EXT,
594 [TXGBE_PT_VXLAN_IPV6] = RTE_PTYPE_L2_ETHER |
595 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
596 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
597 RTE_PTYPE_INNER_L3_IPV6,
598 [TXGBE_PT_VXLAN_IPV4_IPV6] = RTE_PTYPE_L2_ETHER |
599 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
600 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
601 RTE_PTYPE_INNER_L3_IPV4,
602 [TXGBE_PT_VXLAN_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
603 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
604 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
605 RTE_PTYPE_INNER_L3_IPV6_EXT,
606 [TXGBE_PT_VXLAN_IPV4_IPV6_EXT] = RTE_PTYPE_L2_ETHER |
607 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
608 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
609 RTE_PTYPE_INNER_L3_IPV4,
610 [TXGBE_PT_VXLAN_IPV4_TCP] = RTE_PTYPE_L2_ETHER |
611 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
612 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
613 RTE_PTYPE_INNER_L3_IPV4 | RTE_PTYPE_INNER_L4_TCP,
614 [TXGBE_PT_VXLAN_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
615 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
616 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
617 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_TCP,
618 [TXGBE_PT_VXLAN_IPV4_IPV6_TCP] = RTE_PTYPE_L2_ETHER |
619 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
620 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
621 RTE_PTYPE_INNER_L3_IPV4,
622 [TXGBE_PT_VXLAN_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |
623 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
624 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
625 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_TCP,
626 [TXGBE_PT_VXLAN_IPV4_IPV6_EXT_TCP] =
627 RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
628 RTE_PTYPE_L4_UDP | RTE_PTYPE_TUNNEL_VXLAN |
629 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
630 [TXGBE_PT_VXLAN_IPV4_UDP] = RTE_PTYPE_L2_ETHER |
631 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
632 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
633 RTE_PTYPE_INNER_L3_IPV4 | RTE_PTYPE_INNER_L4_UDP,
634 [TXGBE_PT_VXLAN_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
635 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
636 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
637 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_UDP,
638 [TXGBE_PT_VXLAN_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |
639 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
640 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
641 RTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_SCTP,
642 [TXGBE_PT_VXLAN_IPV4_IPV6_UDP] = RTE_PTYPE_L2_ETHER |
643 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
644 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
645 RTE_PTYPE_INNER_L3_IPV4,
646 [TXGBE_PT_VXLAN_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |
647 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
648 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
649 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_UDP,
650 [TXGBE_PT_VXLAN_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
651 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
652 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
653 RTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_SCTP,
654 [TXGBE_PT_VXLAN_IPV4_IPV6_EXT_UDP] =
655 RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
656 RTE_PTYPE_L4_UDP | RTE_PTYPE_TUNNEL_VXLAN |
657 RTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,
658 [TXGBE_PT_VXLAN_IPV4_SCTP] = RTE_PTYPE_L2_ETHER |
659 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
660 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
661 RTE_PTYPE_INNER_L3_IPV4 | RTE_PTYPE_INNER_L4_SCTP,
662 [TXGBE_PT_VXLAN_IPV4_EXT_SCTP] = RTE_PTYPE_L2_ETHER |
663 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
664 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
665 RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_SCTP,
666 [TXGBE_PT_VXLAN_IPV4_EXT_TCP] = RTE_PTYPE_L2_ETHER |
667 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
668 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
669 RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_TCP,
670 [TXGBE_PT_VXLAN_IPV4_EXT_UDP] = RTE_PTYPE_L2_ETHER |
671 RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |
672 RTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |
673 RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_UDP,
674 };
675