1 From daa3f3ab896ca261fd2eca99609437dacd95dd7a Mon Sep 17 00:00:00 2001
2 From: Shougang Wang <shougangx.wang@intel.com>
3 Date: Fri, 6 Mar 2020 02:24:19 +0000
4 Subject: [DPDK 01/17] net/iavf: unify Rx ptype table
6 This patch unified the Rx ptype table.
8 Signed-off-by: Shougang Wang <shougangx.wang@intel.com>
9 Acked-by: Leyi Rong <leyi.rong@intel.com>
10 Acked-by: Jingjing Wu <jingjing.wu@intel.com>
12 drivers/net/iavf/iavf.h | 3 +-
13 drivers/net/iavf/iavf_ethdev.c | 3 +
14 drivers/net/iavf/iavf_rxtx.c | 604 +++++++++++++++++++++++---
15 drivers/net/iavf/iavf_rxtx.h | 3 +
16 drivers/net/iavf/iavf_rxtx_vec_avx2.c | 21 +-
17 drivers/net/iavf/iavf_rxtx_vec_sse.c | 25 +-
18 6 files changed, 561 insertions(+), 98 deletions(-)
20 diff --git a/drivers/net/iavf/iavf.h b/drivers/net/iavf/iavf.h
21 index fe25d807c..526040c6e 100644
22 --- a/drivers/net/iavf/iavf.h
23 +++ b/drivers/net/iavf/iavf.h
24 @@ -119,7 +119,7 @@ struct iavf_info {
25 uint16_t rxq_map[IAVF_MAX_MSIX_VECTORS];
28 -#define IAVF_MAX_PKT_TYPE 256
29 +#define IAVF_MAX_PKT_TYPE 1024
31 /* Structure to store private data for each VF instance. */
33 @@ -131,6 +131,7 @@ struct iavf_adapter {
37 + const uint32_t *ptype_tbl;
41 diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
42 index 34913f9c4..ee9f82249 100644
43 --- a/drivers/net/iavf/iavf_ethdev.c
44 +++ b/drivers/net/iavf/iavf_ethdev.c
45 @@ -1334,6 +1334,9 @@ iavf_dev_init(struct rte_eth_dev *eth_dev)
49 + /* set default ptype table */
50 + adapter->ptype_tbl = iavf_get_default_ptype_table();
53 eth_dev->data->mac_addrs = rte_zmalloc(
54 "iavf_mac", RTE_ETHER_ADDR_LEN * IAVF_NUM_MACADDR_MAX, 0);
55 diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c
56 index 85d9a8e3b..9eccb7c41 100644
57 --- a/drivers/net/iavf/iavf_rxtx.c
58 +++ b/drivers/net/iavf/iavf_rxtx.c
59 @@ -303,6 +303,9 @@ iavf_dev_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
60 struct iavf_hw *hw = IAVF_DEV_PRIVATE_TO_HW(dev->data->dev_private);
61 struct iavf_adapter *ad =
62 IAVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
63 + struct iavf_info *vf =
64 + IAVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);
65 + struct iavf_vsi *vsi = &vf->vsi;
66 struct iavf_rx_queue *rxq;
67 const struct rte_memzone *mz;
69 @@ -351,6 +354,7 @@ iavf_dev_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
70 rxq->crc_len = 0; /* crc stripping by default */
71 rxq->rx_deferred_start = rx_conf->rx_deferred_start;
75 len = rte_pktmbuf_data_room_size(rxq->mp) - RTE_PKTMBUF_HEADROOM;
76 rxq->rx_buf_len = RTE_ALIGN(len, (1 << IAVF_RXQ_CTX_DBUFF_SHIFT));
77 @@ -769,31 +773,14 @@ iavf_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
78 uint16_t rx_id, nb_hold;
81 - static const uint32_t ptype_tbl[UINT8_MAX + 1] __rte_cache_aligned = {
83 - [1] = RTE_PTYPE_L2_ETHER,
84 - /* [2] - [21] reserved */
85 - [22] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
87 - [23] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
88 - RTE_PTYPE_L4_NONFRAG,
89 - [24] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
92 - [26] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
94 - [27] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
96 - [28] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
98 - /* All others reserved */
100 + const uint32_t *ptype_tbl;
105 rx_id = rxq->rx_tail;
106 rx_ring = rxq->rx_ring;
107 + ptype_tbl = rxq->vsi->adapter->ptype_tbl;
109 while (nb_rx < nb_pkts) {
110 rxdp = &rx_ring[rx_id];
111 @@ -909,25 +896,7 @@ iavf_recv_scattered_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
113 volatile union iavf_rx_desc *rx_ring = rxq->rx_ring;
114 volatile union iavf_rx_desc *rxdp;
115 - static const uint32_t ptype_tbl[UINT8_MAX + 1] __rte_cache_aligned = {
117 - [1] = RTE_PTYPE_L2_ETHER,
118 - /* [2] - [21] reserved */
119 - [22] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
121 - [23] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
122 - RTE_PTYPE_L4_NONFRAG,
123 - [24] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
125 - /* [25] reserved */
126 - [26] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
128 - [27] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
130 - [28] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
132 - /* All others reserved */
134 + const uint32_t *ptype_tbl = rxq->vsi->adapter->ptype_tbl;
136 while (nb_rx < nb_pkts) {
137 rxdp = &rx_ring[rx_id];
138 @@ -1094,25 +1063,7 @@ iavf_rx_scan_hw_ring(struct iavf_rx_queue *rxq)
139 int32_t s[IAVF_LOOK_AHEAD], nb_dd;
140 int32_t i, j, nb_rx = 0;
142 - static const uint32_t ptype_tbl[UINT8_MAX + 1] __rte_cache_aligned = {
144 - [1] = RTE_PTYPE_L2_ETHER,
145 - /* [2] - [21] reserved */
146 - [22] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
148 - [23] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
149 - RTE_PTYPE_L4_NONFRAG,
150 - [24] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
152 - /* [25] reserved */
153 - [26] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
155 - [27] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
157 - [28] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
159 - /* All others reserved */
161 + const uint32_t *ptype_tbl = rxq->vsi->adapter->ptype_tbl;
163 rxdp = &rxq->rx_ring[rxq->rx_tail];
164 rxep = &rxq->sw_ring[rxq->rx_tail];
165 @@ -1921,3 +1872,542 @@ iavf_dev_tx_desc_status(void *tx_queue, uint16_t offset)
167 return RTE_ETH_TX_DESC_FULL;
171 +iavf_get_default_ptype_table(void)
173 + static const uint32_t ptype_tbl[IAVF_MAX_PKT_TYPE]
174 + __rte_cache_aligned = {
177 + [1] = RTE_PTYPE_L2_ETHER,
178 + [2] = RTE_PTYPE_L2_ETHER_TIMESYNC,
179 + /* [3] - [5] reserved */
180 + [6] = RTE_PTYPE_L2_ETHER_LLDP,
181 + /* [7] - [10] reserved */
182 + [11] = RTE_PTYPE_L2_ETHER_ARP,
183 + /* [12] - [21] reserved */
185 + /* Non tunneled IPv4 */
186 + [22] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
188 + [23] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
189 + RTE_PTYPE_L4_NONFRAG,
190 + [24] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
192 + /* [25] reserved */
193 + [26] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
195 + [27] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
197 + [28] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
200 + /* IPv4 --> IPv4 */
201 + [29] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
202 + RTE_PTYPE_TUNNEL_IP |
203 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
204 + RTE_PTYPE_INNER_L4_FRAG,
205 + [30] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
206 + RTE_PTYPE_TUNNEL_IP |
207 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
208 + RTE_PTYPE_INNER_L4_NONFRAG,
209 + [31] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
210 + RTE_PTYPE_TUNNEL_IP |
211 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
212 + RTE_PTYPE_INNER_L4_UDP,
213 + /* [32] reserved */
214 + [33] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
215 + RTE_PTYPE_TUNNEL_IP |
216 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
217 + RTE_PTYPE_INNER_L4_TCP,
218 + [34] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
219 + RTE_PTYPE_TUNNEL_IP |
220 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
221 + RTE_PTYPE_INNER_L4_SCTP,
222 + [35] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
223 + RTE_PTYPE_TUNNEL_IP |
224 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
225 + RTE_PTYPE_INNER_L4_ICMP,
227 + /* IPv4 --> IPv6 */
228 + [36] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
229 + RTE_PTYPE_TUNNEL_IP |
230 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
231 + RTE_PTYPE_INNER_L4_FRAG,
232 + [37] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
233 + RTE_PTYPE_TUNNEL_IP |
234 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
235 + RTE_PTYPE_INNER_L4_NONFRAG,
236 + [38] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
237 + RTE_PTYPE_TUNNEL_IP |
238 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
239 + RTE_PTYPE_INNER_L4_UDP,
240 + /* [39] reserved */
241 + [40] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
242 + RTE_PTYPE_TUNNEL_IP |
243 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
244 + RTE_PTYPE_INNER_L4_TCP,
245 + [41] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
246 + RTE_PTYPE_TUNNEL_IP |
247 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
248 + RTE_PTYPE_INNER_L4_SCTP,
249 + [42] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
250 + RTE_PTYPE_TUNNEL_IP |
251 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
252 + RTE_PTYPE_INNER_L4_ICMP,
254 + /* IPv4 --> GRE/Teredo/VXLAN */
255 + [43] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
256 + RTE_PTYPE_TUNNEL_GRENAT,
258 + /* IPv4 --> GRE/Teredo/VXLAN --> IPv4 */
259 + [44] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
260 + RTE_PTYPE_TUNNEL_GRENAT |
261 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
262 + RTE_PTYPE_INNER_L4_FRAG,
263 + [45] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
264 + RTE_PTYPE_TUNNEL_GRENAT |
265 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
266 + RTE_PTYPE_INNER_L4_NONFRAG,
267 + [46] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
268 + RTE_PTYPE_TUNNEL_GRENAT |
269 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
270 + RTE_PTYPE_INNER_L4_UDP,
271 + /* [47] reserved */
272 + [48] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
273 + RTE_PTYPE_TUNNEL_GRENAT |
274 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
275 + RTE_PTYPE_INNER_L4_TCP,
276 + [49] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
277 + RTE_PTYPE_TUNNEL_GRENAT |
278 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
279 + RTE_PTYPE_INNER_L4_SCTP,
280 + [50] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
281 + RTE_PTYPE_TUNNEL_GRENAT |
282 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
283 + RTE_PTYPE_INNER_L4_ICMP,
285 + /* IPv4 --> GRE/Teredo/VXLAN --> IPv6 */
286 + [51] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
287 + RTE_PTYPE_TUNNEL_GRENAT |
288 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
289 + RTE_PTYPE_INNER_L4_FRAG,
290 + [52] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
291 + RTE_PTYPE_TUNNEL_GRENAT |
292 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
293 + RTE_PTYPE_INNER_L4_NONFRAG,
294 + [53] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
295 + RTE_PTYPE_TUNNEL_GRENAT |
296 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
297 + RTE_PTYPE_INNER_L4_UDP,
298 + /* [54] reserved */
299 + [55] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
300 + RTE_PTYPE_TUNNEL_GRENAT |
301 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
302 + RTE_PTYPE_INNER_L4_TCP,
303 + [56] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
304 + RTE_PTYPE_TUNNEL_GRENAT |
305 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
306 + RTE_PTYPE_INNER_L4_SCTP,
307 + [57] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
308 + RTE_PTYPE_TUNNEL_GRENAT |
309 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
310 + RTE_PTYPE_INNER_L4_ICMP,
312 + /* IPv4 --> GRE/Teredo/VXLAN --> MAC */
313 + [58] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
314 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER,
316 + /* IPv4 --> GRE/Teredo/VXLAN --> MAC --> IPv4 */
317 + [59] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
318 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
319 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
320 + RTE_PTYPE_INNER_L4_FRAG,
321 + [60] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
322 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
323 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
324 + RTE_PTYPE_INNER_L4_NONFRAG,
325 + [61] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
326 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
327 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
328 + RTE_PTYPE_INNER_L4_UDP,
329 + /* [62] reserved */
330 + [63] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
331 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
332 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
333 + RTE_PTYPE_INNER_L4_TCP,
334 + [64] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
335 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
336 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
337 + RTE_PTYPE_INNER_L4_SCTP,
338 + [65] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
339 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
340 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
341 + RTE_PTYPE_INNER_L4_ICMP,
343 + /* IPv4 --> GRE/Teredo/VXLAN --> MAC --> IPv6 */
344 + [66] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
345 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
346 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
347 + RTE_PTYPE_INNER_L4_FRAG,
348 + [67] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
349 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
350 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
351 + RTE_PTYPE_INNER_L4_NONFRAG,
352 + [68] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
353 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
354 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
355 + RTE_PTYPE_INNER_L4_UDP,
356 + /* [69] reserved */
357 + [70] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
358 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
359 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
360 + RTE_PTYPE_INNER_L4_TCP,
361 + [71] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
362 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
363 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
364 + RTE_PTYPE_INNER_L4_SCTP,
365 + [72] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
366 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
367 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
368 + RTE_PTYPE_INNER_L4_ICMP,
369 + /* [73] - [87] reserved */
371 + /* Non tunneled IPv6 */
372 + [88] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
374 + [89] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
375 + RTE_PTYPE_L4_NONFRAG,
376 + [90] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
378 + /* [91] reserved */
379 + [92] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
381 + [93] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
383 + [94] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
386 + /* IPv6 --> IPv4 */
387 + [95] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
388 + RTE_PTYPE_TUNNEL_IP |
389 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
390 + RTE_PTYPE_INNER_L4_FRAG,
391 + [96] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
392 + RTE_PTYPE_TUNNEL_IP |
393 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
394 + RTE_PTYPE_INNER_L4_NONFRAG,
395 + [97] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
396 + RTE_PTYPE_TUNNEL_IP |
397 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
398 + RTE_PTYPE_INNER_L4_UDP,
399 + /* [98] reserved */
400 + [99] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
401 + RTE_PTYPE_TUNNEL_IP |
402 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
403 + RTE_PTYPE_INNER_L4_TCP,
404 + [100] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
405 + RTE_PTYPE_TUNNEL_IP |
406 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
407 + RTE_PTYPE_INNER_L4_SCTP,
408 + [101] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
409 + RTE_PTYPE_TUNNEL_IP |
410 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
411 + RTE_PTYPE_INNER_L4_ICMP,
413 + /* IPv6 --> IPv6 */
414 + [102] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
415 + RTE_PTYPE_TUNNEL_IP |
416 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
417 + RTE_PTYPE_INNER_L4_FRAG,
418 + [103] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
419 + RTE_PTYPE_TUNNEL_IP |
420 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
421 + RTE_PTYPE_INNER_L4_NONFRAG,
422 + [104] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
423 + RTE_PTYPE_TUNNEL_IP |
424 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
425 + RTE_PTYPE_INNER_L4_UDP,
426 + /* [105] reserved */
427 + [106] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
428 + RTE_PTYPE_TUNNEL_IP |
429 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
430 + RTE_PTYPE_INNER_L4_TCP,
431 + [107] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
432 + RTE_PTYPE_TUNNEL_IP |
433 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
434 + RTE_PTYPE_INNER_L4_SCTP,
435 + [108] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
436 + RTE_PTYPE_TUNNEL_IP |
437 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
438 + RTE_PTYPE_INNER_L4_ICMP,
440 + /* IPv6 --> GRE/Teredo/VXLAN */
441 + [109] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
442 + RTE_PTYPE_TUNNEL_GRENAT,
444 + /* IPv6 --> GRE/Teredo/VXLAN --> IPv4 */
445 + [110] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
446 + RTE_PTYPE_TUNNEL_GRENAT |
447 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
448 + RTE_PTYPE_INNER_L4_FRAG,
449 + [111] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
450 + RTE_PTYPE_TUNNEL_GRENAT |
451 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
452 + RTE_PTYPE_INNER_L4_NONFRAG,
453 + [112] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
454 + RTE_PTYPE_TUNNEL_GRENAT |
455 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
456 + RTE_PTYPE_INNER_L4_UDP,
457 + /* [113] reserved */
458 + [114] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
459 + RTE_PTYPE_TUNNEL_GRENAT |
460 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
461 + RTE_PTYPE_INNER_L4_TCP,
462 + [115] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
463 + RTE_PTYPE_TUNNEL_GRENAT |
464 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
465 + RTE_PTYPE_INNER_L4_SCTP,
466 + [116] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
467 + RTE_PTYPE_TUNNEL_GRENAT |
468 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
469 + RTE_PTYPE_INNER_L4_ICMP,
471 + /* IPv6 --> GRE/Teredo/VXLAN --> IPv6 */
472 + [117] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
473 + RTE_PTYPE_TUNNEL_GRENAT |
474 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
475 + RTE_PTYPE_INNER_L4_FRAG,
476 + [118] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
477 + RTE_PTYPE_TUNNEL_GRENAT |
478 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
479 + RTE_PTYPE_INNER_L4_NONFRAG,
480 + [119] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
481 + RTE_PTYPE_TUNNEL_GRENAT |
482 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
483 + RTE_PTYPE_INNER_L4_UDP,
484 + /* [120] reserved */
485 + [121] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
486 + RTE_PTYPE_TUNNEL_GRENAT |
487 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
488 + RTE_PTYPE_INNER_L4_TCP,
489 + [122] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
490 + RTE_PTYPE_TUNNEL_GRENAT |
491 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
492 + RTE_PTYPE_INNER_L4_SCTP,
493 + [123] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
494 + RTE_PTYPE_TUNNEL_GRENAT |
495 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
496 + RTE_PTYPE_INNER_L4_ICMP,
498 + /* IPv6 --> GRE/Teredo/VXLAN --> MAC */
499 + [124] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
500 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER,
502 + /* IPv6 --> GRE/Teredo/VXLAN --> MAC --> IPv4 */
503 + [125] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
504 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
505 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
506 + RTE_PTYPE_INNER_L4_FRAG,
507 + [126] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
508 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
509 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
510 + RTE_PTYPE_INNER_L4_NONFRAG,
511 + [127] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
512 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
513 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
514 + RTE_PTYPE_INNER_L4_UDP,
515 + /* [128] reserved */
516 + [129] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
517 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
518 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
519 + RTE_PTYPE_INNER_L4_TCP,
520 + [130] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
521 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
522 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
523 + RTE_PTYPE_INNER_L4_SCTP,
524 + [131] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
525 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
526 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
527 + RTE_PTYPE_INNER_L4_ICMP,
529 + /* IPv6 --> GRE/Teredo/VXLAN --> MAC --> IPv6 */
530 + [132] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
531 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
532 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
533 + RTE_PTYPE_INNER_L4_FRAG,
534 + [133] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
535 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
536 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
537 + RTE_PTYPE_INNER_L4_NONFRAG,
538 + [134] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
539 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
540 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
541 + RTE_PTYPE_INNER_L4_UDP,
542 + /* [135] reserved */
543 + [136] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
544 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
545 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
546 + RTE_PTYPE_INNER_L4_TCP,
547 + [137] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
548 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
549 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
550 + RTE_PTYPE_INNER_L4_SCTP,
551 + [138] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
552 + RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
553 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
554 + RTE_PTYPE_INNER_L4_ICMP,
555 + /* [139] - [299] reserved */
558 + [300] = RTE_PTYPE_L2_ETHER_PPPOE,
559 + [301] = RTE_PTYPE_L2_ETHER_PPPOE,
561 + /* PPPoE --> IPv4 */
562 + [302] = RTE_PTYPE_L2_ETHER_PPPOE |
563 + RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
565 + [303] = RTE_PTYPE_L2_ETHER_PPPOE |
566 + RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
567 + RTE_PTYPE_L4_NONFRAG,
568 + [304] = RTE_PTYPE_L2_ETHER_PPPOE |
569 + RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
571 + [305] = RTE_PTYPE_L2_ETHER_PPPOE |
572 + RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
574 + [306] = RTE_PTYPE_L2_ETHER_PPPOE |
575 + RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
577 + [307] = RTE_PTYPE_L2_ETHER_PPPOE |
578 + RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
581 + /* PPPoE --> IPv6 */
582 + [308] = RTE_PTYPE_L2_ETHER_PPPOE |
583 + RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
585 + [309] = RTE_PTYPE_L2_ETHER_PPPOE |
586 + RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
587 + RTE_PTYPE_L4_NONFRAG,
588 + [310] = RTE_PTYPE_L2_ETHER_PPPOE |
589 + RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
591 + [311] = RTE_PTYPE_L2_ETHER_PPPOE |
592 + RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
594 + [312] = RTE_PTYPE_L2_ETHER_PPPOE |
595 + RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
597 + [313] = RTE_PTYPE_L2_ETHER_PPPOE |
598 + RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
600 + /* [314] - [324] reserved */
602 + /* IPv4/IPv6 --> GTPC/GTPU */
603 + [325] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
604 + RTE_PTYPE_TUNNEL_GTPC,
605 + [326] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
606 + RTE_PTYPE_TUNNEL_GTPC,
607 + [327] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
608 + RTE_PTYPE_TUNNEL_GTPC,
609 + [328] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
610 + RTE_PTYPE_TUNNEL_GTPC,
611 + [329] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
612 + RTE_PTYPE_TUNNEL_GTPU,
613 + [330] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
614 + RTE_PTYPE_TUNNEL_GTPU,
616 + /* IPv4 --> GTPU --> IPv4 */
617 + [331] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
618 + RTE_PTYPE_TUNNEL_GTPU |
619 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
620 + RTE_PTYPE_INNER_L4_FRAG,
621 + [332] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
622 + RTE_PTYPE_TUNNEL_GTPU |
623 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
624 + RTE_PTYPE_INNER_L4_NONFRAG,
625 + [333] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
626 + RTE_PTYPE_TUNNEL_GTPU |
627 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
628 + RTE_PTYPE_INNER_L4_UDP,
629 + [334] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
630 + RTE_PTYPE_TUNNEL_GTPU |
631 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
632 + RTE_PTYPE_INNER_L4_TCP,
633 + [335] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
634 + RTE_PTYPE_TUNNEL_GTPU |
635 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
636 + RTE_PTYPE_INNER_L4_ICMP,
638 + /* IPv6 --> GTPU --> IPv4 */
639 + [336] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
640 + RTE_PTYPE_TUNNEL_GTPU |
641 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
642 + RTE_PTYPE_INNER_L4_FRAG,
643 + [337] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
644 + RTE_PTYPE_TUNNEL_GTPU |
645 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
646 + RTE_PTYPE_INNER_L4_NONFRAG,
647 + [338] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
648 + RTE_PTYPE_TUNNEL_GTPU |
649 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
650 + RTE_PTYPE_INNER_L4_UDP,
651 + [339] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
652 + RTE_PTYPE_TUNNEL_GTPU |
653 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
654 + RTE_PTYPE_INNER_L4_TCP,
655 + [340] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
656 + RTE_PTYPE_TUNNEL_GTPU |
657 + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
658 + RTE_PTYPE_INNER_L4_ICMP,
660 + /* IPv4 --> GTPU --> IPv6 */
661 + [341] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
662 + RTE_PTYPE_TUNNEL_GTPU |
663 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
664 + RTE_PTYPE_INNER_L4_FRAG,
665 + [342] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
666 + RTE_PTYPE_TUNNEL_GTPU |
667 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
668 + RTE_PTYPE_INNER_L4_NONFRAG,
669 + [343] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
670 + RTE_PTYPE_TUNNEL_GTPU |
671 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
672 + RTE_PTYPE_INNER_L4_UDP,
673 + [344] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
674 + RTE_PTYPE_TUNNEL_GTPU |
675 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
676 + RTE_PTYPE_INNER_L4_TCP,
677 + [345] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
678 + RTE_PTYPE_TUNNEL_GTPU |
679 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
680 + RTE_PTYPE_INNER_L4_ICMP,
682 + /* IPv6 --> GTPU --> IPv6 */
683 + [346] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
684 + RTE_PTYPE_TUNNEL_GTPU |
685 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
686 + RTE_PTYPE_INNER_L4_FRAG,
687 + [347] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
688 + RTE_PTYPE_TUNNEL_GTPU |
689 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
690 + RTE_PTYPE_INNER_L4_NONFRAG,
691 + [348] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
692 + RTE_PTYPE_TUNNEL_GTPU |
693 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
694 + RTE_PTYPE_INNER_L4_UDP,
695 + [349] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
696 + RTE_PTYPE_TUNNEL_GTPU |
697 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
698 + RTE_PTYPE_INNER_L4_TCP,
699 + [350] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
700 + RTE_PTYPE_TUNNEL_GTPU |
701 + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
702 + RTE_PTYPE_INNER_L4_ICMP,
703 + /* All others reserved */
708 diff --git a/drivers/net/iavf/iavf_rxtx.h b/drivers/net/iavf/iavf_rxtx.h
709 index 60d02c521..09b5bd99e 100644
710 --- a/drivers/net/iavf/iavf_rxtx.h
711 +++ b/drivers/net/iavf/iavf_rxtx.h
712 @@ -105,6 +105,7 @@ struct iavf_rx_queue {
713 uint16_t rx_buf_len; /* The packet buffer size */
714 uint16_t rx_hdr_len; /* The header buffer size */
715 uint16_t max_pkt_len; /* Maximum packet length */
716 + struct iavf_vsi *vsi; /**< the VSI this queue belongs to */
718 bool q_set; /* if rx queue has been configured */
719 bool rx_deferred_start; /* don't start this queue in dev start */
720 @@ -216,6 +217,8 @@ int iavf_tx_vec_dev_check(struct rte_eth_dev *dev);
721 int iavf_rxq_vec_setup(struct iavf_rx_queue *rxq);
722 int iavf_txq_vec_setup(struct iavf_tx_queue *txq);
724 +const uint32_t *iavf_get_default_ptype_table(void);
727 void iavf_dump_rx_descriptor(struct iavf_rx_queue *rxq,
728 const volatile void *desc,
729 diff --git a/drivers/net/iavf/iavf_rxtx_vec_avx2.c b/drivers/net/iavf/iavf_rxtx_vec_avx2.c
730 index 7c5d23fd0..2587083d8 100644
731 --- a/drivers/net/iavf/iavf_rxtx_vec_avx2.c
732 +++ b/drivers/net/iavf/iavf_rxtx_vec_avx2.c
733 @@ -142,25 +142,8 @@ _iavf_recv_raw_pkts_vec_avx2(struct iavf_rx_queue *rxq,
734 #define IAVF_DESCS_PER_LOOP_AVX 8
736 /* const uint32_t *ptype_tbl = rxq->vsi->adapter->ptype_tbl; */
737 - static const uint32_t type_table[UINT8_MAX + 1] __rte_cache_aligned = {
739 - [1] = RTE_PTYPE_L2_ETHER,
740 - /* [2] - [21] reserved */
741 - [22] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
743 - [23] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
744 - RTE_PTYPE_L4_NONFRAG,
745 - [24] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
747 - /* [25] reserved */
748 - [26] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
750 - [27] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
752 - [28] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
754 - /* All others reserved */
756 + const uint32_t *type_table = rxq->vsi->adapter->ptype_tbl;
758 const __m256i mbuf_init = _mm256_set_epi64x(0, 0,
759 0, rxq->mbuf_initializer);
760 /* struct iavf_rx_entry *sw_ring = &rxq->sw_ring[rxq->rx_tail]; */
761 diff --git a/drivers/net/iavf/iavf_rxtx_vec_sse.c b/drivers/net/iavf/iavf_rxtx_vec_sse.c
762 index b978cc6e0..0365c49e1 100644
763 --- a/drivers/net/iavf/iavf_rxtx_vec_sse.c
764 +++ b/drivers/net/iavf/iavf_rxtx_vec_sse.c
765 @@ -192,29 +192,11 @@ desc_to_olflags_v(struct iavf_rx_queue *rxq, __m128i descs[4],
766 #define PKTLEN_SHIFT 10
769 -desc_to_ptype_v(__m128i descs[4], struct rte_mbuf **rx_pkts)
770 +desc_to_ptype_v(__m128i descs[4], struct rte_mbuf **rx_pkts,
771 + const uint32_t *type_table)
773 __m128i ptype0 = _mm_unpackhi_epi64(descs[0], descs[1]);
774 __m128i ptype1 = _mm_unpackhi_epi64(descs[2], descs[3]);
775 - static const uint32_t type_table[UINT8_MAX + 1] __rte_cache_aligned = {
777 - [1] = RTE_PTYPE_L2_ETHER,
778 - /* [2] - [21] reserved */
779 - [22] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
781 - [23] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
782 - RTE_PTYPE_L4_NONFRAG,
783 - [24] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
785 - /* [25] reserved */
786 - [26] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
788 - [27] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
790 - [28] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
792 - /* All others reserved */
795 ptype0 = _mm_srli_epi64(ptype0, 30);
796 ptype1 = _mm_srli_epi64(ptype1, 30);
797 @@ -240,6 +222,7 @@ _recv_raw_pkts_vec(struct iavf_rx_queue *rxq, struct rte_mbuf **rx_pkts,
801 + const uint32_t *ptype_tbl = rxq->vsi->adapter->ptype_tbl;
803 __m128i crc_adjust = _mm_set_epi16(
804 0, 0, 0, /* ignore non-length fields */
805 @@ -456,7 +439,7 @@ _recv_raw_pkts_vec(struct iavf_rx_queue *rxq, struct rte_mbuf **rx_pkts,
807 _mm_storeu_si128((void *)&rx_pkts[pos]->rx_descriptor_fields1,
809 - desc_to_ptype_v(descs, &rx_pkts[pos]);
810 + desc_to_ptype_v(descs, &rx_pkts[pos], ptype_tbl);
811 /* C.4 calc avaialbe number of desc */
812 var = __builtin_popcountll(_mm_cvtsi128_si64(staterr));