net/txgbe: fix memset type
[dpdk.git] / drivers / net / txgbe / txgbe_ptypes.c
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(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
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
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
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
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
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
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
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