ipsec: remove dependency on DPDK > 0
[vpp.git] / dpdk / dpdk-16.04_patches / 0028-i40e-Add-packet_type-metadata-in-the-i40e-vPMD.patch
1 From e462b3f07bcbd807f7f3c8e6077e886a92f46ff0 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 28/29] 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     | 539 +------------------------------------
14  drivers/net/i40e/i40e_rxtx.h     | 564 +++++++++++++++++++++++++++++++++++++++
15  drivers/net/i40e/i40e_rxtx_vec.c |  16 ++
16  3 files changed, 582 insertions(+), 537 deletions(-)
17
18 diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
19 index 4d35d83..511f016 100644
20 --- a/drivers/net/i40e/i40e_rxtx.c
21 +++ b/drivers/net/i40e/i40e_rxtx.c
22 @@ -189,542 +189,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 -               /* All others reserved */
557 -       };
558 -
559 -       return type_table[ptype];
560 -}
561 -
562  #define I40E_RX_DESC_EXT_STATUS_FLEXBH_MASK   0x03
563  #define I40E_RX_DESC_EXT_STATUS_FLEXBH_FD_ID  0x01
564  #define I40E_RX_DESC_EXT_STATUS_FLEXBH_FLEX   0x02
565 @@ -2135,7 +1599,8 @@ i40e_dev_supported_ptypes_get(struct rte_eth_dev *dev)
566  #ifdef RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC
567             dev->rx_pkt_burst == i40e_recv_pkts_bulk_alloc ||
568  #endif
569 -           dev->rx_pkt_burst == i40e_recv_scattered_pkts)
570 +           dev->rx_pkt_burst == i40e_recv_scattered_pkts ||
571 +           dev->rx_pkt_burst == i40e_recv_pkts_vec)
572                 return ptypes;
573         return NULL;
574  }
575 diff --git a/drivers/net/i40e/i40e_rxtx.h b/drivers/net/i40e/i40e_rxtx.h
576 index 98179f0..c33782f 100644
577 --- a/drivers/net/i40e/i40e_rxtx.h
578 +++ b/drivers/net/i40e/i40e_rxtx.h
579 @@ -255,4 +255,568 @@ void i40e_set_tx_function_flag(struct rte_eth_dev *dev,
580                                struct i40e_tx_queue *txq);
581  void i40e_set_tx_function(struct rte_eth_dev *dev);
582  
583 +/* For each value it means, datasheet of hardware can tell more details
584 + *
585 + * @note: fix i40e_dev_supported_ptypes_get() if any change here.
586 + */
587 +#define RTE_PTYPE_L2_ETHER_NSH              0x00000005
588 +static inline uint32_t
589 +i40e_rxd_pkt_type_mapping(uint8_t ptype)
590 +{
591 +       static const uint32_t type_table[UINT8_MAX + 1] __rte_cache_aligned = {
592 +               /* L2 types */
593 +               /* [0] reserved */
594 +               [1] = RTE_PTYPE_L2_ETHER,
595 +               [2] = RTE_PTYPE_L2_ETHER_TIMESYNC,
596 +               /* [3] - [5] reserved */
597 +               [6] = RTE_PTYPE_L2_ETHER_LLDP,
598 +               /* [7] - [10] reserved */
599 +               [11] = RTE_PTYPE_L2_ETHER_ARP,
600 +               /* [12] - [21] reserved */
601 +
602 +               /* Non tunneled IPv4 */
603 +               [22] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
604 +                       RTE_PTYPE_L4_FRAG,
605 +               [23] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
606 +                       RTE_PTYPE_L4_NONFRAG,
607 +               [24] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
608 +                       RTE_PTYPE_L4_UDP,
609 +               /* [25] reserved */
610 +               [26] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
611 +                       RTE_PTYPE_L4_TCP,
612 +               [27] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
613 +                       RTE_PTYPE_L4_SCTP,
614 +               [28] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
615 +                       RTE_PTYPE_L4_ICMP,
616 +
617 +               /* IPv4 --> IPv4 */
618 +               [29] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
619 +                       RTE_PTYPE_TUNNEL_IP |
620 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
621 +                       RTE_PTYPE_INNER_L4_FRAG,
622 +               [30] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
623 +                       RTE_PTYPE_TUNNEL_IP |
624 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
625 +                       RTE_PTYPE_INNER_L4_NONFRAG,
626 +               [31] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
627 +                       RTE_PTYPE_TUNNEL_IP |
628 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
629 +                       RTE_PTYPE_INNER_L4_UDP,
630 +               /* [32] reserved */
631 +               [33] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
632 +                       RTE_PTYPE_TUNNEL_IP |
633 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
634 +                       RTE_PTYPE_INNER_L4_TCP,
635 +               [34] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
636 +                       RTE_PTYPE_TUNNEL_IP |
637 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
638 +                       RTE_PTYPE_INNER_L4_SCTP,
639 +               [35] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
640 +                       RTE_PTYPE_TUNNEL_IP |
641 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
642 +                       RTE_PTYPE_INNER_L4_ICMP,
643 +
644 +               /* IPv4 --> IPv6 */
645 +               [36] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
646 +                       RTE_PTYPE_TUNNEL_IP |
647 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
648 +                       RTE_PTYPE_INNER_L4_FRAG,
649 +               [37] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
650 +                       RTE_PTYPE_TUNNEL_IP |
651 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
652 +                       RTE_PTYPE_INNER_L4_NONFRAG,
653 +               [38] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
654 +                       RTE_PTYPE_TUNNEL_IP |
655 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
656 +                       RTE_PTYPE_INNER_L4_UDP,
657 +               /* [39] reserved */
658 +               [40] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
659 +                       RTE_PTYPE_TUNNEL_IP |
660 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
661 +                       RTE_PTYPE_INNER_L4_TCP,
662 +               [41] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
663 +                       RTE_PTYPE_TUNNEL_IP |
664 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
665 +                       RTE_PTYPE_INNER_L4_SCTP,
666 +               [42] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
667 +                       RTE_PTYPE_TUNNEL_IP |
668 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
669 +                       RTE_PTYPE_INNER_L4_ICMP,
670 +
671 +               /* IPv4 --> GRE/Teredo/VXLAN */
672 +               [43] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
673 +                       RTE_PTYPE_TUNNEL_GRENAT,
674 +
675 +               /* IPv4 --> GRE/Teredo/VXLAN --> IPv4 */
676 +               [44] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
677 +                       RTE_PTYPE_TUNNEL_GRENAT |
678 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
679 +                       RTE_PTYPE_INNER_L4_FRAG,
680 +               [45] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
681 +                       RTE_PTYPE_TUNNEL_GRENAT |
682 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
683 +                       RTE_PTYPE_INNER_L4_NONFRAG,
684 +               [46] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
685 +                       RTE_PTYPE_TUNNEL_GRENAT |
686 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
687 +                       RTE_PTYPE_INNER_L4_UDP,
688 +               /* [47] reserved */
689 +               [48] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
690 +                       RTE_PTYPE_TUNNEL_GRENAT |
691 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
692 +                       RTE_PTYPE_INNER_L4_TCP,
693 +               [49] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
694 +                       RTE_PTYPE_TUNNEL_GRENAT |
695 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
696 +                       RTE_PTYPE_INNER_L4_SCTP,
697 +               [50] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
698 +                       RTE_PTYPE_TUNNEL_GRENAT |
699 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
700 +                       RTE_PTYPE_INNER_L4_ICMP,
701 +
702 +               /* IPv4 --> GRE/Teredo/VXLAN --> IPv6 */
703 +               [51] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
704 +                       RTE_PTYPE_TUNNEL_GRENAT |
705 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
706 +                       RTE_PTYPE_INNER_L4_FRAG,
707 +               [52] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
708 +                       RTE_PTYPE_TUNNEL_GRENAT |
709 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
710 +                       RTE_PTYPE_INNER_L4_NONFRAG,
711 +               [53] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
712 +                       RTE_PTYPE_TUNNEL_GRENAT |
713 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
714 +                       RTE_PTYPE_INNER_L4_UDP,
715 +               /* [54] reserved */
716 +               [55] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
717 +                       RTE_PTYPE_TUNNEL_GRENAT |
718 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
719 +                       RTE_PTYPE_INNER_L4_TCP,
720 +               [56] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
721 +                       RTE_PTYPE_TUNNEL_GRENAT |
722 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
723 +                       RTE_PTYPE_INNER_L4_SCTP,
724 +               [57] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
725 +                       RTE_PTYPE_TUNNEL_GRENAT |
726 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
727 +                       RTE_PTYPE_INNER_L4_ICMP,
728 +
729 +               /* IPv4 --> GRE/Teredo/VXLAN --> MAC */
730 +               [58] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
731 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER,
732 +
733 +               /* IPv4 --> GRE/Teredo/VXLAN --> MAC --> IPv4 */
734 +               [59] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
735 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
736 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
737 +                       RTE_PTYPE_INNER_L4_FRAG,
738 +               [60] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
739 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
740 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
741 +                       RTE_PTYPE_INNER_L4_NONFRAG,
742 +               [61] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
743 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
744 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
745 +                       RTE_PTYPE_INNER_L4_UDP,
746 +               /* [62] reserved */
747 +               [63] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
748 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
749 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
750 +                       RTE_PTYPE_INNER_L4_TCP,
751 +               [64] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
752 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
753 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
754 +                       RTE_PTYPE_INNER_L4_SCTP,
755 +               [65] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
756 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
757 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
758 +                       RTE_PTYPE_INNER_L4_ICMP,
759 +
760 +               /* IPv4 --> GRE/Teredo/VXLAN --> MAC --> IPv6 */
761 +               [66] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
762 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
763 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
764 +                       RTE_PTYPE_INNER_L4_FRAG,
765 +               [67] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
766 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
767 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
768 +                       RTE_PTYPE_INNER_L4_NONFRAG,
769 +               [68] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
770 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
771 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
772 +                       RTE_PTYPE_INNER_L4_UDP,
773 +               /* [69] reserved */
774 +               [70] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
775 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
776 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
777 +                       RTE_PTYPE_INNER_L4_TCP,
778 +               [71] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
779 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
780 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
781 +                       RTE_PTYPE_INNER_L4_SCTP,
782 +               [72] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
783 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
784 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
785 +                       RTE_PTYPE_INNER_L4_ICMP,
786 +
787 +               /* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN */
788 +               [73] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
789 +                       RTE_PTYPE_TUNNEL_GRENAT |
790 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN,
791 +
792 +               /* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv4 */
793 +               [74] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
794 +                       RTE_PTYPE_TUNNEL_GRENAT |
795 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
796 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
797 +                       RTE_PTYPE_INNER_L4_FRAG,
798 +               [75] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
799 +                       RTE_PTYPE_TUNNEL_GRENAT |
800 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
801 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
802 +                       RTE_PTYPE_INNER_L4_NONFRAG,
803 +               [76] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
804 +                       RTE_PTYPE_TUNNEL_GRENAT |
805 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
806 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
807 +                       RTE_PTYPE_INNER_L4_UDP,
808 +               /* [77] reserved */
809 +               [78] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
810 +                       RTE_PTYPE_TUNNEL_GRENAT |
811 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
812 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
813 +                       RTE_PTYPE_INNER_L4_TCP,
814 +               [79] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
815 +                       RTE_PTYPE_TUNNEL_GRENAT |
816 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
817 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
818 +                       RTE_PTYPE_INNER_L4_SCTP,
819 +               [80] = 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_ICMP,
824 +
825 +               /* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv6 */
826 +               [81] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
827 +                       RTE_PTYPE_TUNNEL_GRENAT |
828 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
829 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
830 +                       RTE_PTYPE_INNER_L4_FRAG,
831 +               [82] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
832 +                       RTE_PTYPE_TUNNEL_GRENAT |
833 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
834 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
835 +                       RTE_PTYPE_INNER_L4_NONFRAG,
836 +               [83] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
837 +                       RTE_PTYPE_TUNNEL_GRENAT |
838 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
839 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
840 +                       RTE_PTYPE_INNER_L4_UDP,
841 +               /* [84] reserved */
842 +               [85] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
843 +                       RTE_PTYPE_TUNNEL_GRENAT |
844 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
845 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
846 +                       RTE_PTYPE_INNER_L4_TCP,
847 +               [86] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
848 +                       RTE_PTYPE_TUNNEL_GRENAT |
849 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
850 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
851 +                       RTE_PTYPE_INNER_L4_SCTP,
852 +               [87] = 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_ICMP,
857 +
858 +               /* Non tunneled IPv6 */
859 +               [88] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
860 +                       RTE_PTYPE_L4_FRAG,
861 +               [89] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
862 +                       RTE_PTYPE_L4_NONFRAG,
863 +               [90] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
864 +                       RTE_PTYPE_L4_UDP,
865 +               /* [91] reserved */
866 +               [92] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
867 +                       RTE_PTYPE_L4_TCP,
868 +               [93] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
869 +                       RTE_PTYPE_L4_SCTP,
870 +               [94] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
871 +                       RTE_PTYPE_L4_ICMP,
872 +
873 +               /* IPv6 --> IPv4 */
874 +               [95] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
875 +                       RTE_PTYPE_TUNNEL_IP |
876 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
877 +                       RTE_PTYPE_INNER_L4_FRAG,
878 +               [96] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
879 +                       RTE_PTYPE_TUNNEL_IP |
880 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
881 +                       RTE_PTYPE_INNER_L4_NONFRAG,
882 +               [97] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
883 +                       RTE_PTYPE_TUNNEL_IP |
884 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
885 +                       RTE_PTYPE_INNER_L4_UDP,
886 +               /* [98] reserved */
887 +               [99] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
888 +                       RTE_PTYPE_TUNNEL_IP |
889 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
890 +                       RTE_PTYPE_INNER_L4_TCP,
891 +               [100] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
892 +                       RTE_PTYPE_TUNNEL_IP |
893 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
894 +                       RTE_PTYPE_INNER_L4_SCTP,
895 +               [101] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
896 +                       RTE_PTYPE_TUNNEL_IP |
897 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
898 +                       RTE_PTYPE_INNER_L4_ICMP,
899 +
900 +               /* IPv6 --> IPv6 */
901 +               [102] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
902 +                       RTE_PTYPE_TUNNEL_IP |
903 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
904 +                       RTE_PTYPE_INNER_L4_FRAG,
905 +               [103] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
906 +                       RTE_PTYPE_TUNNEL_IP |
907 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
908 +                       RTE_PTYPE_INNER_L4_NONFRAG,
909 +               [104] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
910 +                       RTE_PTYPE_TUNNEL_IP |
911 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
912 +                       RTE_PTYPE_INNER_L4_UDP,
913 +               /* [105] reserved */
914 +               [106] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
915 +                       RTE_PTYPE_TUNNEL_IP |
916 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
917 +                       RTE_PTYPE_INNER_L4_TCP,
918 +               [107] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
919 +                       RTE_PTYPE_TUNNEL_IP |
920 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
921 +                       RTE_PTYPE_INNER_L4_SCTP,
922 +               [108] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
923 +                       RTE_PTYPE_TUNNEL_IP |
924 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
925 +                       RTE_PTYPE_INNER_L4_ICMP,
926 +
927 +               /* IPv6 --> GRE/Teredo/VXLAN */
928 +               [109] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
929 +                       RTE_PTYPE_TUNNEL_GRENAT,
930 +
931 +               /* IPv6 --> GRE/Teredo/VXLAN --> IPv4 */
932 +               [110] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
933 +                       RTE_PTYPE_TUNNEL_GRENAT |
934 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
935 +                       RTE_PTYPE_INNER_L4_FRAG,
936 +               [111] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
937 +                       RTE_PTYPE_TUNNEL_GRENAT |
938 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
939 +                       RTE_PTYPE_INNER_L4_NONFRAG,
940 +               [112] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
941 +                       RTE_PTYPE_TUNNEL_GRENAT |
942 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
943 +                       RTE_PTYPE_INNER_L4_UDP,
944 +               /* [113] reserved */
945 +               [114] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
946 +                       RTE_PTYPE_TUNNEL_GRENAT |
947 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
948 +                       RTE_PTYPE_INNER_L4_TCP,
949 +               [115] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
950 +                       RTE_PTYPE_TUNNEL_GRENAT |
951 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
952 +                       RTE_PTYPE_INNER_L4_SCTP,
953 +               [116] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
954 +                       RTE_PTYPE_TUNNEL_GRENAT |
955 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
956 +                       RTE_PTYPE_INNER_L4_ICMP,
957 +
958 +               /* IPv6 --> GRE/Teredo/VXLAN --> IPv6 */
959 +               [117] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
960 +                       RTE_PTYPE_TUNNEL_GRENAT |
961 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
962 +                       RTE_PTYPE_INNER_L4_FRAG,
963 +               [118] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
964 +                       RTE_PTYPE_TUNNEL_GRENAT |
965 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
966 +                       RTE_PTYPE_INNER_L4_NONFRAG,
967 +               [119] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
968 +                       RTE_PTYPE_TUNNEL_GRENAT |
969 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
970 +                       RTE_PTYPE_INNER_L4_UDP,
971 +               /* [120] reserved */
972 +               [121] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
973 +                       RTE_PTYPE_TUNNEL_GRENAT |
974 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
975 +                       RTE_PTYPE_INNER_L4_TCP,
976 +               [122] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
977 +                       RTE_PTYPE_TUNNEL_GRENAT |
978 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
979 +                       RTE_PTYPE_INNER_L4_SCTP,
980 +               [123] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
981 +                       RTE_PTYPE_TUNNEL_GRENAT |
982 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
983 +                       RTE_PTYPE_INNER_L4_ICMP,
984 +
985 +               /* IPv6 --> GRE/Teredo/VXLAN --> MAC */
986 +               [124] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
987 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER,
988 +
989 +               /* IPv6 --> GRE/Teredo/VXLAN --> MAC --> IPv4 */
990 +               [125] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
991 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
992 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
993 +                       RTE_PTYPE_INNER_L4_FRAG,
994 +               [126] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
995 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
996 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
997 +                       RTE_PTYPE_INNER_L4_NONFRAG,
998 +               [127] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
999 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1000 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1001 +                       RTE_PTYPE_INNER_L4_UDP,
1002 +               /* [128] reserved */
1003 +               [129] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1004 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1005 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1006 +                       RTE_PTYPE_INNER_L4_TCP,
1007 +               [130] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1008 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1009 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1010 +                       RTE_PTYPE_INNER_L4_SCTP,
1011 +               [131] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1012 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1013 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1014 +                       RTE_PTYPE_INNER_L4_ICMP,
1015 +
1016 +               /* IPv6 --> GRE/Teredo/VXLAN --> MAC --> IPv6 */
1017 +               [132] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1018 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1019 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1020 +                       RTE_PTYPE_INNER_L4_FRAG,
1021 +               [133] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1022 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1023 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1024 +                       RTE_PTYPE_INNER_L4_NONFRAG,
1025 +               [134] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1026 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1027 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1028 +                       RTE_PTYPE_INNER_L4_UDP,
1029 +               /* [135] reserved */
1030 +               [136] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1031 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1032 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1033 +                       RTE_PTYPE_INNER_L4_TCP,
1034 +               [137] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1035 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1036 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1037 +                       RTE_PTYPE_INNER_L4_SCTP,
1038 +               [138] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1039 +                       RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
1040 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1041 +                       RTE_PTYPE_INNER_L4_ICMP,
1042 +
1043 +               /* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN */
1044 +               [139] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1045 +                       RTE_PTYPE_TUNNEL_GRENAT |
1046 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN,
1047 +
1048 +               /* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv4 */
1049 +               [140] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1050 +                       RTE_PTYPE_TUNNEL_GRENAT |
1051 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1052 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1053 +                       RTE_PTYPE_INNER_L4_FRAG,
1054 +               [141] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1055 +                       RTE_PTYPE_TUNNEL_GRENAT |
1056 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1057 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1058 +                       RTE_PTYPE_INNER_L4_NONFRAG,
1059 +               [142] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1060 +                       RTE_PTYPE_TUNNEL_GRENAT |
1061 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1062 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1063 +                       RTE_PTYPE_INNER_L4_UDP,
1064 +               /* [143] reserved */
1065 +               [144] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1066 +                       RTE_PTYPE_TUNNEL_GRENAT |
1067 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1068 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1069 +                       RTE_PTYPE_INNER_L4_TCP,
1070 +               [145] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1071 +                       RTE_PTYPE_TUNNEL_GRENAT |
1072 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1073 +                       RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
1074 +                       RTE_PTYPE_INNER_L4_SCTP,
1075 +               [146] = 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_ICMP,
1080 +
1081 +               /* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv6 */
1082 +               [147] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1083 +                       RTE_PTYPE_TUNNEL_GRENAT |
1084 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1085 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1086 +                       RTE_PTYPE_INNER_L4_FRAG,
1087 +               [148] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1088 +                       RTE_PTYPE_TUNNEL_GRENAT |
1089 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1090 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1091 +                       RTE_PTYPE_INNER_L4_NONFRAG,
1092 +               [149] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1093 +                       RTE_PTYPE_TUNNEL_GRENAT |
1094 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1095 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1096 +                       RTE_PTYPE_INNER_L4_UDP,
1097 +               /* [150] reserved */
1098 +               [151] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1099 +                       RTE_PTYPE_TUNNEL_GRENAT |
1100 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1101 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1102 +                       RTE_PTYPE_INNER_L4_TCP,
1103 +               [152] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1104 +                       RTE_PTYPE_TUNNEL_GRENAT |
1105 +                       RTE_PTYPE_INNER_L2_ETHER_VLAN |
1106 +                       RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
1107 +                       RTE_PTYPE_INNER_L4_SCTP,
1108 +               [153] = 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_ICMP,
1113 +
1114 +               /* L2 NSH packet type */
1115 +               [154] = RTE_PTYPE_L2_ETHER_NSH,
1116 +               [155] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
1117 +                       RTE_PTYPE_L4_FRAG,
1118 +               [156] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
1119 +                       RTE_PTYPE_L4_NONFRAG,
1120 +               [157] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
1121 +                       RTE_PTYPE_L4_UDP,
1122 +               [158] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
1123 +                       RTE_PTYPE_L4_TCP,
1124 +               [159] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
1125 +                       RTE_PTYPE_L4_SCTP,
1126 +               [160] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
1127 +                       RTE_PTYPE_L4_ICMP,
1128 +               [161] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1129 +                       RTE_PTYPE_L4_FRAG,
1130 +               [162] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1131 +                       RTE_PTYPE_L4_NONFRAG,
1132 +               [163] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1133 +                       RTE_PTYPE_L4_UDP,
1134 +               [164] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1135 +                       RTE_PTYPE_L4_TCP,
1136 +               [165] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1137 +                       RTE_PTYPE_L4_SCTP,
1138 +               [166] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
1139 +                       RTE_PTYPE_L4_ICMP,
1140 +
1141 +               /* All others reserved */
1142 +       };
1143 +
1144 +       return type_table[ptype];
1145 +}
1146 +
1147  #endif /* _I40E_RXTX_H_ */
1148 diff --git a/drivers/net/i40e/i40e_rxtx_vec.c b/drivers/net/i40e/i40e_rxtx_vec.c
1149 index 047aff5..defa581 100644
1150 --- a/drivers/net/i40e/i40e_rxtx_vec.c
1151 +++ b/drivers/net/i40e/i40e_rxtx_vec.c
1152 @@ -220,6 +220,21 @@ desc_pktlen_align(__m128i descs[4])
1153         *((uint16_t *)&descs[3]+7) = vol.e[3];
1154  }
1155  
1156 +static inline void
1157 +desc_to_ptype_v(__m128i descs[4], struct rte_mbuf **rx_pkts)
1158 +{
1159 +       __m128i ptype0 = _mm_unpackhi_epi64(descs[0], descs[1]);
1160 +       __m128i ptype1 = _mm_unpackhi_epi64(descs[2], descs[3]);
1161 +
1162 +       ptype0 = _mm_srli_epi64(ptype0, 30);
1163 +       ptype1 = _mm_srli_epi64(ptype1, 30);
1164 +
1165 +       rx_pkts[0]->packet_type = i40e_rxd_pkt_type_mapping(_mm_extract_epi8(ptype0, 0));
1166 +       rx_pkts[1]->packet_type = i40e_rxd_pkt_type_mapping(_mm_extract_epi8(ptype0, 8));
1167 +       rx_pkts[2]->packet_type = i40e_rxd_pkt_type_mapping(_mm_extract_epi8(ptype1, 0));
1168 +       rx_pkts[3]->packet_type = i40e_rxd_pkt_type_mapping(_mm_extract_epi8(ptype1, 8));
1169 +}
1170 +
1171   /*
1172   * Notice:
1173   * - nb_pkts < RTE_I40E_DESCS_PER_LOOP, just return no packet
1174 @@ -413,6 +428,7 @@ _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts,
1175                                  pkt_mb2);
1176                 _mm_storeu_si128((void *)&rx_pkts[pos]->rx_descriptor_fields1,
1177                                  pkt_mb1);
1178 +               desc_to_ptype_v(descs, &rx_pkts[pos]);
1179                 /* C.4 calc avaialbe number of desc */
1180                 var = __builtin_popcountll(_mm_cvtsi128_si64(staterr));
1181                 nb_pkts_recd += var;
1182 -- 
1183 2.7.4
1184