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