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
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.
10 Signed-off-by: Damjan Marion <damarion@cisco.com>
11 Signed-off-by: Jeff Shaw <jeffrey.b.shaw@intel.com>
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(-)
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)
26 -/* For each value it means, datasheet of hardware can tell more details
28 - * @note: fix i40e_dev_supported_ptypes_get() if any change here.
30 -static inline uint32_t
31 -i40e_rxd_pkt_type_mapping(uint8_t ptype)
33 - static const uint32_t type_table[UINT8_MAX + 1] __rte_cache_aligned = {
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 */
44 - /* Non tunneled IPv4 */
45 - [22] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
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 |
52 - [26] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
54 - [27] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
56 - [28] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
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,
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,
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,
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,
113 - /* IPv4 --> GRE/Teredo/VXLAN */
114 - [43] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
115 - RTE_PTYPE_TUNNEL_GRENAT,
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,
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,
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,
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,
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,
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,
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,
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,
300 - /* Non tunneled IPv6 */
301 - [88] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
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 |
307 - /* [91] reserved */
308 - [92] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
310 - [93] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
312 - [94] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
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,
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,
369 - /* IPv6 --> GRE/Teredo/VXLAN */
370 - [109] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
371 - RTE_PTYPE_TUNNEL_GRENAT,
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,
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,
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,
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,
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,
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,
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,
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,
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 |
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 |
564 - [158] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
566 - [159] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
568 - [160] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
570 - [161] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
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 |
576 - [164] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
578 - [165] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
580 - [166] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
583 - /* All others reserved */
586 - return type_table[ptype];
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 ||
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)
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);
610 +/* For each value it means, datasheet of hardware can tell more details
612 + * @note: fix i40e_dev_supported_ptypes_get() if any change here.
614 +static inline uint32_t
615 +i40e_rxd_pkt_type_mapping(uint8_t ptype)
617 + static const uint32_t type_table[UINT8_MAX + 1] __rte_cache_aligned = {
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 */
628 + /* Non tunneled IPv4 */
629 + [22] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
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 |
635 + /* [25] reserved */
636 + [26] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
638 + [27] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
640 + [28] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
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,
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,
697 + /* IPv4 --> GRE/Teredo/VXLAN */
698 + [43] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
699 + RTE_PTYPE_TUNNEL_GRENAT,
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,
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,
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,
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,
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,
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,
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,
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,
884 + /* Non tunneled IPv6 */
885 + [88] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
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 |
891 + /* [91] reserved */
892 + [92] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
894 + [93] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
896 + [94] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
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,
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,
953 + /* IPv6 --> GRE/Teredo/VXLAN */
954 + [109] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
955 + RTE_PTYPE_TUNNEL_GRENAT,
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,
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,
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,
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,
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,
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,
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,
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,
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 |
1148 + [158] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
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 |
1160 + [164] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
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,
1167 + /* All others reserved */
1170 + return type_table[ptype];
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)
1180 #define PKTLEN_SHIFT 10
1183 +desc_to_ptype_v(__m128i descs[4], struct rte_mbuf **rx_pkts)
1185 + __m128i ptype0 = _mm_unpackhi_epi64(descs[0], descs[1]);
1186 + __m128i ptype1 = _mm_unpackhi_epi64(descs[2], descs[3]);
1188 + ptype0 = _mm_srli_epi64(ptype0, 30);
1189 + ptype1 = _mm_srli_epi64(ptype1, 30);
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));
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,
1202 _mm_storeu_si128((void *)&rx_pkts[pos]->rx_descriptor_fields1,
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;