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
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 | 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(-)
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)
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 - /* All others reserved */
559 - return type_table[ptype];
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 ||
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)
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);
583 +/* For each value it means, datasheet of hardware can tell more details
585 + * @note: fix i40e_dev_supported_ptypes_get() if any change here.
587 +#define RTE_PTYPE_L2_ETHER_NSH 0x00000005
588 +static inline uint32_t
589 +i40e_rxd_pkt_type_mapping(uint8_t ptype)
591 + static const uint32_t type_table[UINT8_MAX + 1] __rte_cache_aligned = {
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 */
602 + /* Non tunneled IPv4 */
603 + [22] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
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 |
609 + /* [25] reserved */
610 + [26] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
612 + [27] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
614 + [28] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
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,
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,
671 + /* IPv4 --> GRE/Teredo/VXLAN */
672 + [43] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
673 + RTE_PTYPE_TUNNEL_GRENAT,
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,
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,
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,
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,
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,
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,
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,
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,
858 + /* Non tunneled IPv6 */
859 + [88] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
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 |
865 + /* [91] reserved */
866 + [92] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
868 + [93] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
870 + [94] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
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,
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,
927 + /* IPv6 --> GRE/Teredo/VXLAN */
928 + [109] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
929 + RTE_PTYPE_TUNNEL_GRENAT,
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,
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,
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,
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,
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,
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,
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,
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,
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 |
1122 + [158] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
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 |
1134 + [164] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
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,
1141 + /* All others reserved */
1144 + return type_table[ptype];
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];
1157 +desc_to_ptype_v(__m128i descs[4], struct rte_mbuf **rx_pkts)
1159 + __m128i ptype0 = _mm_unpackhi_epi64(descs[0], descs[1]);
1160 + __m128i ptype1 = _mm_unpackhi_epi64(descs[2], descs[3]);
1162 + ptype0 = _mm_srli_epi64(ptype0, 30);
1163 + ptype1 = _mm_srli_epi64(ptype1, 30);
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));
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,
1176 _mm_storeu_si128((void *)&rx_pkts[pos]->rx_descriptor_fields1,
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;