API refactoring : classify
[vpp.git] / dpdk / dpdk-16.07_patches / 0001-i40e-Add-packet_type-metadata-in-the-i40e-vPMD.patch
1 From 79a2ddaf4d7df7172faa54716ae7647ad7a549b9 Mon Sep 17 00:00:00 2001
2 From: Damjan Marion <damarion@cisco.com>
3 Date: Thu, 14 Jul 2016 09:59:01 -0700
4 Subject: [PATCH 1/2] i40e: Add packet_type metadata in the i40e vPMD
5
6 The ptype is decoded from the rx descriptor and stored
7 in the packet type field in the mbuf using the same function
8 as the non-vector driver.
9
10 Signed-off-by: Damjan Marion <damarion@cisco.com>
11 Signed-off-by: Jeff Shaw <jeffrey.b.shaw@intel.com>
12 ---
13  drivers/net/i40e/i40e_rxtx.c     | 566 +--------------------------------------
14  drivers/net/i40e/i40e_rxtx.h     | 563 ++++++++++++++++++++++++++++++++++++++
15  drivers/net/i40e/i40e_rxtx_vec.c |  16 ++
16  3 files changed, 581 insertions(+), 564 deletions(-)
17
18 diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
19 index d3cfb98..2903347 100644
20 --- a/drivers/net/i40e/i40e_rxtx.c
21 +++ b/drivers/net/i40e/i40e_rxtx.c
22 @@ -174,569 +174,6 @@ i40e_get_iee15888_flags(struct rte_mbuf *mb, uint64_t qword)
23  }
24  #endif
25  
26 -/* For each value it means, datasheet of hardware can tell more details
27 - *
28 - * @note: fix i40e_dev_supported_ptypes_get() if any change here.
29 - */
30 -static inline uint32_t
31 -i40e_rxd_pkt_type_mapping(uint8_t ptype)
32 -{
33 -       static const uint32_t type_table[UINT8_MAX + 1] __rte_cache_aligned = {
34 -               /* L2 types */
35 -               /* [0] reserved */
36 -               [1] = RTE_PTYPE_L2_ETHER,
37 -               [2] = RTE_PTYPE_L2_ETHER_TIMESYNC,
38 -               /* [3] - [5] reserved */
39 -               [6] = RTE_PTYPE_L2_ETHER_LLDP,
40 -               /* [7] - [10] reserved */
41 -               [11] = RTE_PTYPE_L2_ETHER_ARP,
42 -               /* [12] - [21] reserved */
43 -
44 -               /* Non tunneled IPv4 */
45 -               [22] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
46 -                       RTE_PTYPE_L4_FRAG,
47 -               [23] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
48 -                       RTE_PTYPE_L4_NONFRAG,
49 -               [24] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
50 -                       RTE_PTYPE_L4_UDP,
51 -               /* [25] reserved */
52 -               [26] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
53 -                       RTE_PTYPE_L4_TCP,
54 -               [27] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
55 -                       RTE_PTYPE_L4_SCTP,
56 -               [28] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
57 -                       RTE_PTYPE_L4_ICMP,
58 -
59 -               /* IPv4 --> IPv4 */
60 -               [29] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
61 -                       RTE_PTYPE_TUNNEL_IP |
62 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
63 -                       RTE_PTYPE_INNER_L4_FRAG,
64 -               [30] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
65 -                       RTE_PTYPE_TUNNEL_IP |
66 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
67 -                       RTE_PTYPE_INNER_L4_NONFRAG,
68 -               [31] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
69 -                       RTE_PTYPE_TUNNEL_IP |
70 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
71 -                       RTE_PTYPE_INNER_L4_UDP,
72 -               /* [32] reserved */
73 -               [33] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
74 -                       RTE_PTYPE_TUNNEL_IP |
75 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
76 -                       RTE_PTYPE_INNER_L4_TCP,
77 -               [34] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
78 -                       RTE_PTYPE_TUNNEL_IP |
79 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
80 -                       RTE_PTYPE_INNER_L4_SCTP,
81 -               [35] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
82 -                       RTE_PTYPE_TUNNEL_IP |
83 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
84 -                       RTE_PTYPE_INNER_L4_ICMP,
85 -
86 -               /* IPv4 --> IPv6 */
87 -               [36] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
88 -                       RTE_PTYPE_TUNNEL_IP |
89 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
90 -                       RTE_PTYPE_INNER_L4_FRAG,
91 -               [37] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
92 -                       RTE_PTYPE_TUNNEL_IP |
93 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
94 -                       RTE_PTYPE_INNER_L4_NONFRAG,
95 -               [38] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
96 -                       RTE_PTYPE_TUNNEL_IP |
97 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
98 -                       RTE_PTYPE_INNER_L4_UDP,
99 -               /* [39] reserved */
100 -               [40] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
101 -                       RTE_PTYPE_TUNNEL_IP |
102 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
103 -                       RTE_PTYPE_INNER_L4_TCP,
104 -               [41] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
105 -                       RTE_PTYPE_TUNNEL_IP |
106 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
107 -                       RTE_PTYPE_INNER_L4_SCTP,
108 -               [42] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
109 -                       RTE_PTYPE_TUNNEL_IP |
110 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
111 -                       RTE_PTYPE_INNER_L4_ICMP,
112 -
113 -               /* IPv4 --> GRE/Teredo/VXLAN */
114 -               [43] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
115 -                       RTE_PTYPE_TUNNEL_GRENAT,
116 -
117 -               /* IPv4 --> GRE/Teredo/VXLAN --> IPv4 */
118 -               [44] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
119 -                       RTE_PTYPE_TUNNEL_GRENAT |
120 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
121 -                       RTE_PTYPE_INNER_L4_FRAG,
122 -               [45] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
123 -                       RTE_PTYPE_TUNNEL_GRENAT |
124 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
125 -                       RTE_PTYPE_INNER_L4_NONFRAG,
126 -               [46] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
127 -                       RTE_PTYPE_TUNNEL_GRENAT |
128 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
129 -                       RTE_PTYPE_INNER_L4_UDP,
130 -               /* [47] reserved */
131 -               [48] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
132 -                       RTE_PTYPE_TUNNEL_GRENAT |
133 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
134 -                       RTE_PTYPE_INNER_L4_TCP,
135 -               [49] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
136 -                       RTE_PTYPE_TUNNEL_GRENAT |
137 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
138 -                       RTE_PTYPE_INNER_L4_SCTP,
139 -               [50] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
140 -                       RTE_PTYPE_TUNNEL_GRENAT |
141 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
142 -                       RTE_PTYPE_INNER_L4_ICMP,
143 -
144 -               /* IPv4 --> GRE/Teredo/VXLAN --> IPv6 */
145 -               [51] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
146 -                       RTE_PTYPE_TUNNEL_GRENAT |
147 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
148 -                       RTE_PTYPE_INNER_L4_FRAG,
149 -               [52] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
150 -                       RTE_PTYPE_TUNNEL_GRENAT |
151 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
152 -                       RTE_PTYPE_INNER_L4_NONFRAG,
153 -               [53] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
154 -                       RTE_PTYPE_TUNNEL_GRENAT |
155 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
156 -                       RTE_PTYPE_INNER_L4_UDP,
157 -               /* [54] reserved */
158 -               [55] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
159 -                       RTE_PTYPE_TUNNEL_GRENAT |
160 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
161 -                       RTE_PTYPE_INNER_L4_TCP,
162 -               [56] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
163 -                       RTE_PTYPE_TUNNEL_GRENAT |
164 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
165 -                       RTE_PTYPE_INNER_L4_SCTP,
166 -               [57] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
167 -                       RTE_PTYPE_TUNNEL_GRENAT |
168 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
169 -                       RTE_PTYPE_INNER_L4_ICMP,
170 -
171 -               /* IPv4 --> GRE/Teredo/VXLAN --> MAC */
172 -               [58] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
173 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER,
174 -
175 -               /* IPv4 --> GRE/Teredo/VXLAN --> MAC --> IPv4 */
176 -               [59] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
177 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
178 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
179 -                       RTE_PTYPE_INNER_L4_FRAG,
180 -               [60] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
181 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
182 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
183 -                       RTE_PTYPE_INNER_L4_NONFRAG,
184 -               [61] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
185 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
186 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
187 -                       RTE_PTYPE_INNER_L4_UDP,
188 -               /* [62] reserved */
189 -               [63] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
190 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
191 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
192 -                       RTE_PTYPE_INNER_L4_TCP,
193 -               [64] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
194 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
195 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
196 -                       RTE_PTYPE_INNER_L4_SCTP,
197 -               [65] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
198 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
199 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
200 -                       RTE_PTYPE_INNER_L4_ICMP,
201 -
202 -               /* IPv4 --> GRE/Teredo/VXLAN --> MAC --> IPv6 */
203 -               [66] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
204 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
205 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
206 -                       RTE_PTYPE_INNER_L4_FRAG,
207 -               [67] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
208 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
209 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
210 -                       RTE_PTYPE_INNER_L4_NONFRAG,
211 -               [68] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
212 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
213 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
214 -                       RTE_PTYPE_INNER_L4_UDP,
215 -               /* [69] reserved */
216 -               [70] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
217 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
218 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
219 -                       RTE_PTYPE_INNER_L4_TCP,
220 -               [71] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
221 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
222 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
223 -                       RTE_PTYPE_INNER_L4_SCTP,
224 -               [72] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
225 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
226 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
227 -                       RTE_PTYPE_INNER_L4_ICMP,
228 -
229 -               /* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN */
230 -               [73] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
231 -                       RTE_PTYPE_TUNNEL_GRENAT |
232 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN,
233 -
234 -               /* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv4 */
235 -               [74] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
236 -                       RTE_PTYPE_TUNNEL_GRENAT |
237 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
238 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
239 -                       RTE_PTYPE_INNER_L4_FRAG,
240 -               [75] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
241 -                       RTE_PTYPE_TUNNEL_GRENAT |
242 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
243 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
244 -                       RTE_PTYPE_INNER_L4_NONFRAG,
245 -               [76] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
246 -                       RTE_PTYPE_TUNNEL_GRENAT |
247 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
248 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
249 -                       RTE_PTYPE_INNER_L4_UDP,
250 -               /* [77] reserved */
251 -               [78] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
252 -                       RTE_PTYPE_TUNNEL_GRENAT |
253 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
254 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
255 -                       RTE_PTYPE_INNER_L4_TCP,
256 -               [79] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
257 -                       RTE_PTYPE_TUNNEL_GRENAT |
258 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
259 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
260 -                       RTE_PTYPE_INNER_L4_SCTP,
261 -               [80] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
262 -                       RTE_PTYPE_TUNNEL_GRENAT |
263 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
264 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
265 -                       RTE_PTYPE_INNER_L4_ICMP,
266 -
267 -               /* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv6 */
268 -               [81] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
269 -                       RTE_PTYPE_TUNNEL_GRENAT |
270 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
271 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
272 -                       RTE_PTYPE_INNER_L4_FRAG,
273 -               [82] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
274 -                       RTE_PTYPE_TUNNEL_GRENAT |
275 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
276 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
277 -                       RTE_PTYPE_INNER_L4_NONFRAG,
278 -               [83] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
279 -                       RTE_PTYPE_TUNNEL_GRENAT |
280 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
281 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
282 -                       RTE_PTYPE_INNER_L4_UDP,
283 -               /* [84] reserved */
284 -               [85] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
285 -                       RTE_PTYPE_TUNNEL_GRENAT |
286 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
287 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
288 -                       RTE_PTYPE_INNER_L4_TCP,
289 -               [86] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
290 -                       RTE_PTYPE_TUNNEL_GRENAT |
291 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
292 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
293 -                       RTE_PTYPE_INNER_L4_SCTP,
294 -               [87] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
295 -                       RTE_PTYPE_TUNNEL_GRENAT |
296 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
297 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
298 -                       RTE_PTYPE_INNER_L4_ICMP,
299 -
300 -               /* Non tunneled IPv6 */
301 -               [88] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
302 -                       RTE_PTYPE_L4_FRAG,
303 -               [89] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
304 -                       RTE_PTYPE_L4_NONFRAG,
305 -               [90] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
306 -                       RTE_PTYPE_L4_UDP,
307 -               /* [91] reserved */
308 -               [92] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
309 -                       RTE_PTYPE_L4_TCP,
310 -               [93] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
311 -                       RTE_PTYPE_L4_SCTP,
312 -               [94] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
313 -                       RTE_PTYPE_L4_ICMP,
314 -
315 -               /* IPv6 --> IPv4 */
316 -               [95] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
317 -                       RTE_PTYPE_TUNNEL_IP |
318 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
319 -                       RTE_PTYPE_INNER_L4_FRAG,
320 -               [96] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
321 -                       RTE_PTYPE_TUNNEL_IP |
322 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
323 -                       RTE_PTYPE_INNER_L4_NONFRAG,
324 -               [97] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
325 -                       RTE_PTYPE_TUNNEL_IP |
326 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
327 -                       RTE_PTYPE_INNER_L4_UDP,
328 -               /* [98] reserved */
329 -               [99] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
330 -                       RTE_PTYPE_TUNNEL_IP |
331 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
332 -                       RTE_PTYPE_INNER_L4_TCP,
333 -               [100] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
334 -                       RTE_PTYPE_TUNNEL_IP |
335 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
336 -                       RTE_PTYPE_INNER_L4_SCTP,
337 -               [101] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
338 -                       RTE_PTYPE_TUNNEL_IP |
339 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
340 -                       RTE_PTYPE_INNER_L4_ICMP,
341 -
342 -               /* IPv6 --> IPv6 */
343 -               [102] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
344 -                       RTE_PTYPE_TUNNEL_IP |
345 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
346 -                       RTE_PTYPE_INNER_L4_FRAG,
347 -               [103] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
348 -                       RTE_PTYPE_TUNNEL_IP |
349 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
350 -                       RTE_PTYPE_INNER_L4_NONFRAG,
351 -               [104] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
352 -                       RTE_PTYPE_TUNNEL_IP |
353 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
354 -                       RTE_PTYPE_INNER_L4_UDP,
355 -               /* [105] reserved */
356 -               [106] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
357 -                       RTE_PTYPE_TUNNEL_IP |
358 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
359 -                       RTE_PTYPE_INNER_L4_TCP,
360 -               [107] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
361 -                       RTE_PTYPE_TUNNEL_IP |
362 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
363 -                       RTE_PTYPE_INNER_L4_SCTP,
364 -               [108] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
365 -                       RTE_PTYPE_TUNNEL_IP |
366 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
367 -                       RTE_PTYPE_INNER_L4_ICMP,
368 -
369 -               /* IPv6 --> GRE/Teredo/VXLAN */
370 -               [109] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
371 -                       RTE_PTYPE_TUNNEL_GRENAT,
372 -
373 -               /* IPv6 --> GRE/Teredo/VXLAN --> IPv4 */
374 -               [110] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
375 -                       RTE_PTYPE_TUNNEL_GRENAT |
376 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
377 -                       RTE_PTYPE_INNER_L4_FRAG,
378 -               [111] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
379 -                       RTE_PTYPE_TUNNEL_GRENAT |
380 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
381 -                       RTE_PTYPE_INNER_L4_NONFRAG,
382 -               [112] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
383 -                       RTE_PTYPE_TUNNEL_GRENAT |
384 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
385 -                       RTE_PTYPE_INNER_L4_UDP,
386 -               /* [113] reserved */
387 -               [114] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
388 -                       RTE_PTYPE_TUNNEL_GRENAT |
389 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
390 -                       RTE_PTYPE_INNER_L4_TCP,
391 -               [115] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
392 -                       RTE_PTYPE_TUNNEL_GRENAT |
393 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
394 -                       RTE_PTYPE_INNER_L4_SCTP,
395 -               [116] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
396 -                       RTE_PTYPE_TUNNEL_GRENAT |
397 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
398 -                       RTE_PTYPE_INNER_L4_ICMP,
399 -
400 -               /* IPv6 --> GRE/Teredo/VXLAN --> IPv6 */
401 -               [117] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
402 -                       RTE_PTYPE_TUNNEL_GRENAT |
403 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
404 -                       RTE_PTYPE_INNER_L4_FRAG,
405 -               [118] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
406 -                       RTE_PTYPE_TUNNEL_GRENAT |
407 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
408 -                       RTE_PTYPE_INNER_L4_NONFRAG,
409 -               [119] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
410 -                       RTE_PTYPE_TUNNEL_GRENAT |
411 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
412 -                       RTE_PTYPE_INNER_L4_UDP,
413 -               /* [120] reserved */
414 -               [121] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
415 -                       RTE_PTYPE_TUNNEL_GRENAT |
416 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
417 -                       RTE_PTYPE_INNER_L4_TCP,
418 -               [122] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
419 -                       RTE_PTYPE_TUNNEL_GRENAT |
420 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
421 -                       RTE_PTYPE_INNER_L4_SCTP,
422 -               [123] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
423 -                       RTE_PTYPE_TUNNEL_GRENAT |
424 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
425 -                       RTE_PTYPE_INNER_L4_ICMP,
426 -
427 -               /* IPv6 --> GRE/Teredo/VXLAN --> MAC */
428 -               [124] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
429 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER,
430 -
431 -               /* IPv6 --> GRE/Teredo/VXLAN --> MAC --> IPv4 */
432 -               [125] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
433 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
434 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
435 -                       RTE_PTYPE_INNER_L4_FRAG,
436 -               [126] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
437 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
438 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
439 -                       RTE_PTYPE_INNER_L4_NONFRAG,
440 -               [127] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
441 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
442 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
443 -                       RTE_PTYPE_INNER_L4_UDP,
444 -               /* [128] reserved */
445 -               [129] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
446 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
447 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
448 -                       RTE_PTYPE_INNER_L4_TCP,
449 -               [130] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
450 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
451 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
452 -                       RTE_PTYPE_INNER_L4_SCTP,
453 -               [131] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
454 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
455 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
456 -                       RTE_PTYPE_INNER_L4_ICMP,
457 -
458 -               /* IPv6 --> GRE/Teredo/VXLAN --> MAC --> IPv6 */
459 -               [132] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
460 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
461 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
462 -                       RTE_PTYPE_INNER_L4_FRAG,
463 -               [133] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
464 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
465 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
466 -                       RTE_PTYPE_INNER_L4_NONFRAG,
467 -               [134] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
468 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
469 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
470 -                       RTE_PTYPE_INNER_L4_UDP,
471 -               /* [135] reserved */
472 -               [136] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
473 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
474 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
475 -                       RTE_PTYPE_INNER_L4_TCP,
476 -               [137] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
477 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
478 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
479 -                       RTE_PTYPE_INNER_L4_SCTP,
480 -               [138] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
481 -                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
482 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
483 -                       RTE_PTYPE_INNER_L4_ICMP,
484 -
485 -               /* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN */
486 -               [139] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
487 -                       RTE_PTYPE_TUNNEL_GRENAT |
488 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN,
489 -
490 -               /* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv4 */
491 -               [140] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
492 -                       RTE_PTYPE_TUNNEL_GRENAT |
493 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
494 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
495 -                       RTE_PTYPE_INNER_L4_FRAG,
496 -               [141] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
497 -                       RTE_PTYPE_TUNNEL_GRENAT |
498 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
499 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
500 -                       RTE_PTYPE_INNER_L4_NONFRAG,
501 -               [142] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
502 -                       RTE_PTYPE_TUNNEL_GRENAT |
503 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
504 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
505 -                       RTE_PTYPE_INNER_L4_UDP,
506 -               /* [143] reserved */
507 -               [144] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
508 -                       RTE_PTYPE_TUNNEL_GRENAT |
509 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
510 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
511 -                       RTE_PTYPE_INNER_L4_TCP,
512 -               [145] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
513 -                       RTE_PTYPE_TUNNEL_GRENAT |
514 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
515 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
516 -                       RTE_PTYPE_INNER_L4_SCTP,
517 -               [146] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
518 -                       RTE_PTYPE_TUNNEL_GRENAT |
519 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
520 -                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
521 -                       RTE_PTYPE_INNER_L4_ICMP,
522 -
523 -               /* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv6 */
524 -               [147] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
525 -                       RTE_PTYPE_TUNNEL_GRENAT |
526 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
527 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
528 -                       RTE_PTYPE_INNER_L4_FRAG,
529 -               [148] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
530 -                       RTE_PTYPE_TUNNEL_GRENAT |
531 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
532 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
533 -                       RTE_PTYPE_INNER_L4_NONFRAG,
534 -               [149] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
535 -                       RTE_PTYPE_TUNNEL_GRENAT |
536 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
537 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
538 -                       RTE_PTYPE_INNER_L4_UDP,
539 -               /* [150] reserved */
540 -               [151] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
541 -                       RTE_PTYPE_TUNNEL_GRENAT |
542 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
543 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
544 -                       RTE_PTYPE_INNER_L4_TCP,
545 -               [152] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
546 -                       RTE_PTYPE_TUNNEL_GRENAT |
547 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
548 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
549 -                       RTE_PTYPE_INNER_L4_SCTP,
550 -               [153] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
551 -                       RTE_PTYPE_TUNNEL_GRENAT |
552 -                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
553 -                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
554 -                       RTE_PTYPE_INNER_L4_ICMP,
555 -
556 -               /* L2 NSH packet type */
557 -               [154] = RTE_PTYPE_L2_ETHER_NSH,
558 -               [155] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
559 -                       RTE_PTYPE_L4_FRAG,
560 -               [156] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
561 -                       RTE_PTYPE_L4_NONFRAG,
562 -               [157] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
563 -                       RTE_PTYPE_L4_UDP,
564 -               [158] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
565 -                       RTE_PTYPE_L4_TCP,
566 -               [159] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
567 -                       RTE_PTYPE_L4_SCTP,
568 -               [160] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
569 -                       RTE_PTYPE_L4_ICMP,
570 -               [161] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
571 -                       RTE_PTYPE_L4_FRAG,
572 -               [162] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
573 -                       RTE_PTYPE_L4_NONFRAG,
574 -               [163] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
575 -                       RTE_PTYPE_L4_UDP,
576 -               [164] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
577 -                       RTE_PTYPE_L4_TCP,
578 -               [165] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
579 -                       RTE_PTYPE_L4_SCTP,
580 -               [166] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
581 -                       RTE_PTYPE_L4_ICMP,
582 -
583 -               /* All others reserved */
584 -       };
585 -
586 -       return type_table[ptype];
587 -}
588 -
589  #define I40E_RX_DESC_EXT_STATUS_FLEXBH_MASK   0x03
590  #define I40E_RX_DESC_EXT_STATUS_FLEXBH_FD_ID  0x01
591  #define I40E_RX_DESC_EXT_STATUS_FLEXBH_FLEX   0x02
592 @@ -2136,7 +1573,8 @@ i40e_dev_supported_ptypes_get(struct rte_eth_dev *dev)
593  #ifdef RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC
594             dev->rx_pkt_burst == i40e_recv_pkts_bulk_alloc ||
595  #endif
596 -           dev->rx_pkt_burst == i40e_recv_scattered_pkts)
597 +           dev->rx_pkt_burst == i40e_recv_scattered_pkts ||
598 +           dev->rx_pkt_burst == i40e_recv_pkts_vec)
599                 return ptypes;
600         return NULL;
601  }
602 diff --git a/drivers/net/i40e/i40e_rxtx.h b/drivers/net/i40e/i40e_rxtx.h
603 index 98179f0..ecdb13c 100644
604 --- a/drivers/net/i40e/i40e_rxtx.h
605 +++ b/drivers/net/i40e/i40e_rxtx.h
606 @@ -255,4 +255,567 @@ void i40e_set_tx_function_flag(struct rte_eth_dev *dev,
607                                struct i40e_tx_queue *txq);
608  void i40e_set_tx_function(struct rte_eth_dev *dev);
609  
610 +/* For each value it means, datasheet of hardware can tell more details
611 + *
612 + * @note: fix i40e_dev_supported_ptypes_get() if any change here.
613 + */
614 +static inline uint32_t
615 +i40e_rxd_pkt_type_mapping(uint8_t ptype)
616 +{
617 +       static const uint32_t type_table[UINT8_MAX + 1] __rte_cache_aligned = {
618 +               /* L2 types */
619 +               /* [0] reserved */
620 +               [1] = RTE_PTYPE_L2_ETHER,
621 +               [2] = RTE_PTYPE_L2_ETHER_TIMESYNC,
622 +               /* [3] - [5] reserved */
623 +               [6] = RTE_PTYPE_L2_ETHER_LLDP,
624 +               /* [7] - [10] reserved */
625 +               [11] = RTE_PTYPE_L2_ETHER_ARP,
626 +               /* [12] - [21] reserved */
627 +
628 +               /* Non tunneled IPv4 */
629 +               [22] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
630 +                       RTE_PTYPE_L4_FRAG,
631 +               [23] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
632 +                       RTE_PTYPE_L4_NONFRAG,
633 +               [24] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
634 +                       RTE_PTYPE_L4_UDP,
635 +               /* [25] reserved */
636 +               [26] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
637 +                       RTE_PTYPE_L4_TCP,
638 +               [27] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
639 +                       RTE_PTYPE_L4_SCTP,
640 +               [28] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
641 +                       RTE_PTYPE_L4_ICMP,
642 +
643 +               /* IPv4 --> IPv4 */
644 +               [29] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
645 +                       RTE_PTYPE_TUNNEL_IP |
646 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
647 +                       RTE_PTYPE_INNER_L4_FRAG,
648 +               [30] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
649 +                       RTE_PTYPE_TUNNEL_IP |
650 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
651 +                       RTE_PTYPE_INNER_L4_NONFRAG,
652 +               [31] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
653 +                       RTE_PTYPE_TUNNEL_IP |
654 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
655 +                       RTE_PTYPE_INNER_L4_UDP,
656 +               /* [32] reserved */
657 +               [33] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
658 +                       RTE_PTYPE_TUNNEL_IP |
659 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
660 +                       RTE_PTYPE_INNER_L4_TCP,
661 +               [34] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
662 +                       RTE_PTYPE_TUNNEL_IP |
663 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
664 +                       RTE_PTYPE_INNER_L4_SCTP,
665 +               [35] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
666 +                       RTE_PTYPE_TUNNEL_IP |
667 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
668 +                       RTE_PTYPE_INNER_L4_ICMP,
669 +
670 +               /* IPv4 --> IPv6 */
671 +               [36] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
672 +                       RTE_PTYPE_TUNNEL_IP |
673 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
674 +                       RTE_PTYPE_INNER_L4_FRAG,
675 +               [37] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
676 +                       RTE_PTYPE_TUNNEL_IP |
677 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
678 +                       RTE_PTYPE_INNER_L4_NONFRAG,
679 +               [38] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
680 +                       RTE_PTYPE_TUNNEL_IP |
681 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
682 +                       RTE_PTYPE_INNER_L4_UDP,
683 +               /* [39] reserved */
684 +               [40] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
685 +                       RTE_PTYPE_TUNNEL_IP |
686 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
687 +                       RTE_PTYPE_INNER_L4_TCP,
688 +               [41] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
689 +                       RTE_PTYPE_TUNNEL_IP |
690 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
691 +                       RTE_PTYPE_INNER_L4_SCTP,
692 +               [42] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
693 +                       RTE_PTYPE_TUNNEL_IP |
694 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
695 +                       RTE_PTYPE_INNER_L4_ICMP,
696 +
697 +               /* IPv4 --> GRE/Teredo/VXLAN */
698 +               [43] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
699 +                       RTE_PTYPE_TUNNEL_GRENAT,
700 +
701 +               /* IPv4 --> GRE/Teredo/VXLAN --> IPv4 */
702 +               [44] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
703 +                       RTE_PTYPE_TUNNEL_GRENAT |
704 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
705 +                       RTE_PTYPE_INNER_L4_FRAG,
706 +               [45] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
707 +                       RTE_PTYPE_TUNNEL_GRENAT |
708 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
709 +                       RTE_PTYPE_INNER_L4_NONFRAG,
710 +               [46] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
711 +                       RTE_PTYPE_TUNNEL_GRENAT |
712 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
713 +                       RTE_PTYPE_INNER_L4_UDP,
714 +               /* [47] reserved */
715 +               [48] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
716 +                       RTE_PTYPE_TUNNEL_GRENAT |
717 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
718 +                       RTE_PTYPE_INNER_L4_TCP,
719 +               [49] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
720 +                       RTE_PTYPE_TUNNEL_GRENAT |
721 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
722 +                       RTE_PTYPE_INNER_L4_SCTP,
723 +               [50] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
724 +                       RTE_PTYPE_TUNNEL_GRENAT |
725 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
726 +                       RTE_PTYPE_INNER_L4_ICMP,
727 +
728 +               /* IPv4 --> GRE/Teredo/VXLAN --> IPv6 */
729 +               [51] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
730 +                       RTE_PTYPE_TUNNEL_GRENAT |
731 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
732 +                       RTE_PTYPE_INNER_L4_FRAG,
733 +               [52] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
734 +                       RTE_PTYPE_TUNNEL_GRENAT |
735 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
736 +                       RTE_PTYPE_INNER_L4_NONFRAG,
737 +               [53] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
738 +                       RTE_PTYPE_TUNNEL_GRENAT |
739 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
740 +                       RTE_PTYPE_INNER_L4_UDP,
741 +               /* [54] reserved */
742 +               [55] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
743 +                       RTE_PTYPE_TUNNEL_GRENAT |
744 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
745 +                       RTE_PTYPE_INNER_L4_TCP,
746 +               [56] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
747 +                       RTE_PTYPE_TUNNEL_GRENAT |
748 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
749 +                       RTE_PTYPE_INNER_L4_SCTP,
750 +               [57] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
751 +                       RTE_PTYPE_TUNNEL_GRENAT |
752 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
753 +                       RTE_PTYPE_INNER_L4_ICMP,
754 +
755 +               /* IPv4 --> GRE/Teredo/VXLAN --> MAC */
756 +               [58] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
757 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER,
758 +
759 +               /* IPv4 --> GRE/Teredo/VXLAN --> MAC --> IPv4 */
760 +               [59] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
761 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
762 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
763 +                       RTE_PTYPE_INNER_L4_FRAG,
764 +               [60] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
765 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
766 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
767 +                       RTE_PTYPE_INNER_L4_NONFRAG,
768 +               [61] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
769 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
770 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
771 +                       RTE_PTYPE_INNER_L4_UDP,
772 +               /* [62] reserved */
773 +               [63] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
774 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
775 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
776 +                       RTE_PTYPE_INNER_L4_TCP,
777 +               [64] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
778 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
779 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
780 +                       RTE_PTYPE_INNER_L4_SCTP,
781 +               [65] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
782 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
783 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
784 +                       RTE_PTYPE_INNER_L4_ICMP,
785 +
786 +               /* IPv4 --> GRE/Teredo/VXLAN --> MAC --> IPv6 */
787 +               [66] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
788 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
789 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
790 +                       RTE_PTYPE_INNER_L4_FRAG,
791 +               [67] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
792 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
793 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
794 +                       RTE_PTYPE_INNER_L4_NONFRAG,
795 +               [68] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
796 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
797 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
798 +                       RTE_PTYPE_INNER_L4_UDP,
799 +               /* [69] reserved */
800 +               [70] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
801 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
802 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
803 +                       RTE_PTYPE_INNER_L4_TCP,
804 +               [71] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
805 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
806 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
807 +                       RTE_PTYPE_INNER_L4_SCTP,
808 +               [72] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
809 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
810 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
811 +                       RTE_PTYPE_INNER_L4_ICMP,
812 +
813 +               /* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN */
814 +               [73] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
815 +                       RTE_PTYPE_TUNNEL_GRENAT |
816 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN,
817 +
818 +               /* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv4 */
819 +               [74] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
820 +                       RTE_PTYPE_TUNNEL_GRENAT |
821 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
822 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
823 +                       RTE_PTYPE_INNER_L4_FRAG,
824 +               [75] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
825 +                       RTE_PTYPE_TUNNEL_GRENAT |
826 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
827 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
828 +                       RTE_PTYPE_INNER_L4_NONFRAG,
829 +               [76] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
830 +                       RTE_PTYPE_TUNNEL_GRENAT |
831 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
832 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
833 +                       RTE_PTYPE_INNER_L4_UDP,
834 +               /* [77] reserved */
835 +               [78] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
836 +                       RTE_PTYPE_TUNNEL_GRENAT |
837 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
838 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
839 +                       RTE_PTYPE_INNER_L4_TCP,
840 +               [79] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
841 +                       RTE_PTYPE_TUNNEL_GRENAT |
842 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
843 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
844 +                       RTE_PTYPE_INNER_L4_SCTP,
845 +               [80] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
846 +                       RTE_PTYPE_TUNNEL_GRENAT |
847 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
848 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
849 +                       RTE_PTYPE_INNER_L4_ICMP,
850 +
851 +               /* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv6 */
852 +               [81] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
853 +                       RTE_PTYPE_TUNNEL_GRENAT |
854 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
855 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
856 +                       RTE_PTYPE_INNER_L4_FRAG,
857 +               [82] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
858 +                       RTE_PTYPE_TUNNEL_GRENAT |
859 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
860 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
861 +                       RTE_PTYPE_INNER_L4_NONFRAG,
862 +               [83] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
863 +                       RTE_PTYPE_TUNNEL_GRENAT |
864 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
865 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
866 +                       RTE_PTYPE_INNER_L4_UDP,
867 +               /* [84] reserved */
868 +               [85] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
869 +                       RTE_PTYPE_TUNNEL_GRENAT |
870 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
871 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
872 +                       RTE_PTYPE_INNER_L4_TCP,
873 +               [86] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
874 +                       RTE_PTYPE_TUNNEL_GRENAT |
875 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
876 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
877 +                       RTE_PTYPE_INNER_L4_SCTP,
878 +               [87] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
879 +                       RTE_PTYPE_TUNNEL_GRENAT |
880 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
881 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
882 +                       RTE_PTYPE_INNER_L4_ICMP,
883 +
884 +               /* Non tunneled IPv6 */
885 +               [88] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
886 +                       RTE_PTYPE_L4_FRAG,
887 +               [89] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
888 +                       RTE_PTYPE_L4_NONFRAG,
889 +               [90] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
890 +                       RTE_PTYPE_L4_UDP,
891 +               /* [91] reserved */
892 +               [92] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
893 +                       RTE_PTYPE_L4_TCP,
894 +               [93] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
895 +                       RTE_PTYPE_L4_SCTP,
896 +               [94] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
897 +                       RTE_PTYPE_L4_ICMP,
898 +
899 +               /* IPv6 --> IPv4 */
900 +               [95] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
901 +                       RTE_PTYPE_TUNNEL_IP |
902 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
903 +                       RTE_PTYPE_INNER_L4_FRAG,
904 +               [96] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
905 +                       RTE_PTYPE_TUNNEL_IP |
906 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
907 +                       RTE_PTYPE_INNER_L4_NONFRAG,
908 +               [97] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
909 +                       RTE_PTYPE_TUNNEL_IP |
910 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
911 +                       RTE_PTYPE_INNER_L4_UDP,
912 +               /* [98] reserved */
913 +               [99] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
914 +                       RTE_PTYPE_TUNNEL_IP |
915 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
916 +                       RTE_PTYPE_INNER_L4_TCP,
917 +               [100] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
918 +                       RTE_PTYPE_TUNNEL_IP |
919 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
920 +                       RTE_PTYPE_INNER_L4_SCTP,
921 +               [101] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
922 +                       RTE_PTYPE_TUNNEL_IP |
923 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
924 +                       RTE_PTYPE_INNER_L4_ICMP,
925 +
926 +               /* IPv6 --> IPv6 */
927 +               [102] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
928 +                       RTE_PTYPE_TUNNEL_IP |
929 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
930 +                       RTE_PTYPE_INNER_L4_FRAG,
931 +               [103] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
932 +                       RTE_PTYPE_TUNNEL_IP |
933 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
934 +                       RTE_PTYPE_INNER_L4_NONFRAG,
935 +               [104] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
936 +                       RTE_PTYPE_TUNNEL_IP |
937 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
938 +                       RTE_PTYPE_INNER_L4_UDP,
939 +               /* [105] reserved */
940 +               [106] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
941 +                       RTE_PTYPE_TUNNEL_IP |
942 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
943 +                       RTE_PTYPE_INNER_L4_TCP,
944 +               [107] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
945 +                       RTE_PTYPE_TUNNEL_IP |
946 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
947 +                       RTE_PTYPE_INNER_L4_SCTP,
948 +               [108] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
949 +                       RTE_PTYPE_TUNNEL_IP |
950 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
951 +                       RTE_PTYPE_INNER_L4_ICMP,
952 +
953 +               /* IPv6 --> GRE/Teredo/VXLAN */
954 +               [109] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
955 +                       RTE_PTYPE_TUNNEL_GRENAT,
956 +
957 +               /* IPv6 --> GRE/Teredo/VXLAN --> IPv4 */
958 +               [110] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
959 +                       RTE_PTYPE_TUNNEL_GRENAT |
960 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
961 +                       RTE_PTYPE_INNER_L4_FRAG,
962 +               [111] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
963 +                       RTE_PTYPE_TUNNEL_GRENAT |
964 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
965 +                       RTE_PTYPE_INNER_L4_NONFRAG,
966 +               [112] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
967 +                       RTE_PTYPE_TUNNEL_GRENAT |
968 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
969 +                       RTE_PTYPE_INNER_L4_UDP,
970 +               /* [113] reserved */
971 +               [114] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
972 +                       RTE_PTYPE_TUNNEL_GRENAT |
973 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
974 +                       RTE_PTYPE_INNER_L4_TCP,
975 +               [115] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
976 +                       RTE_PTYPE_TUNNEL_GRENAT |
977 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
978 +                       RTE_PTYPE_INNER_L4_SCTP,
979 +               [116] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
980 +                       RTE_PTYPE_TUNNEL_GRENAT |
981 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
982 +                       RTE_PTYPE_INNER_L4_ICMP,
983 +
984 +               /* IPv6 --> GRE/Teredo/VXLAN --> IPv6 */
985 +               [117] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
986 +                       RTE_PTYPE_TUNNEL_GRENAT |
987 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
988 +                       RTE_PTYPE_INNER_L4_FRAG,
989 +               [118] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
990 +                       RTE_PTYPE_TUNNEL_GRENAT |
991 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
992 +                       RTE_PTYPE_INNER_L4_NONFRAG,
993 +               [119] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
994 +                       RTE_PTYPE_TUNNEL_GRENAT |
995 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
996 +                       RTE_PTYPE_INNER_L4_UDP,
997 +               /* [120] reserved */
998 +               [121] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
999 +                       RTE_PTYPE_TUNNEL_GRENAT |
1000 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1001 +                       RTE_PTYPE_INNER_L4_TCP,
1002 +               [122] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1003 +                       RTE_PTYPE_TUNNEL_GRENAT |
1004 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1005 +                       RTE_PTYPE_INNER_L4_SCTP,
1006 +               [123] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1007 +                       RTE_PTYPE_TUNNEL_GRENAT |
1008 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1009 +                       RTE_PTYPE_INNER_L4_ICMP,
1010 +
1011 +               /* IPv6 --> GRE/Teredo/VXLAN --> MAC */
1012 +               [124] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1013 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER,
1014 +
1015 +               /* IPv6 --> GRE/Teredo/VXLAN --> MAC --> IPv4 */
1016 +               [125] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1017 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1018 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1019 +                       RTE_PTYPE_INNER_L4_FRAG,
1020 +               [126] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1021 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1022 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1023 +                       RTE_PTYPE_INNER_L4_NONFRAG,
1024 +               [127] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1025 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1026 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1027 +                       RTE_PTYPE_INNER_L4_UDP,
1028 +               /* [128] reserved */
1029 +               [129] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1030 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1031 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1032 +                       RTE_PTYPE_INNER_L4_TCP,
1033 +               [130] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1034 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1035 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1036 +                       RTE_PTYPE_INNER_L4_SCTP,
1037 +               [131] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1038 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1039 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1040 +                       RTE_PTYPE_INNER_L4_ICMP,
1041 +
1042 +               /* IPv6 --> GRE/Teredo/VXLAN --> MAC --> IPv6 */
1043 +               [132] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1044 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1045 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1046 +                       RTE_PTYPE_INNER_L4_FRAG,
1047 +               [133] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1048 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1049 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1050 +                       RTE_PTYPE_INNER_L4_NONFRAG,
1051 +               [134] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1052 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1053 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1054 +                       RTE_PTYPE_INNER_L4_UDP,
1055 +               /* [135] reserved */
1056 +               [136] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1057 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1058 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1059 +                       RTE_PTYPE_INNER_L4_TCP,
1060 +               [137] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1061 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1062 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1063 +                       RTE_PTYPE_INNER_L4_SCTP,
1064 +               [138] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1065 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1066 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1067 +                       RTE_PTYPE_INNER_L4_ICMP,
1068 +
1069 +               /* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN */
1070 +               [139] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1071 +                       RTE_PTYPE_TUNNEL_GRENAT |
1072 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN,
1073 +
1074 +               /* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv4 */
1075 +               [140] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1076 +                       RTE_PTYPE_TUNNEL_GRENAT |
1077 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1078 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1079 +                       RTE_PTYPE_INNER_L4_FRAG,
1080 +               [141] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1081 +                       RTE_PTYPE_TUNNEL_GRENAT |
1082 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1083 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1084 +                       RTE_PTYPE_INNER_L4_NONFRAG,
1085 +               [142] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1086 +                       RTE_PTYPE_TUNNEL_GRENAT |
1087 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1088 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1089 +                       RTE_PTYPE_INNER_L4_UDP,
1090 +               /* [143] reserved */
1091 +               [144] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1092 +                       RTE_PTYPE_TUNNEL_GRENAT |
1093 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1094 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1095 +                       RTE_PTYPE_INNER_L4_TCP,
1096 +               [145] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1097 +                       RTE_PTYPE_TUNNEL_GRENAT |
1098 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1099 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1100 +                       RTE_PTYPE_INNER_L4_SCTP,
1101 +               [146] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1102 +                       RTE_PTYPE_TUNNEL_GRENAT |
1103 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1104 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1105 +                       RTE_PTYPE_INNER_L4_ICMP,
1106 +
1107 +               /* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv6 */
1108 +               [147] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1109 +                       RTE_PTYPE_TUNNEL_GRENAT |
1110 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1111 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1112 +                       RTE_PTYPE_INNER_L4_FRAG,
1113 +               [148] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1114 +                       RTE_PTYPE_TUNNEL_GRENAT |
1115 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1116 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1117 +                       RTE_PTYPE_INNER_L4_NONFRAG,
1118 +               [149] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1119 +                       RTE_PTYPE_TUNNEL_GRENAT |
1120 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1121 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1122 +                       RTE_PTYPE_INNER_L4_UDP,
1123 +               /* [150] reserved */
1124 +               [151] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1125 +                       RTE_PTYPE_TUNNEL_GRENAT |
1126 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1127 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1128 +                       RTE_PTYPE_INNER_L4_TCP,
1129 +               [152] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1130 +                       RTE_PTYPE_TUNNEL_GRENAT |
1131 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1132 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1133 +                       RTE_PTYPE_INNER_L4_SCTP,
1134 +               [153] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1135 +                       RTE_PTYPE_TUNNEL_GRENAT |
1136 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1137 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1138 +                       RTE_PTYPE_INNER_L4_ICMP,
1139 +
1140 +               /* L2 NSH packet type */
1141 +               [154] = RTE_PTYPE_L2_ETHER_NSH,
1142 +               [155] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
1143 +                       RTE_PTYPE_L4_FRAG,
1144 +               [156] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
1145 +                       RTE_PTYPE_L4_NONFRAG,
1146 +               [157] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
1147 +                       RTE_PTYPE_L4_UDP,
1148 +               [158] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
1149 +                       RTE_PTYPE_L4_TCP,
1150 +               [159] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
1151 +                       RTE_PTYPE_L4_SCTP,
1152 +               [160] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
1153 +                       RTE_PTYPE_L4_ICMP,
1154 +               [161] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1155 +                       RTE_PTYPE_L4_FRAG,
1156 +               [162] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1157 +                       RTE_PTYPE_L4_NONFRAG,
1158 +               [163] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1159 +                       RTE_PTYPE_L4_UDP,
1160 +               [164] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1161 +                       RTE_PTYPE_L4_TCP,
1162 +               [165] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1163 +                       RTE_PTYPE_L4_SCTP,
1164 +               [166] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1165 +                       RTE_PTYPE_L4_ICMP,
1166 +
1167 +               /* All others reserved */
1168 +       };
1169 +
1170 +       return type_table[ptype];
1171 +}
1172 +
1173  #endif /* _I40E_RXTX_H_ */
1174 diff --git a/drivers/net/i40e/i40e_rxtx_vec.c b/drivers/net/i40e/i40e_rxtx_vec.c
1175 index 05cb415..e78ac63 100644
1176 --- a/drivers/net/i40e/i40e_rxtx_vec.c
1177 +++ b/drivers/net/i40e/i40e_rxtx_vec.c
1178 @@ -187,6 +187,21 @@ desc_to_olflags_v(__m128i descs[4], struct rte_mbuf **rx_pkts)
1179  
1180  #define PKTLEN_SHIFT     10
1181  
1182 +static inline void
1183 +desc_to_ptype_v(__m128i descs[4], struct rte_mbuf **rx_pkts)
1184 +{
1185 +       __m128i ptype0 = _mm_unpackhi_epi64(descs[0], descs[1]);
1186 +       __m128i ptype1 = _mm_unpackhi_epi64(descs[2], descs[3]);
1187 +
1188 +       ptype0 = _mm_srli_epi64(ptype0, 30);
1189 +       ptype1 = _mm_srli_epi64(ptype1, 30);
1190 +
1191 +       rx_pkts[0]->packet_type = i40e_rxd_pkt_type_mapping(_mm_extract_epi8(ptype0, 0));
1192 +       rx_pkts[1]->packet_type = i40e_rxd_pkt_type_mapping(_mm_extract_epi8(ptype0, 8));
1193 +       rx_pkts[2]->packet_type = i40e_rxd_pkt_type_mapping(_mm_extract_epi8(ptype1, 0));
1194 +       rx_pkts[3]->packet_type = i40e_rxd_pkt_type_mapping(_mm_extract_epi8(ptype1, 8));
1195 +}
1196 +
1197   /*
1198   * Notice:
1199   * - nb_pkts < RTE_I40E_DESCS_PER_LOOP, just return no packet
1200 @@ -393,6 +408,7 @@ _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts,
1201                                  pkt_mb2);
1202                 _mm_storeu_si128((void *)&rx_pkts[pos]->rx_descriptor_fields1,
1203                                  pkt_mb1);
1204 +               desc_to_ptype_v(descs, &rx_pkts[pos]);
1205                 /* C.4 calc avaialbe number of desc */
1206                 var = __builtin_popcountll(_mm_cvtsi128_si64(staterr));
1207                 nb_pkts_recd += var;
1208 -- 
1209 2.7.4
1210