Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause
2 : : * Copyright(c) 2010-2015 Intel Corporation
3 : : */
4 : :
5 : : #ifndef _I40E_RXTX_H_
6 : : #define _I40E_RXTX_H_
7 : :
8 : : #define RTE_PMD_I40E_RX_MAX_BURST 32
9 : : #define RTE_PMD_I40E_TX_MAX_BURST 32
10 : :
11 : : #define RTE_I40E_VPMD_RX_BURST 32
12 : : #define RTE_I40E_VPMD_TX_BURST 32
13 : : #define RTE_I40E_RXQ_REARM_THRESH 32
14 : : #define RTE_I40E_MAX_RX_BURST RTE_I40E_RXQ_REARM_THRESH
15 : : #define RTE_I40E_TX_MAX_FREE_BUF_SZ 64
16 : : #define RTE_I40E_DESCS_PER_LOOP 4
17 : :
18 : : #define I40E_RXBUF_SZ_1024 1024
19 : : #define I40E_RXBUF_SZ_2048 2048
20 : :
21 : : /* In none-PXE mode QLEN must be whole number of 32 descriptors. */
22 : : #define I40E_ALIGN_RING_DESC 32
23 : :
24 : : /* Max data buffer size must be 16K - 128 bytes */
25 : : #define I40E_RX_MAX_DATA_BUF_SIZE (16 * 1024 - 128)
26 : :
27 : : #define I40E_MIN_RING_DESC 64
28 : : #define I40E_MAX_RING_DESC 4096
29 : :
30 : : #define I40E_FDIR_NUM_TX_DESC (I40E_FDIR_PRG_PKT_CNT << 1)
31 : : #define I40E_FDIR_NUM_RX_DESC (I40E_FDIR_PRG_PKT_CNT << 1)
32 : :
33 : : #define I40E_MIN_TSO_MSS 256
34 : : #define I40E_MAX_TSO_MSS 9674
35 : :
36 : : #define I40E_TX_MAX_SEG UINT8_MAX
37 : : #define I40E_TX_MAX_MTU_SEG 8
38 : :
39 : : #define I40E_TX_MIN_PKT_LEN 17
40 : :
41 : : /* Shared FDIR masks between scalar / vector drivers */
42 : : #define I40E_RX_DESC_EXT_STATUS_FLEXBH_MASK 0x03
43 : : #define I40E_RX_DESC_EXT_STATUS_FLEXBH_FD_ID 0x01
44 : : #define I40E_RX_DESC_EXT_STATUS_FLEXBH_FLEX 0x02
45 : : #define I40E_RX_DESC_EXT_STATUS_FLEXBL_MASK 0x03
46 : : #define I40E_RX_DESC_EXT_STATUS_FLEXBL_FLEX 0x01
47 : :
48 : : #undef container_of
49 : : #define container_of(ptr, type, member) ({ \
50 : : typeof(((type *)0)->member)(*__mptr) = (ptr); \
51 : : (type *)((char *)__mptr - offsetof(type, member)); })
52 : :
53 : : #define I40E_TD_CMD (I40E_TX_DESC_CMD_ICRC |\
54 : : I40E_TX_DESC_CMD_EOP)
55 : :
56 : : enum i40e_header_split_mode {
57 : : i40e_header_split_none = 0,
58 : : i40e_header_split_enabled = 1,
59 : : i40e_header_split_always = 2,
60 : : i40e_header_split_reserved
61 : : };
62 : :
63 : : #define I40E_HEADER_SPLIT_NONE ((uint8_t)0)
64 : : #define I40E_HEADER_SPLIT_L2 ((uint8_t)(1 << 0))
65 : : #define I40E_HEADER_SPLIT_IP ((uint8_t)(1 << 1))
66 : : #define I40E_HEADER_SPLIT_UDP_TCP ((uint8_t)(1 << 2))
67 : : #define I40E_HEADER_SPLIT_SCTP ((uint8_t)(1 << 3))
68 : : #define I40E_HEADER_SPLIT_ALL (I40E_HEADER_SPLIT_L2 | \
69 : : I40E_HEADER_SPLIT_IP | \
70 : : I40E_HEADER_SPLIT_UDP_TCP | \
71 : : I40E_HEADER_SPLIT_SCTP)
72 : :
73 : : /* HW desc structure, both 16-byte and 32-byte types are supported */
74 : : #ifdef RTE_LIBRTE_I40E_16BYTE_RX_DESC
75 : : #define i40e_rx_desc i40e_16byte_rx_desc
76 : : #else
77 : : #define i40e_rx_desc i40e_32byte_rx_desc
78 : : #endif
79 : :
80 : : struct i40e_rx_entry {
81 : : struct rte_mbuf *mbuf;
82 : : };
83 : :
84 : : /*
85 : : * Structure associated with each RX queue.
86 : : */
87 : : struct i40e_rx_queue {
88 : : struct rte_mempool *mp; /**< mbuf pool to populate RX ring */
89 : : volatile union i40e_rx_desc *rx_ring;/**< RX ring virtual address */
90 : : uint64_t rx_ring_phys_addr; /**< RX ring DMA address */
91 : : struct i40e_rx_entry *sw_ring; /**< address of RX soft ring */
92 : : uint16_t nb_rx_desc; /**< number of RX descriptors */
93 : : uint16_t rx_free_thresh; /**< max free RX desc to hold */
94 : : uint16_t rx_tail; /**< current value of tail */
95 : : uint16_t nb_rx_hold; /**< number of held free RX desc */
96 : : struct rte_mbuf *pkt_first_seg; /**< first segment of current packet */
97 : : struct rte_mbuf *pkt_last_seg; /**< last segment of current packet */
98 : : struct rte_mbuf fake_mbuf; /**< dummy mbuf */
99 : : #ifdef RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC
100 : : uint16_t rx_nb_avail; /**< number of staged packets ready */
101 : : uint16_t rx_next_avail; /**< index of next staged packets */
102 : : uint16_t rx_free_trigger; /**< triggers rx buffer allocation */
103 : : struct rte_mbuf *rx_stage[RTE_PMD_I40E_RX_MAX_BURST * 2];
104 : : #endif
105 : :
106 : : uint16_t rxrearm_nb; /**< number of remaining to be re-armed */
107 : : uint16_t rxrearm_start; /**< the idx we start the re-arming from */
108 : : uint64_t mbuf_initializer; /**< value to init mbufs */
109 : :
110 : : uint16_t port_id; /**< device port ID */
111 : : uint8_t crc_len; /**< 0 if CRC stripped, 4 otherwise */
112 : : uint8_t fdir_enabled; /**< 0 if FDIR disabled, 1 when enabled */
113 : : uint16_t queue_id; /**< RX queue index */
114 : : uint16_t reg_idx; /**< RX queue register index */
115 : : uint8_t drop_en; /**< if not 0, set register bit */
116 : : volatile uint8_t *qrx_tail; /**< register address of tail */
117 : : struct i40e_vsi *vsi; /**< the VSI this queue belongs to */
118 : : uint16_t rx_buf_len; /* The packet buffer size */
119 : : uint16_t rx_hdr_len; /* The header buffer size */
120 : : uint16_t max_pkt_len; /* Maximum packet length */
121 : : uint8_t hs_mode; /* Header Split mode */
122 : : bool q_set; /**< indicate if rx queue has been configured */
123 : : bool rx_deferred_start; /**< don't start this queue in dev start */
124 : : uint16_t rx_using_sse; /**<flag indicate the usage of vPMD for rx */
125 : : uint8_t dcb_tc; /**< Traffic class of rx queue */
126 : : uint64_t offloads; /**< Rx offload flags of RTE_ETH_RX_OFFLOAD_* */
127 : : const struct rte_memzone *mz;
128 : : };
129 : :
130 : : struct i40e_tx_entry {
131 : : struct rte_mbuf *mbuf;
132 : : uint16_t next_id;
133 : : uint16_t last_id;
134 : : };
135 : :
136 : : struct i40e_vec_tx_entry {
137 : : struct rte_mbuf *mbuf;
138 : : };
139 : :
140 : : /*
141 : : * Structure associated with each TX queue.
142 : : */
143 : : struct i40e_tx_queue {
144 : : uint16_t nb_tx_desc; /**< number of TX descriptors */
145 : : uint64_t tx_ring_phys_addr; /**< TX ring DMA address */
146 : : volatile struct i40e_tx_desc *tx_ring; /**< TX ring virtual address */
147 : : struct i40e_tx_entry *sw_ring; /**< virtual address of SW ring */
148 : : uint16_t tx_tail; /**< current value of tail register */
149 : : volatile uint8_t *qtx_tail; /**< register address of tail */
150 : : uint16_t nb_tx_used; /**< number of TX desc used since RS bit set */
151 : : /**< index to last TX descriptor to have been cleaned */
152 : : uint16_t last_desc_cleaned;
153 : : /**< Total number of TX descriptors ready to be allocated. */
154 : : uint16_t nb_tx_free;
155 : : /**< Start freeing TX buffers if there are less free descriptors than
156 : : this value. */
157 : : uint16_t tx_free_thresh;
158 : : /** Number of TX descriptors to use before RS bit is set. */
159 : : uint16_t tx_rs_thresh;
160 : : uint8_t pthresh; /**< Prefetch threshold register. */
161 : : uint8_t hthresh; /**< Host threshold register. */
162 : : uint8_t wthresh; /**< Write-back threshold reg. */
163 : : uint16_t port_id; /**< Device port identifier. */
164 : : uint16_t queue_id; /**< TX queue index. */
165 : : uint16_t reg_idx;
166 : : struct i40e_vsi *vsi; /**< the VSI this queue belongs to */
167 : : uint16_t tx_next_dd;
168 : : uint16_t tx_next_rs;
169 : : bool q_set; /**< indicate if tx queue has been configured */
170 : : bool tx_deferred_start; /**< don't start this queue in dev start */
171 : : uint8_t dcb_tc; /**< Traffic class of tx queue */
172 : : uint64_t offloads; /**< Tx offload flags of RTE_ETH_TX_OFFLOAD_* */
173 : : const struct rte_memzone *mz;
174 : : };
175 : :
176 : : /** Offload features */
177 : : union i40e_tx_offload {
178 : : uint64_t data;
179 : : struct {
180 : : uint64_t l2_len:7; /**< L2 (MAC) Header Length. */
181 : : uint64_t l3_len:9; /**< L3 (IP) Header Length. */
182 : : uint64_t l4_len:8; /**< L4 Header Length. */
183 : : uint64_t tso_segsz:16; /**< TCP TSO segment size */
184 : : uint64_t outer_l2_len:8; /**< outer L2 Header Length */
185 : : uint64_t outer_l3_len:16; /**< outer L3 Header Length */
186 : : };
187 : : };
188 : :
189 : : int i40e_dev_rx_queue_start(struct rte_eth_dev *dev, uint16_t rx_queue_id);
190 : : int i40e_dev_rx_queue_stop(struct rte_eth_dev *dev, uint16_t rx_queue_id);
191 : : int i40e_dev_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id);
192 : : int i40e_dev_tx_queue_stop(struct rte_eth_dev *dev, uint16_t tx_queue_id);
193 : : const uint32_t *i40e_dev_supported_ptypes_get(struct rte_eth_dev *dev);
194 : : int i40e_dev_rx_queue_setup(struct rte_eth_dev *dev,
195 : : uint16_t queue_idx,
196 : : uint16_t nb_desc,
197 : : unsigned int socket_id,
198 : : const struct rte_eth_rxconf *rx_conf,
199 : : struct rte_mempool *mp);
200 : : int i40e_dev_tx_queue_setup(struct rte_eth_dev *dev,
201 : : uint16_t queue_idx,
202 : : uint16_t nb_desc,
203 : : unsigned int socket_id,
204 : : const struct rte_eth_txconf *tx_conf);
205 : : void i40e_rx_queue_release(void *rxq);
206 : : void i40e_tx_queue_release(void *txq);
207 : : void i40e_dev_rx_queue_release(struct rte_eth_dev *dev, uint16_t qid);
208 : : void i40e_dev_tx_queue_release(struct rte_eth_dev *dev, uint16_t qid);
209 : : uint16_t i40e_recv_pkts(void *rx_queue,
210 : : struct rte_mbuf **rx_pkts,
211 : : uint16_t nb_pkts);
212 : : uint16_t i40e_recv_scattered_pkts(void *rx_queue,
213 : : struct rte_mbuf **rx_pkts,
214 : : uint16_t nb_pkts);
215 : : uint16_t i40e_xmit_pkts(void *tx_queue,
216 : : struct rte_mbuf **tx_pkts,
217 : : uint16_t nb_pkts);
218 : : uint16_t i40e_simple_prep_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
219 : : uint16_t nb_pkts);
220 : : uint16_t i40e_prep_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
221 : : uint16_t nb_pkts);
222 : : int i40e_tx_queue_init(struct i40e_tx_queue *txq);
223 : : int i40e_rx_queue_init(struct i40e_rx_queue *rxq);
224 : : void i40e_free_tx_resources(struct i40e_tx_queue *txq);
225 : : void i40e_free_rx_resources(struct i40e_rx_queue *rxq);
226 : : void i40e_dev_clear_queues(struct rte_eth_dev *dev);
227 : : void i40e_dev_free_queues(struct rte_eth_dev *dev);
228 : : void i40e_reset_rx_queue(struct i40e_rx_queue *rxq);
229 : : void i40e_reset_tx_queue(struct i40e_tx_queue *txq);
230 : : void i40e_tx_queue_release_mbufs(struct i40e_tx_queue *txq);
231 : : int i40e_tx_done_cleanup(void *txq, uint32_t free_cnt);
232 : : int i40e_alloc_rx_queue_mbufs(struct i40e_rx_queue *rxq);
233 : : void i40e_rx_queue_release_mbufs(struct i40e_rx_queue *rxq);
234 : :
235 : : uint32_t i40e_dev_rx_queue_count(void *rx_queue);
236 : : int i40e_dev_rx_descriptor_status(void *rx_queue, uint16_t offset);
237 : : int i40e_dev_tx_descriptor_status(void *tx_queue, uint16_t offset);
238 : :
239 : : uint16_t i40e_recycle_tx_mbufs_reuse_vec(void *tx_queue,
240 : : struct rte_eth_recycle_rxq_info *recycle_rxq_info);
241 : : void i40e_recycle_rx_descriptors_refill_vec(void *rx_queue, uint16_t nb_mbufs);
242 : :
243 : : uint16_t i40e_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
244 : : uint16_t nb_pkts);
245 : : uint16_t i40e_recv_scattered_pkts_vec(void *rx_queue,
246 : : struct rte_mbuf **rx_pkts,
247 : : uint16_t nb_pkts);
248 : : int i40e_rx_vec_dev_conf_condition_check(struct rte_eth_dev *dev);
249 : : int i40e_rxq_vec_setup(struct i40e_rx_queue *rxq);
250 : : int i40e_txq_vec_setup(struct i40e_tx_queue *txq);
251 : : void i40e_rx_queue_release_mbufs_vec(struct i40e_rx_queue *rxq);
252 : : uint16_t i40e_xmit_fixed_burst_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
253 : : uint16_t nb_pkts);
254 : : void i40e_set_rx_function(struct rte_eth_dev *dev);
255 : : void i40e_set_tx_function_flag(struct rte_eth_dev *dev,
256 : : struct i40e_tx_queue *txq);
257 : : void i40e_set_tx_function(struct rte_eth_dev *dev);
258 : : void i40e_set_default_ptype_table(struct rte_eth_dev *dev);
259 : : void i40e_set_default_pctype_table(struct rte_eth_dev *dev);
260 : : uint16_t i40e_recv_pkts_vec_avx2(void *rx_queue, struct rte_mbuf **rx_pkts,
261 : : uint16_t nb_pkts);
262 : : uint16_t i40e_recv_scattered_pkts_vec_avx2(void *rx_queue,
263 : : struct rte_mbuf **rx_pkts, uint16_t nb_pkts);
264 : : uint16_t i40e_xmit_pkts_vec_avx2(void *tx_queue, struct rte_mbuf **tx_pkts,
265 : : uint16_t nb_pkts);
266 : : int i40e_get_monitor_addr(void *rx_queue, struct rte_power_monitor_cond *pmc);
267 : : uint16_t i40e_recv_pkts_vec_avx512(void *rx_queue,
268 : : struct rte_mbuf **rx_pkts,
269 : : uint16_t nb_pkts);
270 : : uint16_t i40e_recv_scattered_pkts_vec_avx512(void *rx_queue,
271 : : struct rte_mbuf **rx_pkts,
272 : : uint16_t nb_pkts);
273 : : uint16_t i40e_xmit_pkts_vec_avx512(void *tx_queue,
274 : : struct rte_mbuf **tx_pkts,
275 : : uint16_t nb_pkts);
276 : :
277 : : /* For each value it means, datasheet of hardware can tell more details
278 : : *
279 : : * @note: fix i40e_dev_supported_ptypes_get() if any change here.
280 : : */
281 : : static inline uint32_t
282 : : i40e_get_default_pkt_type(uint8_t ptype)
283 : : {
284 : : static const uint32_t type_table[UINT8_MAX + 1] __rte_cache_aligned = {
285 : : /* L2 types */
286 : : /* [0] reserved */
287 : : [1] = RTE_PTYPE_L2_ETHER,
288 : : [2] = RTE_PTYPE_L2_ETHER_TIMESYNC,
289 : : /* [3] - [5] reserved */
290 : : [6] = RTE_PTYPE_L2_ETHER_LLDP,
291 : : /* [7] - [10] reserved */
292 : : [11] = RTE_PTYPE_L2_ETHER_ARP,
293 : : /* [12] - [21] reserved */
294 : :
295 : : /* Non tunneled IPv4 */
296 : : [22] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
297 : : RTE_PTYPE_L4_FRAG,
298 : : [23] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
299 : : RTE_PTYPE_L4_NONFRAG,
300 : : [24] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
301 : : RTE_PTYPE_L4_UDP,
302 : : /* [25] reserved */
303 : : [26] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
304 : : RTE_PTYPE_L4_TCP,
305 : : [27] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
306 : : RTE_PTYPE_L4_SCTP,
307 : : [28] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
308 : : RTE_PTYPE_L4_ICMP,
309 : :
310 : : /* IPv4 --> IPv4 */
311 : : [29] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
312 : : RTE_PTYPE_TUNNEL_IP |
313 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
314 : : RTE_PTYPE_INNER_L4_FRAG,
315 : : [30] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
316 : : RTE_PTYPE_TUNNEL_IP |
317 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
318 : : RTE_PTYPE_INNER_L4_NONFRAG,
319 : : [31] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
320 : : RTE_PTYPE_TUNNEL_IP |
321 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
322 : : RTE_PTYPE_INNER_L4_UDP,
323 : : /* [32] reserved */
324 : : [33] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
325 : : RTE_PTYPE_TUNNEL_IP |
326 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
327 : : RTE_PTYPE_INNER_L4_TCP,
328 : : [34] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
329 : : RTE_PTYPE_TUNNEL_IP |
330 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
331 : : RTE_PTYPE_INNER_L4_SCTP,
332 : : [35] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
333 : : RTE_PTYPE_TUNNEL_IP |
334 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
335 : : RTE_PTYPE_INNER_L4_ICMP,
336 : :
337 : : /* IPv4 --> IPv6 */
338 : : [36] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
339 : : RTE_PTYPE_TUNNEL_IP |
340 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
341 : : RTE_PTYPE_INNER_L4_FRAG,
342 : : [37] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
343 : : RTE_PTYPE_TUNNEL_IP |
344 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
345 : : RTE_PTYPE_INNER_L4_NONFRAG,
346 : : [38] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
347 : : RTE_PTYPE_TUNNEL_IP |
348 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
349 : : RTE_PTYPE_INNER_L4_UDP,
350 : : /* [39] reserved */
351 : : [40] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
352 : : RTE_PTYPE_TUNNEL_IP |
353 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
354 : : RTE_PTYPE_INNER_L4_TCP,
355 : : [41] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
356 : : RTE_PTYPE_TUNNEL_IP |
357 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
358 : : RTE_PTYPE_INNER_L4_SCTP,
359 : : [42] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
360 : : RTE_PTYPE_TUNNEL_IP |
361 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
362 : : RTE_PTYPE_INNER_L4_ICMP,
363 : :
364 : : /* IPv4 --> GRE/Teredo/VXLAN */
365 : : [43] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
366 : : RTE_PTYPE_TUNNEL_GRENAT,
367 : :
368 : : /* IPv4 --> GRE/Teredo/VXLAN --> IPv4 */
369 : : [44] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
370 : : RTE_PTYPE_TUNNEL_GRENAT |
371 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
372 : : RTE_PTYPE_INNER_L4_FRAG,
373 : : [45] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
374 : : RTE_PTYPE_TUNNEL_GRENAT |
375 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
376 : : RTE_PTYPE_INNER_L4_NONFRAG,
377 : : [46] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
378 : : RTE_PTYPE_TUNNEL_GRENAT |
379 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
380 : : RTE_PTYPE_INNER_L4_UDP,
381 : : /* [47] reserved */
382 : : [48] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
383 : : RTE_PTYPE_TUNNEL_GRENAT |
384 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
385 : : RTE_PTYPE_INNER_L4_TCP,
386 : : [49] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
387 : : RTE_PTYPE_TUNNEL_GRENAT |
388 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
389 : : RTE_PTYPE_INNER_L4_SCTP,
390 : : [50] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
391 : : RTE_PTYPE_TUNNEL_GRENAT |
392 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
393 : : RTE_PTYPE_INNER_L4_ICMP,
394 : :
395 : : /* IPv4 --> GRE/Teredo/VXLAN --> IPv6 */
396 : : [51] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
397 : : RTE_PTYPE_TUNNEL_GRENAT |
398 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
399 : : RTE_PTYPE_INNER_L4_FRAG,
400 : : [52] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
401 : : RTE_PTYPE_TUNNEL_GRENAT |
402 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
403 : : RTE_PTYPE_INNER_L4_NONFRAG,
404 : : [53] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
405 : : RTE_PTYPE_TUNNEL_GRENAT |
406 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
407 : : RTE_PTYPE_INNER_L4_UDP,
408 : : /* [54] reserved */
409 : : [55] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
410 : : RTE_PTYPE_TUNNEL_GRENAT |
411 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
412 : : RTE_PTYPE_INNER_L4_TCP,
413 : : [56] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
414 : : RTE_PTYPE_TUNNEL_GRENAT |
415 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
416 : : RTE_PTYPE_INNER_L4_SCTP,
417 : : [57] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
418 : : RTE_PTYPE_TUNNEL_GRENAT |
419 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
420 : : RTE_PTYPE_INNER_L4_ICMP,
421 : :
422 : : /* IPv4 --> GRE/Teredo/VXLAN --> MAC */
423 : : [58] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
424 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER,
425 : :
426 : : /* IPv4 --> GRE/Teredo/VXLAN --> MAC --> IPv4 */
427 : : [59] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
428 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
429 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
430 : : RTE_PTYPE_INNER_L4_FRAG,
431 : : [60] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
432 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
433 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
434 : : RTE_PTYPE_INNER_L4_NONFRAG,
435 : : [61] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
436 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
437 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
438 : : RTE_PTYPE_INNER_L4_UDP,
439 : : /* [62] reserved */
440 : : [63] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_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_TCP,
444 : : [64] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
445 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
446 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
447 : : RTE_PTYPE_INNER_L4_SCTP,
448 : : [65] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
449 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
450 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
451 : : RTE_PTYPE_INNER_L4_ICMP,
452 : :
453 : : /* IPv4 --> GRE/Teredo/VXLAN --> MAC --> IPv6 */
454 : : [66] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
455 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
456 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
457 : : RTE_PTYPE_INNER_L4_FRAG,
458 : : [67] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
459 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
460 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
461 : : RTE_PTYPE_INNER_L4_NONFRAG,
462 : : [68] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
463 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
464 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
465 : : RTE_PTYPE_INNER_L4_UDP,
466 : : /* [69] reserved */
467 : : [70] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_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_TCP,
471 : : [71] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
472 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
473 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
474 : : RTE_PTYPE_INNER_L4_SCTP,
475 : : [72] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
476 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
477 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
478 : : RTE_PTYPE_INNER_L4_ICMP,
479 : :
480 : : /* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN */
481 : : [73] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
482 : : RTE_PTYPE_TUNNEL_GRENAT |
483 : : RTE_PTYPE_INNER_L2_ETHER_VLAN,
484 : :
485 : : /* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv4 */
486 : : [74] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
487 : : RTE_PTYPE_TUNNEL_GRENAT |
488 : : RTE_PTYPE_INNER_L2_ETHER_VLAN |
489 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
490 : : RTE_PTYPE_INNER_L4_FRAG,
491 : : [75] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_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_NONFRAG,
496 : : [76] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_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_UDP,
501 : : /* [77] reserved */
502 : : [78] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
503 : : RTE_PTYPE_TUNNEL_GRENAT |
504 : : RTE_PTYPE_INNER_L2_ETHER_VLAN |
505 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
506 : : RTE_PTYPE_INNER_L4_TCP,
507 : : [79] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_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_SCTP,
512 : : [80] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_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_ICMP,
517 : :
518 : : /* IPv4 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv6 */
519 : : [81] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
520 : : RTE_PTYPE_TUNNEL_GRENAT |
521 : : RTE_PTYPE_INNER_L2_ETHER_VLAN |
522 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
523 : : RTE_PTYPE_INNER_L4_FRAG,
524 : : [82] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_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_NONFRAG,
529 : : [83] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_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_UDP,
534 : : /* [84] reserved */
535 : : [85] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
536 : : RTE_PTYPE_TUNNEL_GRENAT |
537 : : RTE_PTYPE_INNER_L2_ETHER_VLAN |
538 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
539 : : RTE_PTYPE_INNER_L4_TCP,
540 : : [86] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_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_SCTP,
545 : : [87] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_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_ICMP,
550 : :
551 : : /* Non tunneled IPv6 */
552 : : [88] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
553 : : RTE_PTYPE_L4_FRAG,
554 : : [89] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
555 : : RTE_PTYPE_L4_NONFRAG,
556 : : [90] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
557 : : RTE_PTYPE_L4_UDP,
558 : : /* [91] reserved */
559 : : [92] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
560 : : RTE_PTYPE_L4_TCP,
561 : : [93] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
562 : : RTE_PTYPE_L4_SCTP,
563 : : [94] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
564 : : RTE_PTYPE_L4_ICMP,
565 : :
566 : : /* IPv6 --> IPv4 */
567 : : [95] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
568 : : RTE_PTYPE_TUNNEL_IP |
569 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
570 : : RTE_PTYPE_INNER_L4_FRAG,
571 : : [96] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
572 : : RTE_PTYPE_TUNNEL_IP |
573 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
574 : : RTE_PTYPE_INNER_L4_NONFRAG,
575 : : [97] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
576 : : RTE_PTYPE_TUNNEL_IP |
577 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
578 : : RTE_PTYPE_INNER_L4_UDP,
579 : : /* [98] reserved */
580 : : [99] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
581 : : RTE_PTYPE_TUNNEL_IP |
582 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
583 : : RTE_PTYPE_INNER_L4_TCP,
584 : : [100] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
585 : : RTE_PTYPE_TUNNEL_IP |
586 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
587 : : RTE_PTYPE_INNER_L4_SCTP,
588 : : [101] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
589 : : RTE_PTYPE_TUNNEL_IP |
590 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
591 : : RTE_PTYPE_INNER_L4_ICMP,
592 : :
593 : : /* IPv6 --> IPv6 */
594 : : [102] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
595 : : RTE_PTYPE_TUNNEL_IP |
596 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
597 : : RTE_PTYPE_INNER_L4_FRAG,
598 : : [103] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
599 : : RTE_PTYPE_TUNNEL_IP |
600 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
601 : : RTE_PTYPE_INNER_L4_NONFRAG,
602 : : [104] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
603 : : RTE_PTYPE_TUNNEL_IP |
604 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
605 : : RTE_PTYPE_INNER_L4_UDP,
606 : : /* [105] reserved */
607 : : [106] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
608 : : RTE_PTYPE_TUNNEL_IP |
609 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
610 : : RTE_PTYPE_INNER_L4_TCP,
611 : : [107] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
612 : : RTE_PTYPE_TUNNEL_IP |
613 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
614 : : RTE_PTYPE_INNER_L4_SCTP,
615 : : [108] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
616 : : RTE_PTYPE_TUNNEL_IP |
617 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
618 : : RTE_PTYPE_INNER_L4_ICMP,
619 : :
620 : : /* IPv6 --> GRE/Teredo/VXLAN */
621 : : [109] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
622 : : RTE_PTYPE_TUNNEL_GRENAT,
623 : :
624 : : /* IPv6 --> GRE/Teredo/VXLAN --> IPv4 */
625 : : [110] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
626 : : RTE_PTYPE_TUNNEL_GRENAT |
627 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
628 : : RTE_PTYPE_INNER_L4_FRAG,
629 : : [111] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
630 : : RTE_PTYPE_TUNNEL_GRENAT |
631 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
632 : : RTE_PTYPE_INNER_L4_NONFRAG,
633 : : [112] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
634 : : RTE_PTYPE_TUNNEL_GRENAT |
635 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
636 : : RTE_PTYPE_INNER_L4_UDP,
637 : : /* [113] reserved */
638 : : [114] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
639 : : RTE_PTYPE_TUNNEL_GRENAT |
640 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
641 : : RTE_PTYPE_INNER_L4_TCP,
642 : : [115] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
643 : : RTE_PTYPE_TUNNEL_GRENAT |
644 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
645 : : RTE_PTYPE_INNER_L4_SCTP,
646 : : [116] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
647 : : RTE_PTYPE_TUNNEL_GRENAT |
648 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
649 : : RTE_PTYPE_INNER_L4_ICMP,
650 : :
651 : : /* IPv6 --> GRE/Teredo/VXLAN --> IPv6 */
652 : : [117] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
653 : : RTE_PTYPE_TUNNEL_GRENAT |
654 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
655 : : RTE_PTYPE_INNER_L4_FRAG,
656 : : [118] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
657 : : RTE_PTYPE_TUNNEL_GRENAT |
658 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
659 : : RTE_PTYPE_INNER_L4_NONFRAG,
660 : : [119] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
661 : : RTE_PTYPE_TUNNEL_GRENAT |
662 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
663 : : RTE_PTYPE_INNER_L4_UDP,
664 : : /* [120] reserved */
665 : : [121] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
666 : : RTE_PTYPE_TUNNEL_GRENAT |
667 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
668 : : RTE_PTYPE_INNER_L4_TCP,
669 : : [122] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
670 : : RTE_PTYPE_TUNNEL_GRENAT |
671 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
672 : : RTE_PTYPE_INNER_L4_SCTP,
673 : : [123] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
674 : : RTE_PTYPE_TUNNEL_GRENAT |
675 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
676 : : RTE_PTYPE_INNER_L4_ICMP,
677 : :
678 : : /* IPv6 --> GRE/Teredo/VXLAN --> MAC */
679 : : [124] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
680 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER,
681 : :
682 : : /* IPv6 --> GRE/Teredo/VXLAN --> MAC --> IPv4 */
683 : : [125] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
684 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
685 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
686 : : RTE_PTYPE_INNER_L4_FRAG,
687 : : [126] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
688 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
689 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
690 : : RTE_PTYPE_INNER_L4_NONFRAG,
691 : : [127] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
692 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
693 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
694 : : RTE_PTYPE_INNER_L4_UDP,
695 : : /* [128] reserved */
696 : : [129] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
697 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
698 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
699 : : RTE_PTYPE_INNER_L4_TCP,
700 : : [130] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
701 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
702 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
703 : : RTE_PTYPE_INNER_L4_SCTP,
704 : : [131] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
705 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
706 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
707 : : RTE_PTYPE_INNER_L4_ICMP,
708 : :
709 : : /* IPv6 --> GRE/Teredo/VXLAN --> MAC --> IPv6 */
710 : : [132] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
711 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
712 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
713 : : RTE_PTYPE_INNER_L4_FRAG,
714 : : [133] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
715 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
716 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
717 : : RTE_PTYPE_INNER_L4_NONFRAG,
718 : : [134] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
719 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
720 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
721 : : RTE_PTYPE_INNER_L4_UDP,
722 : : /* [135] reserved */
723 : : [136] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
724 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
725 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
726 : : RTE_PTYPE_INNER_L4_TCP,
727 : : [137] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
728 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
729 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
730 : : RTE_PTYPE_INNER_L4_SCTP,
731 : : [138] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
732 : : RTE_PTYPE_TUNNEL_GRENAT | RTE_PTYPE_INNER_L2_ETHER |
733 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
734 : : RTE_PTYPE_INNER_L4_ICMP,
735 : :
736 : : /* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN */
737 : : [139] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
738 : : RTE_PTYPE_TUNNEL_GRENAT |
739 : : RTE_PTYPE_INNER_L2_ETHER_VLAN,
740 : :
741 : : /* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv4 */
742 : : [140] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
743 : : RTE_PTYPE_TUNNEL_GRENAT |
744 : : RTE_PTYPE_INNER_L2_ETHER_VLAN |
745 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
746 : : RTE_PTYPE_INNER_L4_FRAG,
747 : : [141] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
748 : : RTE_PTYPE_TUNNEL_GRENAT |
749 : : RTE_PTYPE_INNER_L2_ETHER_VLAN |
750 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
751 : : RTE_PTYPE_INNER_L4_NONFRAG,
752 : : [142] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
753 : : RTE_PTYPE_TUNNEL_GRENAT |
754 : : RTE_PTYPE_INNER_L2_ETHER_VLAN |
755 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
756 : : RTE_PTYPE_INNER_L4_UDP,
757 : : /* [143] reserved */
758 : : [144] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
759 : : RTE_PTYPE_TUNNEL_GRENAT |
760 : : RTE_PTYPE_INNER_L2_ETHER_VLAN |
761 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
762 : : RTE_PTYPE_INNER_L4_TCP,
763 : : [145] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
764 : : RTE_PTYPE_TUNNEL_GRENAT |
765 : : RTE_PTYPE_INNER_L2_ETHER_VLAN |
766 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
767 : : RTE_PTYPE_INNER_L4_SCTP,
768 : : [146] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
769 : : RTE_PTYPE_TUNNEL_GRENAT |
770 : : RTE_PTYPE_INNER_L2_ETHER_VLAN |
771 : : RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN |
772 : : RTE_PTYPE_INNER_L4_ICMP,
773 : :
774 : : /* IPv6 --> GRE/Teredo/VXLAN --> MAC/VLAN --> IPv6 */
775 : : [147] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
776 : : RTE_PTYPE_TUNNEL_GRENAT |
777 : : RTE_PTYPE_INNER_L2_ETHER_VLAN |
778 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
779 : : RTE_PTYPE_INNER_L4_FRAG,
780 : : [148] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
781 : : RTE_PTYPE_TUNNEL_GRENAT |
782 : : RTE_PTYPE_INNER_L2_ETHER_VLAN |
783 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
784 : : RTE_PTYPE_INNER_L4_NONFRAG,
785 : : [149] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
786 : : RTE_PTYPE_TUNNEL_GRENAT |
787 : : RTE_PTYPE_INNER_L2_ETHER_VLAN |
788 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
789 : : RTE_PTYPE_INNER_L4_UDP,
790 : : /* [150] reserved */
791 : : [151] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
792 : : RTE_PTYPE_TUNNEL_GRENAT |
793 : : RTE_PTYPE_INNER_L2_ETHER_VLAN |
794 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
795 : : RTE_PTYPE_INNER_L4_TCP,
796 : : [152] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
797 : : RTE_PTYPE_TUNNEL_GRENAT |
798 : : RTE_PTYPE_INNER_L2_ETHER_VLAN |
799 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
800 : : RTE_PTYPE_INNER_L4_SCTP,
801 : : [153] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
802 : : RTE_PTYPE_TUNNEL_GRENAT |
803 : : RTE_PTYPE_INNER_L2_ETHER_VLAN |
804 : : RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN |
805 : : RTE_PTYPE_INNER_L4_ICMP,
806 : :
807 : : /* L2 NSH packet type */
808 : : [154] = RTE_PTYPE_L2_ETHER_NSH,
809 : : [155] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
810 : : RTE_PTYPE_L4_FRAG,
811 : : [156] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
812 : : RTE_PTYPE_L4_NONFRAG,
813 : : [157] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
814 : : RTE_PTYPE_L4_UDP,
815 : : [158] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
816 : : RTE_PTYPE_L4_TCP,
817 : : [159] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
818 : : RTE_PTYPE_L4_SCTP,
819 : : [160] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |
820 : : RTE_PTYPE_L4_ICMP,
821 : : [161] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
822 : : RTE_PTYPE_L4_FRAG,
823 : : [162] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
824 : : RTE_PTYPE_L4_NONFRAG,
825 : : [163] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
826 : : RTE_PTYPE_L4_UDP,
827 : : [164] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
828 : : RTE_PTYPE_L4_TCP,
829 : : [165] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
830 : : RTE_PTYPE_L4_SCTP,
831 : : [166] = RTE_PTYPE_L2_ETHER_NSH | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN |
832 : : RTE_PTYPE_L4_ICMP,
833 : :
834 : : /* All others reserved */
835 : : };
836 : :
837 : 0 : return type_table[ptype];
838 : : }
839 : :
840 : : #endif /* _I40E_RXTX_H_ */
|