Support packets in flight
[samplevnf.git] / VNFs / DPPD-PROX / prox_compat.h
1 /*
2 // Copyright (c) 2010-2020 Intel Corporation
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //     http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 */
16 #ifndef _PROX_COMPAT_H_
17 #define _PROX_COMPAT_H_
18 #include <rte_common.h>
19 #include <rte_table_hash.h>
20 #include <rte_ethdev.h>
21 #include <rte_hash_crc.h>
22 #include <rte_cryptodev.h>
23
24 #include "hash_utils.h"
25 #include "log.h"
26
27 /* This is a copy of the rte_table_hash_params from DPDK 17.11  *
28  * So if DPDK decides to change the structure the modifications *
29  * to PROX code should mainly be limited to this file           *
30  */
31 struct prox_rte_table_params {
32         const char *name;
33         uint32_t key_size;
34         uint32_t key_offset;
35         uint8_t *key_mask;
36         uint32_t n_keys;
37         uint32_t n_buckets;
38         rte_table_hash_op_hash f_hash;
39         uint64_t seed;
40 };
41
42 #if RTE_VERSION < RTE_VERSION_NUM(16,4,0,0)
43 typedef uint8_t prox_next_hop_index_type;
44 #else
45 typedef uint32_t prox_next_hop_index_type;
46 #endif
47
48 #if RTE_VERSION < RTE_VERSION_NUM(16,7,0,0)
49 static void rte_mempool_free(struct rte_mempool *mp)
50 {
51         plog_warn("rte_mempool_free not supported in this DPDK - upgrade DPDK to avoid memory leaks\n");
52 }
53 #endif
54
55 #if RTE_VERSION < RTE_VERSION_NUM(17,11,0,0)
56
57 static void *prox_rte_table_create(struct prox_rte_table_params *params, int socket_id, uint32_t entry_size)
58 {
59         if (params->key_size == 8) {
60                 struct rte_table_hash_key8_ext_params dpdk17_08_params;
61                 dpdk17_08_params.n_entries = params->n_keys;
62                 dpdk17_08_params.n_entries_ext = params->n_keys >> 2;
63                 dpdk17_08_params.f_hash = (rte_table_hash_op_hash)rte_hash_crc;
64                 dpdk17_08_params.seed = params->seed;
65                 dpdk17_08_params.signature_offset = HASH_METADATA_OFFSET(8);  // Ignored for dosig
66                 dpdk17_08_params.key_offset = HASH_METADATA_OFFSET(0);
67                 dpdk17_08_params.key_mask = params->key_mask;
68                 return rte_table_hash_key8_ext_dosig_ops.f_create(&dpdk17_08_params, socket_id, entry_size);
69         } else {
70                 struct rte_table_hash_ext_params dpdk17_08_params;
71                 dpdk17_08_params.key_size = params->key_size;
72                 dpdk17_08_params.n_keys = params->n_keys;
73                 dpdk17_08_params.n_buckets = params->n_buckets;
74                 dpdk17_08_params.n_buckets_ext = params->n_buckets >> 1;
75                 dpdk17_08_params.seed = params->seed;
76                 dpdk17_08_params.f_hash = (rte_table_hash_op_hash)rte_hash_crc;
77                 dpdk17_08_params.signature_offset = HASH_METADATA_OFFSET(0);
78                 dpdk17_08_params.key_offset = HASH_METADATA_OFFSET(0);
79                 return rte_table_hash_ext_dosig_ops.f_create(&dpdk17_08_params, socket_id, entry_size);
80         }
81 };
82
83 static inline int prox_rte_eth_dev_get_port_by_name(const char *name, uint16_t *port_id)
84 {
85 #if RTE_VERSION < RTE_VERSION_NUM(16,7,0,0)
86         plog_err("Not supported in DPDK version <= 16.04 by lack of rte_eth_dev_get_port_by_name support\n");
87         return -1;
88 #else
89         return rte_eth_dev_get_port_by_name(name, (uint8_t *)port_id);
90 #endif
91 }
92
93 #define prox_rte_table_free        rte_table_hash_ext_dosig_ops.f_free
94 #define prox_rte_table_add         rte_table_hash_ext_dosig_ops.f_add
95 #define prox_rte_table_delete      rte_table_hash_ext_dosig_ops.f_delete
96 #define prox_rte_table_add_bulk    rte_table_hash_ext_dosig_ops.f_add_bulk
97 #define prox_rte_table_delete_bulk rte_table_hash_ext_dosig_ops.f_delete_bulk
98 #define prox_rte_table_lookup      rte_table_hash_ext_dosig_ops.f_lookup
99 #define prox_rte_table_stats       rte_table_hash_ext_dosig_ops.f_stats
100
101 #define prox_rte_table_key8_free        rte_table_hash_key8_ext_dosig_ops.f_free
102 #define prox_rte_table_key8_add         rte_table_hash_key8_ext_dosig_ops.f_add
103 #define prox_rte_table_key8_delete      rte_table_hash_key8_ext_dosig_ops.f_delete
104 #define prox_rte_table_key8_add_bulk    rte_table_hash_key8_ext_dosig_ops.f_add_bulk
105 #define prox_rte_table_key8_delete_bulk rte_table_hash_key8_ext_dosig_ops.f_delete_bulk
106 #define prox_rte_table_key8_lookup      rte_table_hash_key8_ext_dosig_ops.f_lookup
107 #define prox_rte_table_key8_stats       rte_table_hash_key8_ext_dosig_ops.f_stats
108
109 #define rte_log_set_global_level rte_set_log_level
110
111 #else
112
113 static void *prox_rte_table_create(struct prox_rte_table_params *params, int socket_id, uint32_t entry_size)
114 {
115         struct rte_table_hash_params dpdk_17_11_params;
116         dpdk_17_11_params.name = params->name;
117         dpdk_17_11_params.key_size = params->key_size;
118         dpdk_17_11_params.key_offset = params->key_offset;
119         dpdk_17_11_params.key_mask = params->key_mask;
120         dpdk_17_11_params.n_keys = params->n_keys;
121         dpdk_17_11_params.n_buckets = rte_align32pow2(params->n_buckets);
122         dpdk_17_11_params.f_hash = params->f_hash;
123         dpdk_17_11_params.seed = params->seed;
124
125         if (params->key_size == 8) {
126                 return rte_table_hash_key8_ext_ops.f_create(&dpdk_17_11_params, socket_id, entry_size);
127         } else {
128                 return rte_table_hash_ext_ops.f_create(&dpdk_17_11_params, socket_id, entry_size);
129         }
130 }
131
132 #define prox_rte_eth_dev_get_port_by_name rte_eth_dev_get_port_by_name
133
134 #define prox_rte_table_free        rte_table_hash_ext_ops.f_free
135 #define prox_rte_table_add         rte_table_hash_ext_ops.f_add
136 #define prox_rte_table_delete      rte_table_hash_ext_ops.f_delete
137 #define prox_rte_table_add_bulk    rte_table_hash_ext_ops.f_add_bulk
138 #define prox_rte_table_delete_bulk rte_table_hash_ext_ops.f_delete_bulk
139 #define prox_rte_table_lookup      rte_table_hash_ext_ops.f_lookup
140 #define prox_rte_table_stats       rte_table_hash_ext_ops.f_stats
141
142 #define prox_rte_table_key8_free        rte_table_hash_key8_ext_ops.f_free
143 #define prox_rte_table_key8_add         rte_table_hash_key8_ext_ops.f_add
144 #define prox_rte_table_key8_delete      rte_table_hash_key8_ext_ops.f_delete
145 #define prox_rte_table_key8_add_bulk    rte_table_hash_key8_ext_ops.f_add_bulk
146 #define prox_rte_table_key8_delete_bulk rte_table_hash_key8_ext_ops.f_delete_bulk
147 #define prox_rte_table_key8_lookup      rte_table_hash_key8_ext_ops.f_lookup
148 #define prox_rte_table_key8_stats       rte_table_hash_key8_ext_ops.f_stats
149
150 #endif
151
152 #if RTE_VERSION < RTE_VERSION_NUM(18,8,0,0)
153 #define rte_cryptodev_sym_get_private_session_size rte_cryptodev_get_private_session_size
154 #endif
155
156 #if RTE_VERSION < RTE_VERSION_NUM(19,2,0,0)
157 #define RTE_COLOR_GREEN e_RTE_METER_GREEN
158 #define RTE_COLOR_YELLOW e_RTE_METER_YELLOW
159 #define RTE_COLOR_RED e_RTE_METER_RED
160 #define prox_rte_color rte_meter_color
161 #define prox_rte_sched_port_pkt_read_tree_path(A,B,C,D,E,F) rte_sched_port_pkt_read_tree_path(B,C,D,E,F)
162 #define prox_rte_sched_port_pkt_write(A,B,C,D,E,F,G) rte_sched_port_pkt_write(B,C,D,E,F,G);
163 #else
164 #define prox_rte_color rte_color
165 #define prox_rte_sched_port_pkt_read_tree_path(A,B,C,D,E,F) rte_sched_port_pkt_read_tree_path(A,B,C,D,E,F)
166 #define prox_rte_sched_port_pkt_write(A,B,C,D,E,F,G) rte_sched_port_pkt_write(A,B,C,D,E,F,G);
167 #endif
168
169 #if RTE_VERSION < RTE_VERSION_NUM(19,8,0,0)
170 #if RTE_VERSION >= RTE_VERSION_NUM(18,5,0,0)
171 typedef struct vxlan_gpe_hdr prox_rte_vxlan_gpe_hdr;
172 #endif
173 #define PROX_RTE_ETHER_CRC_LEN ETHER_CRC_LEN
174 #define PROX_RTE_ETHER_MIN_LEN ETHER_MIN_LEN
175 #define PROX_RTE_ETHER_MAX_LEN ETHER_MAX_LEN
176 #define PROX_RTE_ETHER_HDR_LEN ETHER_HDR_LEN
177 #define PROX_RTE_TCP_SYN_FLAG TCP_SYN_FLAG
178 #define PROX_RTE_TCP_FIN_FLAG TCP_FIN_FLAG
179 #define PROX_RTE_TCP_RST_FLAG TCP_RST_FLAG
180 #define PROX_RTE_TCP_ACK_FLAG TCP_ACK_FLAG
181 #define PROX_RTE_IP_ICMP_ECHO_REPLY IP_ICMP_ECHO_REPLY
182 #define PROX_RTE_IP_ICMP_ECHO_REQUEST IP_ICMP_ECHO_REQUEST
183
184 #define prox_rte_ether_addr_copy ether_addr_copy
185 #define prox_rte_eth_random_addr eth_random_addr
186
187 typedef struct ipv6_hdr prox_rte_ipv6_hdr;
188 typedef struct ipv4_hdr prox_rte_ipv4_hdr;
189 typedef struct ether_addr prox_rte_ether_addr;
190 typedef struct ether_hdr prox_rte_ether_hdr;
191 typedef struct vlan_hdr prox_rte_vlan_hdr;
192 typedef struct udp_hdr prox_rte_udp_hdr;
193 typedef struct tcp_hdr prox_rte_tcp_hdr;
194 typedef struct icmp_hdr prox_rte_icmp_hdr;
195
196 #ifndef RTE_SCHED_BE_QUEUES_PER_PIPE
197 #define RTE_SCHED_BE_QUEUES_PER_PIPE RTE_SCHED_QUEUES_PER_PIPE
198 #endif
199
200 #define PROX_RTE_IS_IPV4_MCAST IS_IPV4_MCAST
201 #define prox_rte_is_same_ether_addr is_same_ether_addr
202 #define prox_rte_is_zero_ether_addr is_zero_ether_addr
203 #else //  >= 19.08
204
205 #define PROX_RTE_ETHER_CRC_LEN RTE_ETHER_CRC_LEN
206 #define PROX_RTE_ETHER_MIN_LEN RTE_ETHER_MIN_LEN
207 #define PROX_RTE_ETHER_MAX_LEN RTE_ETHER_MAX_LEN
208 #define PROX_RTE_ETHER_HDR_LEN RTE_ETHER_HDR_LEN
209 #define PROX_RTE_TCP_SYN_FLAG RTE_TCP_SYN_FLAG
210 #define PROX_RTE_TCP_FIN_FLAG RTE_TCP_FIN_FLAG
211 #define PROX_RTE_TCP_RST_FLAG RTE_TCP_RST_FLAG
212 #define PROX_RTE_TCP_ACK_FLAG RTE_TCP_ACK_FLAG
213 #define PROX_RTE_IP_ICMP_ECHO_REPLY RTE_IP_ICMP_ECHO_REPLY
214 #define PROX_RTE_IP_ICMP_ECHO_REQUEST RTE_IP_ICMP_ECHO_REQUEST
215
216 #define prox_rte_ether_addr_copy rte_ether_addr_copy
217 #define prox_rte_eth_random_addr rte_eth_random_addr
218
219 typedef struct rte_ipv6_hdr prox_rte_ipv6_hdr;
220 typedef struct rte_ipv4_hdr prox_rte_ipv4_hdr;
221 typedef struct rte_ether_addr prox_rte_ether_addr;
222 #if RTE_VERSION < RTE_VERSION_NUM(21,11,0,0)
223 typedef struct rte_ether_hdr prox_rte_ether_hdr;
224 #else
225 typedef struct prox_rte_ether_hdr
226 {
227         struct rte_ether_addr d_addr; /**< Destination address. */
228         struct rte_ether_addr s_addr; /**< Source address. */
229         rte_be16_t ether_type; /**< Frame type. */
230 } __rte_aligned(2) prox_rte_ether_hdr;
231 #endif
232 typedef struct rte_vlan_hdr prox_rte_vlan_hdr;
233 typedef struct rte_vxlan_gpe_hdr prox_rte_vxlan_gpe_hdr;
234 typedef struct rte_udp_hdr prox_rte_udp_hdr;
235 typedef struct rte_tcp_hdr prox_rte_tcp_hdr;
236 typedef struct rte_icmp_hdr prox_rte_icmp_hdr;
237
238 #define PROX_RTE_IS_IPV4_MCAST  RTE_IS_IPV4_MCAST
239 #define prox_rte_is_same_ether_addr rte_is_same_ether_addr
240 #define prox_rte_is_zero_ether_addr rte_is_zero_ether_addr
241
242 #endif
243
244 char *prox_strncpy(char * dest, const char * src, size_t count);
245
246 #ifdef RTE_LIBRTE_PMD_AESNI_MB
247 #if RTE_VERSION < RTE_VERSION_NUM(19,5,0,0)
248 //RFC4303
249 struct prox_esp_hdr {
250         uint32_t spi;
251         uint32_t seq;
252 };
253 struct prox_rte_cryptodev_qp_conf {
254         uint32_t nb_descriptors; /**< Number of descriptors per queue pair */
255         struct rte_mempool *    mp_session;
256         struct rte_mempool *    mp_session_private;
257 };
258
259 static int prox_rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id, struct prox_rte_cryptodev_qp_conf *qp_conf, int socket_id)
260 {
261         struct rte_mempool *session_pool = qp_conf->mp_session;
262         return rte_cryptodev_queue_pair_setup(dev_id, queue_pair_id, (struct rte_cryptodev_qp_conf *)qp_conf, socket_id, session_pool);
263 }
264
265 #else
266 #define prox_rte_cryptodev_qp_conf rte_cryptodev_qp_conf
267 static int prox_rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id, struct prox_rte_cryptodev_qp_conf *qp_conf, int socket_id)
268 {
269         return rte_cryptodev_queue_pair_setup(dev_id, queue_pair_id, (struct rte_cryptodev_qp_conf *)qp_conf, socket_id);
270 }
271
272 #if RTE_VERSION < RTE_VERSION_NUM(19,8,0,0)
273 #define prox_esp_hdr esp_hdr
274
275 #else   // From DPDK 19.08
276 #define prox_esp_hdr rte_esp_hdr
277
278 #endif
279 #endif
280 #endif  // CONFIG_RTE_LIBRTE_PMD_AESNI_MB
281
282 #if RTE_VERSION < RTE_VERSION_NUM(19,11,0,0)
283 #define prox_rte_eth_dev_count_avail() rte_eth_dev_count()
284 #else
285 #define prox_rte_eth_dev_count_avail() rte_eth_dev_count_avail()
286 #endif
287
288 // deal with RTE_DEPRECATED symbols
289
290 #if RTE_VERSION < RTE_VERSION_NUM(20,11,0,0)
291 #define SKIP_MAIN                       SKIP_MASTER
292 #define CALL_MAIN                       CALL_MASTER
293 #define RTE_DEVTYPE_ALLOWED             RTE_DEVTYPE_WHITELISTED_PCI
294 #define RTE_DEVTYPE_BLOCKED             RTE_DEVTYPE_BLACKLISTED_PCI
295 #define RTE_LCORE_FOREACH_WORKER        RTE_LCORE_FOREACH_SLAVE
296 #if RTE_VERSION >= RTE_VERSION_NUM(17,8,0,0)
297 #define RTE_DEV_ALLOWED                 RTE_DEV_WHITELISTED
298 #define RTE_DEV_BLOCKED                 RTE_DEV_BLACKLISTED
299 #define RTE_BUS_SCAN_ALLOWLIST          RTE_BUS_SCAN_WHITELIST
300 #define RTE_BUS_SCAN_BLOCKLIST          RTE_BUS_SCAN_BLACKLIST
301 #endif
302 #endif
303
304 #if RTE_VERSION < RTE_VERSION_NUM(21,5,0,0)
305 #define RTE_PCI_ANY_ID                  PCI_ANY_ID
306 #define PKT_RX_OUTER_IP_CKSUM_BAD       PKT_RX_EIP_CKSUM_BAD
307 #endif
308
309 #if RTE_VERSION < RTE_VERSION_NUM(21,11,0,0)
310 #define RTE_MEMPOOL_HEADER_SIZE         MEMPOOL_HEADER_SIZE
311 #define RTE_MBUF_F_RX_RSS_HASH          PKT_RX_RSS_HASH
312 #define RTE_MBUF_F_RX_FDIR              PKT_RX_FDIR
313 #define RTE_MBUF_F_RX_OUTER_IP_CKSUM_BAD        PKT_RX_OUTER_IP_CKSUM_BAD
314 #define RTE_MBUF_F_RX_IP_CKSUM_BAD      PKT_RX_IP_CKSUM_BAD
315 #define RTE_MBUF_F_RX_L4_CKSUM_BAD      PKT_RX_L4_CKSUM_BAD
316 #define RTE_MBUF_F_RX_IEEE1588_PTP      PKT_RX_IEEE1588_PTP
317 #define RTE_MBUF_F_RX_IEEE1588_TMST     PKT_RX_IEEE1588_TMST
318 #define RTE_MBUF_F_RX_FDIR_ID           PKT_RX_FDIR_ID
319 #define RTE_MBUF_F_RX_FDIR_FLX          PKT_RX_FDIR_FLX
320 #define RTE_MBUF_F_TX_QINQ              PKT_TX_QINQ_PKT
321 #define RTE_MBUF_F_TX_TCP_SEG           PKT_TX_TCP_SEG
322 #define RTE_MBUF_F_TX_IEEE1588_TMST     PKT_TX_IEEE1588_TMST
323 #define RTE_MBUF_F_TX_L4_NO_CKSUM       PKT_TX_L4_NO_CKSUM
324 #define RTE_MBUF_F_TX_TCP_CKSUM         PKT_TX_TCP_CKSUM
325 #define RTE_MBUF_F_TX_SCTP_CKSUM        PKT_TX_SCTP_CKSUM
326 #define RTE_MBUF_F_TX_UDP_CKSUM         PKT_TX_UDP_CKSUM
327 #define RTE_MBUF_F_TX_L4_MASK           PKT_TX_L4_MASK
328 #define RTE_MBUF_F_TX_IP_CKSUM          PKT_TX_IP_CKSUM
329 #define RTE_MBUF_F_TX_IPV4              PKT_TX_IPV4
330 #define RTE_MBUF_F_TX_IPV6              PKT_TX_IPV6
331 #define RTE_MBUF_F_TX_VLAN              PKT_TX_VLAN_PKT
332 #define RTE_MBUF_F_TX_OUTER_IP_CKSUM    PKT_TX_OUTER_IP_CKSUM
333 #define RTE_MBUF_F_TX_OUTER_IPV4        PKT_TX_OUTER_IPV4
334 #define RTE_MBUF_F_TX_OUTER_IPV6        PKT_TX_OUTER_IPV6
335 #define RTE_MBUF_F_INDIRECT             IND_ATTACHED_MBUF
336 #define RTE_ETH_LINK_SPEED_AUTONEG      ETH_LINK_SPEED_AUTONEG
337 #define RTE_ETH_LINK_SPEED_FIXED        ETH_LINK_SPEED_FIXED
338 #define RTE_ETH_LINK_SPEED_10M_HD       ETH_LINK_SPEED_10M_HD
339 #define RTE_ETH_LINK_SPEED_10M          ETH_LINK_SPEED_10M
340 #define RTE_ETH_LINK_SPEED_100M_HD      ETH_LINK_SPEED_100M_HD
341 #define RTE_ETH_LINK_SPEED_100M         ETH_LINK_SPEED_100M
342 #define RTE_ETH_LINK_SPEED_1G           ETH_LINK_SPEED_1G
343 #define RTE_ETH_LINK_SPEED_2_5G         ETH_LINK_SPEED_2_5G
344 #define RTE_ETH_LINK_SPEED_5G           ETH_LINK_SPEED_5G
345 #define RTE_ETH_LINK_SPEED_10G          ETH_LINK_SPEED_10G
346 #define RTE_ETH_LINK_SPEED_20G          ETH_LINK_SPEED_20G
347 #define RTE_ETH_LINK_SPEED_25G          ETH_LINK_SPEED_25G
348 #define RTE_ETH_LINK_SPEED_40G          ETH_LINK_SPEED_40G
349 #define RTE_ETH_LINK_SPEED_50G          ETH_LINK_SPEED_50G
350 #define RTE_ETH_LINK_SPEED_56G          ETH_LINK_SPEED_56G
351 #define RTE_ETH_LINK_SPEED_100G         ETH_LINK_SPEED_100G
352 #define RTE_ETH_SPEED_NUM_NONE          ETH_SPEED_NUM_NONE
353 #define RTE_ETH_SPEED_NUM_10M           ETH_SPEED_NUM_10M
354 #define RTE_ETH_SPEED_NUM_100M          ETH_SPEED_NUM_100M
355 #define RTE_ETH_SPEED_NUM_1G            ETH_SPEED_NUM_1G
356 #define RTE_ETH_SPEED_NUM_2_5G          ETH_SPEED_NUM_2_5G
357 #define RTE_ETH_SPEED_NUM_5G            ETH_SPEED_NUM_5G
358 #define RTE_ETH_SPEED_NUM_10G           ETH_SPEED_NUM_10G
359 #define RTE_ETH_SPEED_NUM_20G           ETH_SPEED_NUM_20G
360 #define RTE_ETH_SPEED_NUM_25G           ETH_SPEED_NUM_25G
361 #define RTE_ETH_SPEED_NUM_40G           ETH_SPEED_NUM_40G
362 #define RTE_ETH_SPEED_NUM_50G           ETH_SPEED_NUM_50G
363 #define RTE_ETH_SPEED_NUM_56G           ETH_SPEED_NUM_56G
364 #define RTE_ETH_SPEED_NUM_100G          ETH_SPEED_NUM_100G
365 #define RTE_ETH_LINK_HALF_DUPLEX        ETH_LINK_HALF_DUPLEX
366 #define RTE_ETH_LINK_FULL_DUPLEX        ETH_LINK_FULL_DUPLEX
367 #define RTE_ETH_LINK_DOWN               ETH_LINK_DOWN
368 #define RTE_ETH_LINK_UP                 ETH_LINK_UP
369 #define RTE_ETH_LINK_FIXED              ETH_LINK_FIXED
370 #define RTE_ETH_LINK_AUTONEG            ETH_LINK_AUTONEG
371 #define RTE_ETH_MQ_RX_RSS_FLAG          ETH_MQ_RX_RSS_FLAG
372 #define RTE_ETH_MQ_RX_DCB_FLAG          ETH_MQ_RX_DCB_FLAG
373 #define RTE_ETH_MQ_RX_VMDQ_FLAG         ETH_MQ_RX_VMDQ_FLAG
374 #define RTE_ETH_MQ_RX_NONE              ETH_MQ_RX_NONE
375 #define RTE_ETH_MQ_RX_RSS               ETH_MQ_RX_RSS
376 #define RTE_ETH_MQ_RX_DCB               ETH_MQ_RX_DCB
377 #define RTE_ETH_MQ_RX_DCB_RSS           ETH_MQ_RX_DCB_RSS
378 #define RTE_ETH_MQ_RX_VMDQ_ONLY         ETH_MQ_RX_VMDQ_ONLY
379 #define RTE_ETH_MQ_RX_VMDQ_RSS          ETH_MQ_RX_VMDQ_RSS
380 #define RTE_ETH_MQ_RX_VMDQ_DCB          ETH_MQ_RX_VMDQ_DCB
381 #define RTE_ETH_MQ_RX_VMDQ_DCB_RSS      ETH_MQ_RX_VMDQ_DCB_RSS
382 #define RTE_ETH_MQ_TX_NONE              ETH_MQ_TX_NONE
383 #define RTE_ETH_MQ_TX_DCB               ETH_MQ_TX_DCB
384 #define RTE_ETH_MQ_TX_VMDQ_DCB          ETH_MQ_TX_VMDQ_DCB
385 #define RTE_ETH_MQ_TX_VMDQ_ONLY         ETH_MQ_TX_VMDQ_ONLY
386 #define RTE_ETH_VLAN_TYPE_UNKNOWN       ETH_VLAN_TYPE_UNKNOWN
387 #define RTE_ETH_VLAN_TYPE_INNER         ETH_VLAN_TYPE_INNER
388 #define RTE_ETH_VLAN_TYPE_OUTER         ETH_VLAN_TYPE_OUTER
389 #define RTE_ETH_VLAN_TYPE_MAX           ETH_VLAN_TYPE_MAX
390 #define RTE_ETH_RSS_IPV4                ETH_RSS_IPV4
391 #define RTE_ETH_RSS_FRAG_IPV4           ETH_RSS_FRAG_IPV4
392 #define RTE_ETH_RSS_NONFRAG_IPV4_TCP    ETH_RSS_NONFRAG_IPV4_TCP
393 #define RTE_ETH_RSS_NONFRAG_IPV4_UDP    ETH_RSS_NONFRAG_IPV4_UDP
394 #define RTE_ETH_RSS_NONFRAG_IPV4_SCTP   ETH_RSS_NONFRAG_IPV4_SCTP
395 #define RTE_ETH_RSS_NONFRAG_IPV4_OTHER  ETH_RSS_NONFRAG_IPV4_OTHER
396 #define RTE_ETH_RSS_IPV6                ETH_RSS_IPV6
397 #define RTE_ETH_RSS_FRAG_IPV6           ETH_RSS_FRAG_IPV6
398 #define RTE_ETH_RSS_NONFRAG_IPV6_TCP    ETH_RSS_NONFRAG_IPV6_TCP
399 #define RTE_ETH_RSS_NONFRAG_IPV6_UDP    ETH_RSS_NONFRAG_IPV6_UDP
400 #define RTE_ETH_RSS_NONFRAG_IPV6_SCTP   ETH_RSS_NONFRAG_IPV6_SCTP
401 #define RTE_ETH_RSS_NONFRAG_IPV6_OTHER  ETH_RSS_NONFRAG_IPV6_OTHER
402 #define RTE_ETH_RSS_L2_PAYLOAD          ETH_RSS_L2_PAYLOAD
403 #define RTE_ETH_RSS_IPV6_EX             ETH_RSS_IPV6_EX
404 #define RTE_ETH_RSS_IPV6_TCP_EX         ETH_RSS_IPV6_TCP_EX
405 #define RTE_ETH_RSS_IPV6_UDP_EX         ETH_RSS_IPV6_UDP_EX
406 #define RTE_ETH_RSS_IP                  ETH_RSS_IP
407 #define RTE_ETH_RSS_UDP                 ETH_RSS_UDP
408 #define RTE_ETH_RSS_TCP                 ETH_RSS_TCP
409 #define RTE_ETH_RSS_SCTP                ETH_RSS_SCTP
410 #define RTE_ETH_RSS_PROTO_MASK          ETH_RSS_PROTO_MASK
411 #define RTE_ETH_RSS_RETA_SIZE_64        ETH_RSS_RETA_SIZE_64
412 #define RTE_ETH_RSS_RETA_SIZE_128       ETH_RSS_RETA_SIZE_128
413 #define RTE_ETH_RSS_RETA_SIZE_512       ETH_RSS_RETA_SIZE_512
414 #define RTE_ETH_RETA_GROUP_SIZE         RTE_RETA_GROUP_SIZE
415 #define RTE_ETH_VMDQ_MAX_VLAN_FILTERS   ETH_VMDQ_MAX_VLAN_FILTERS
416 #define RTE_ETH_DCB_NUM_USER_PRIORITIES ETH_DCB_NUM_USER_PRIORITIES
417 #define RTE_ETH_VMDQ_DCB_NUM_QUEUES     ETH_VMDQ_DCB_NUM_QUEUES
418 #define RTE_ETH_DCB_NUM_QUEUES          ETH_DCB_NUM_QUEUES
419 #define RTE_ETH_DCB_PG_SUPPORT          ETH_DCB_PG_SUPPORT
420 #define RTE_ETH_DCB_PFC_SUPPORT         ETH_DCB_PFC_SUPPORT
421 #define RTE_ETH_VLAN_STRIP_OFFLOAD      ETH_VLAN_STRIP_OFFLOAD
422 #define RTE_ETH_VLAN_FILTER_OFFLOAD     ETH_VLAN_FILTER_OFFLOAD
423 #define RTE_ETH_VLAN_EXTEND_OFFLOAD     ETH_VLAN_EXTEND_OFFLOAD
424 #define RTE_ETH_VLAN_STRIP_MASK         ETH_VLAN_STRIP_MASK
425 #define RTE_ETH_VLAN_FILTER_MASK        ETH_VLAN_FILTER_MASK
426 #define RTE_ETH_VLAN_EXTEND_MASK        ETH_VLAN_EXTEND_MASK
427 #define RTE_ETH_VLAN_ID_MAX             ETH_VLAN_ID_MAX
428 #define RTE_ETH_NUM_RECEIVE_MAC_ADDR    ETH_NUM_RECEIVE_MAC_ADDR
429 #define RTE_ETH_VMDQ_NUM_UC_HASH_ARRAY  ETH_VMDQ_NUM_UC_HASH_ARRAY
430 #define RTE_ETH_VMDQ_ACCEPT_UNTAG       ETH_VMDQ_ACCEPT_UNTAG
431 #define RTE_ETH_VMDQ_ACCEPT_HASH_MC     ETH_VMDQ_ACCEPT_HASH_MC
432 #define RTE_ETH_VMDQ_ACCEPT_HASH_UC     ETH_VMDQ_ACCEPT_HASH_UC
433 #define RTE_ETH_VMDQ_ACCEPT_BROADCAST   ETH_VMDQ_ACCEPT_BROADCAST
434 #define RTE_ETH_VMDQ_ACCEPT_MULTICAST   ETH_VMDQ_ACCEPT_MULTICAST
435 #define RTE_ETH_4_TCS                   ETH_4_TCS
436 #define RTE_ETH_8_TCS                   ETH_8_TCS
437 #define RTE_ETH_8_POOLS                 ETH_8_POOLS
438 #define RTE_ETH_16_POOLS                ETH_16_POOLS
439 #define RTE_ETH_32_POOLS                ETH_32_POOLS
440 #define RTE_ETH_64_POOLS                ETH_64_POOLS
441 #define RTE_ETH_FC_NONE                 RTE_FC_NONE
442 #define RTE_ETH_FC_RX_PAUSE             RTE_FC_RX_PAUSE
443 #define RTE_ETH_FC_TX_PAUSE             RTE_FC_TX_PAUSE
444 #define RTE_ETH_FC_FULL                 RTE_FC_FULL
445 #define RTE_ETH_TUNNEL_TYPE_NONE        RTE_TUNNEL_TYPE_NONE
446 #define RTE_ETH_TUNNEL_TYPE_VXLAN       RTE_TUNNEL_TYPE_VXLAN
447 #define RTE_ETH_TUNNEL_TYPE_GENEVE      RTE_TUNNEL_TYPE_GENEVE
448 #define RTE_ETH_TUNNEL_TYPE_TEREDO      RTE_TUNNEL_TYPE_TEREDO
449 #define RTE_ETH_TUNNEL_TYPE_NVGRE       RTE_TUNNEL_TYPE_NVGRE
450 #define RTE_ETH_TUNNEL_TYPE_IP_IN_GRE   RTE_TUNNEL_TYPE_IP_IN_GRE
451 #define RTE_ETH_L2_TUNNEL_TYPE_E_TAG    RTE_L2_TUNNEL_TYPE_E_TAG
452 #define RTE_ETH_TUNNEL_TYPE_MAX         RTE_TUNNEL_TYPE_MAX
453 #define RTE_ETH_FDIR_PBALLOC_64K        RTE_FDIR_PBALLOC_64K
454 #define RTE_ETH_FDIR_PBALLOC_128K       RTE_FDIR_PBALLOC_128K
455 #define RTE_ETH_FDIR_PBALLOC_256K       RTE_FDIR_PBALLOC_256K
456 #define RTE_ETH_RX_OFFLOAD_VLAN_STRIP   DEV_RX_OFFLOAD_VLAN_STRIP
457 #define RTE_ETH_RX_OFFLOAD_IPV4_CKSUM   DEV_RX_OFFLOAD_IPV4_CKSUM
458 #define RTE_ETH_RX_OFFLOAD_UDP_CKSUM    DEV_RX_OFFLOAD_UDP_CKSUM
459 #define RTE_ETH_RX_OFFLOAD_TCP_CKSUM    DEV_RX_OFFLOAD_TCP_CKSUM
460 #define RTE_ETH_RX_OFFLOAD_TCP_LRO      DEV_RX_OFFLOAD_TCP_LRO
461 #define RTE_ETH_RX_OFFLOAD_QINQ_STRIP   DEV_RX_OFFLOAD_QINQ_STRIP
462 #define RTE_ETH_RX_OFFLOAD_OUTER_IPV4_CKSUM     DEV_RX_OFFLOAD_OUTER_IPV4_CKSUM
463 #define RTE_ETH_TX_OFFLOAD_VLAN_INSERT  DEV_TX_OFFLOAD_VLAN_INSERT
464 #define RTE_ETH_TX_OFFLOAD_IPV4_CKSUM   DEV_TX_OFFLOAD_IPV4_CKSUM
465 #define RTE_ETH_TX_OFFLOAD_UDP_CKSUM    DEV_TX_OFFLOAD_UDP_CKSUM
466 #define RTE_ETH_TX_OFFLOAD_TCP_CKSUM    DEV_TX_OFFLOAD_TCP_CKSUM
467 #define RTE_ETH_TX_OFFLOAD_SCTP_CKSUM   DEV_TX_OFFLOAD_SCTP_CKSUM
468 #define RTE_ETH_TX_OFFLOAD_TCP_TSO      DEV_TX_OFFLOAD_TCP_TSO
469 #define RTE_ETH_TX_OFFLOAD_UDP_TSO      DEV_TX_OFFLOAD_UDP_TSO
470 #define RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM     DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM
471 #define RTE_ETH_TX_OFFLOAD_QINQ_INSERT  DEV_TX_OFFLOAD_QINQ_INSERT
472 #define RTE_ETH_DCB_NUM_TCS             ETH_DCB_NUM_TCS
473 #define RTE_ETH_MAX_VMDQ_POOL           ETH_MAX_VMDQ_POOL
474 #if RTE_VERSION >= RTE_VERSION_NUM(16,7,0,0)
475 #define RTE_MEMPOOL_REGISTER_OPS        MEMPOOL_REGISTER_OPS
476 #define RTE_MBUF_F_RX_VLAN_STRIPPED     PKT_RX_VLAN_STRIPPED
477 #define RTE_MBUF_F_RX_QINQ_STRIPPED     PKT_RX_QINQ_STRIPPED
478 #define RTE_ETH_RSS_PORT                ETH_RSS_PORT
479 #define RTE_ETH_RSS_VXLAN               ETH_RSS_VXLAN
480 #define RTE_ETH_RSS_GENEVE              ETH_RSS_GENEVE
481 #define RTE_ETH_RSS_NVGRE               ETH_RSS_NVGRE
482 #define RTE_ETH_RSS_TUNNEL              ETH_RSS_TUNNEL
483 #define RTE_ETH_RSS_RETA_SIZE_256       ETH_RSS_RETA_SIZE_256
484 #endif
485 #if RTE_VERSION >= RTE_VERSION_NUM(16,11,0,0)
486 #define RTE_MBUF_F_RX_IP_CKSUM_MASK     PKT_RX_IP_CKSUM_MASK
487 #define RTE_MBUF_F_RX_IP_CKSUM_UNKNOWN  PKT_RX_IP_CKSUM_UNKNOWN
488 #define RTE_MBUF_F_RX_IP_CKSUM_GOOD     PKT_RX_IP_CKSUM_GOOD
489 #define RTE_MBUF_F_RX_IP_CKSUM_NONE     PKT_RX_IP_CKSUM_NONE
490 #define RTE_MBUF_F_RX_L4_CKSUM_MASK     PKT_RX_L4_CKSUM_MASK
491 #define RTE_MBUF_F_RX_L4_CKSUM_UNKNOWN  PKT_RX_L4_CKSUM_UNKNOWN
492 #define RTE_MBUF_F_RX_L4_CKSUM_GOOD     PKT_RX_L4_CKSUM_GOOD
493 #define RTE_MBUF_F_RX_L4_CKSUM_NONE     PKT_RX_L4_CKSUM_NONE
494 #define RTE_MBUF_F_RX_LRO               PKT_RX_LRO
495 #define RTE_MBUF_F_TX_TUNNEL_VXLAN      PKT_TX_TUNNEL_VXLAN
496 #define RTE_MBUF_F_TX_TUNNEL_GRE        PKT_TX_TUNNEL_GRE
497 #define RTE_MBUF_F_TX_TUNNEL_IPIP       PKT_TX_TUNNEL_IPIP
498 #define RTE_MBUF_F_TX_TUNNEL_GENEVE     PKT_TX_TUNNEL_GENEVE
499 #define RTE_MBUF_F_TX_TUNNEL_MASK       PKT_TX_TUNNEL_MASK
500 #define RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO        DEV_TX_OFFLOAD_VXLAN_TNL_TSO
501 #define RTE_ETH_TX_OFFLOAD_GRE_TNL_TSO          DEV_TX_OFFLOAD_GRE_TNL_TSO
502 #define RTE_ETH_TX_OFFLOAD_IPIP_TNL_TSO         DEV_TX_OFFLOAD_IPIP_TNL_TSO
503 #define RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO       DEV_TX_OFFLOAD_GENEVE_TNL_TSO
504 #endif
505 #if RTE_VERSION >= RTE_VERSION_NUM(17,2,0,0)
506 #define RTE_MBUF_F_TX_MACSEC            PKT_TX_MACSEC
507 #define RTE_MBUF_F_TX_OFFLOAD_MASK      PKT_TX_OFFLOAD_MASK
508 #define RTE_ETH_RX_OFFLOAD_MACSEC_STRIP         DEV_RX_OFFLOAD_MACSEC_STRIP
509 #define RTE_ETH_TX_OFFLOAD_MACSEC_INSERT        DEV_TX_OFFLOAD_MACSEC_INSERT
510 #endif
511 #if RTE_VERSION >= RTE_VERSION_NUM(17,8,0,0)
512 #define RTE_MBUF_F_TX_TUNNEL_MPLSINUDP  PKT_TX_TUNNEL_MPLSINUDP
513 #define RTE_ETH_TX_OFFLOAD_MT_LOCKFREE  DEV_TX_OFFLOAD_MT_LOCKFREE
514 #endif
515 #if RTE_VERSION >= RTE_VERSION_NUM(17,11,0,0)
516 #define RTE_MBUF_F_RX_VLAN                      PKT_RX_VLAN
517 #define RTE_MBUF_F_RX_SEC_OFFLOAD               PKT_RX_SEC_OFFLOAD
518 #define RTE_MBUF_F_RX_SEC_OFFLOAD_FAILED        PKT_RX_SEC_OFFLOAD_FAILED
519 #define RTE_MBUF_F_RX_QINQ                      PKT_RX_QINQ
520 #define RTE_MBUF_F_TX_SEC_OFFLOAD               PKT_TX_SEC_OFFLOAD
521 #define RTE_ETH_RX_OFFLOAD_HEADER_SPLIT DEV_RX_OFFLOAD_HEADER_SPLIT
522 #define RTE_ETH_RX_OFFLOAD_VLAN_FILTER  DEV_RX_OFFLOAD_VLAN_FILTER
523 #define RTE_ETH_RX_OFFLOAD_VLAN_EXTEND  DEV_RX_OFFLOAD_VLAN_EXTEND
524 #define RTE_ETH_RX_OFFLOAD_SCATTER      DEV_RX_OFFLOAD_SCATTER
525 #define RTE_ETH_RX_OFFLOAD_TIMESTAMP    DEV_RX_OFFLOAD_TIMESTAMP
526 #define RTE_ETH_RX_OFFLOAD_SECURITY     DEV_RX_OFFLOAD_SECURITY
527 #define RTE_ETH_RX_OFFLOAD_CHECKSUM     DEV_RX_OFFLOAD_CHECKSUM
528 #define RTE_ETH_RX_OFFLOAD_VLAN         DEV_RX_OFFLOAD_VLAN
529 #define RTE_ETH_TX_OFFLOAD_MULTI_SEGS   DEV_TX_OFFLOAD_MULTI_SEGS
530 #define RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE       DEV_TX_OFFLOAD_MBUF_FAST_FREE
531 #define RTE_ETH_TX_OFFLOAD_SECURITY     DEV_TX_OFFLOAD_SECURITY
532 #endif
533 #if RTE_VERSION >= RTE_VERSION_NUM(18,2,0,0)
534 #define RTE_MBUF_F_TX_UDP_SEG           PKT_TX_UDP_SEG
535 #endif
536 #if RTE_VERSION >= RTE_VERSION_NUM(18,5,0,0)
537 #define RTE_MBUF_F_TX_TUNNEL_VXLAN_GPE  PKT_TX_TUNNEL_VXLAN_GPE
538 #define RTE_MBUF_F_TX_TUNNEL_IP         PKT_TX_TUNNEL_IP
539 #define RTE_MBUF_F_TX_TUNNEL_UDP        PKT_TX_TUNNEL_UDP
540 #define RTE_MBUF_F_EXTERNAL             EXT_ATTACHED_MBUF
541 #define RTE_ETH_TX_OFFLOAD_UDP_TNL_TSO  DEV_TX_OFFLOAD_UDP_TNL_TSO
542 #define RTE_ETH_TX_OFFLOAD_IP_TNL_TSO   DEV_TX_OFFLOAD_IP_TNL_TSO
543 #endif
544 #if RTE_VERSION >= RTE_VERSION_NUM(18,11,0,0)
545 #define RTE_MBUF_F_RX_OUTER_L4_CKSUM_MASK       PKT_RX_OUTER_L4_CKSUM_MASK
546 #define RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN    PKT_RX_OUTER_L4_CKSUM_UNKNOWN
547 #define RTE_MBUF_F_RX_OUTER_L4_CKSUM_BAD        PKT_RX_OUTER_L4_CKSUM_BAD
548 #define RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD       PKT_RX_OUTER_L4_CKSUM_GOOD
549 #define RTE_MBUF_F_RX_OUTER_L4_CKSUM_INVALID    PKT_RX_OUTER_L4_CKSUM_INVALID
550 #define RTE_MBUF_F_TX_OUTER_UDP_CKSUM           PKT_TX_OUTER_UDP_CKSUM
551 #define RTE_ETH_RX_OFFLOAD_SCTP_CKSUM           DEV_RX_OFFLOAD_SCTP_CKSUM
552 #define RTE_ETH_RX_OFFLOAD_OUTER_UDP_CKSUM      DEV_RX_OFFLOAD_OUTER_UDP_CKSUM
553 #define RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM      DEV_TX_OFFLOAD_OUTER_UDP_CKSUM
554 #endif
555 #if RTE_VERSION >= RTE_VERSION_NUM(19,5,0,0)
556 #define RTE_ETH_TUNNEL_TYPE_VXLAN_GPE   RTE_TUNNEL_TYPE_VXLAN_GPE
557 #endif
558 #if RTE_VERSION >= RTE_VERSION_NUM(19,8,0,0)
559 #define RTE_ETH_QINQ_STRIP_OFFLOAD      ETH_QINQ_STRIP_OFFLOAD
560 #define RTE_ETH_QINQ_STRIP_MASK         ETH_QINQ_STRIP_MASK
561 #endif
562 #if RTE_VERSION >= RTE_VERSION_NUM(19,11,0,0)
563 #define RTE_MBUF_DYNFLAG_RX_METADATA    PKT_RX_DYNF_METADATA
564 #define RTE_MBUF_DYNFLAG_TX_METADATA    PKT_TX_DYNF_METADATA
565 #define RTE_MBUF_F_FIRST_FREE           PKT_FIRST_FREE
566 #define RTE_MBUF_F_LAST_FREE            PKT_LAST_FREE
567 #define RTE_MBUF_F_TX_TUNNEL_GTP        PKT_TX_TUNNEL_GTP
568 #define RTE_ETH_RSS_GTPU                ETH_RSS_GTPU
569 #define RTE_ETH_RSS_L3_SRC_ONLY         ETH_RSS_L3_SRC_ONLY
570 #define RTE_ETH_RSS_L3_DST_ONLY         ETH_RSS_L3_DST_ONLY
571 #define RTE_ETH_RSS_L4_SRC_ONLY         ETH_RSS_L4_SRC_ONLY
572 #define RTE_ETH_RSS_L4_DST_ONLY         ETH_RSS_L4_DST_ONLY
573 #define RTE_ETH_RX_OFFLOAD_RSS_HASH     DEV_RX_OFFLOAD_RSS_HASH
574 #endif
575 #if RTE_VERSION >= RTE_VERSION_NUM(20,5,0,0)
576 #define RTE_ETH_LINK_SPEED_200G         ETH_LINK_SPEED_200G
577 #define RTE_ETH_SPEED_NUM_200G          ETH_SPEED_NUM_200G
578 #define RTE_ETH_RSS_ETH                 ETH_RSS_ETH
579 #define RTE_ETH_RSS_S_VLAN              ETH_RSS_S_VLAN
580 #define RTE_ETH_RSS_C_VLAN              ETH_RSS_C_VLAN
581 #define RTE_ETH_RSS_ESP                 ETH_RSS_ESP
582 #define RTE_ETH_RSS_AH                  ETH_RSS_AH
583 #define RTE_ETH_RSS_L2TPV3              ETH_RSS_L2TPV3
584 #define RTE_ETH_RSS_PFCP                ETH_RSS_PFCP
585 #define RTE_ETH_RSS_L2_SRC_ONLY         ETH_RSS_L2_SRC_ONLY
586 #define RTE_ETH_RSS_L2_DST_ONLY         ETH_RSS_L2_DST_ONLY
587 #define RTE_ETH_RSS_VLAN                ETH_RSS_VLAN
588 #endif
589 #if RTE_VERSION >= RTE_VERSION_NUM(20,8,0,0)
590 #define RTE_ETH_RSS_PPPOE               ETH_RSS_PPPOE
591 #define RTE_ETH_RSS_IPV6_PRE32          ETH_RSS_IPV6_PRE32
592 #define RTE_ETH_RSS_IPV6_PRE40          ETH_RSS_IPV6_PRE40
593 #define RTE_ETH_RSS_IPV6_PRE48          ETH_RSS_IPV6_PRE48
594 #define RTE_ETH_RSS_IPV6_PRE56          ETH_RSS_IPV6_PRE56
595 #define RTE_ETH_RSS_IPV6_PRE64          ETH_RSS_IPV6_PRE64
596 #define RTE_ETH_RSS_IPV6_PRE96          ETH_RSS_IPV6_PRE96
597 #define RTE_ETH_RSS_IPV6_PRE32_UDP      ETH_RSS_IPV6_PRE32_UDP
598 #define RTE_ETH_RSS_IPV6_PRE40_UDP      ETH_RSS_IPV6_PRE40_UDP
599 #define RTE_ETH_RSS_IPV6_PRE48_UDP      ETH_RSS_IPV6_PRE48_UDP
600 #define RTE_ETH_RSS_IPV6_PRE56_UDP      ETH_RSS_IPV6_PRE56_UDP
601 #define RTE_ETH_RSS_IPV6_PRE64_UDP      ETH_RSS_IPV6_PRE64_UDP
602 #define RTE_ETH_RSS_IPV6_PRE96_UDP      ETH_RSS_IPV6_PRE96_UDP
603 #define RTE_ETH_RSS_IPV6_PRE32_TCP      ETH_RSS_IPV6_PRE32_TCP
604 #define RTE_ETH_RSS_IPV6_PRE40_TCP      ETH_RSS_IPV6_PRE40_TCP
605 #define RTE_ETH_RSS_IPV6_PRE48_TCP      ETH_RSS_IPV6_PRE48_TCP
606 #define RTE_ETH_RSS_IPV6_PRE56_TCP      ETH_RSS_IPV6_PRE56_TCP
607 #define RTE_ETH_RSS_IPV6_PRE64_TCP      ETH_RSS_IPV6_PRE64_TCP
608 #define RTE_ETH_RSS_IPV6_PRE96_TCP      ETH_RSS_IPV6_PRE96_TCP
609 #define RTE_ETH_RSS_IPV6_PRE32_SCTP     ETH_RSS_IPV6_PRE32_SCTP
610 #define RTE_ETH_RSS_IPV6_PRE40_SCTP     ETH_RSS_IPV6_PRE40_SCTP
611 #define RTE_ETH_RSS_IPV6_PRE48_SCTP     ETH_RSS_IPV6_PRE48_SCTP
612 #define RTE_ETH_RSS_IPV6_PRE56_SCTP     ETH_RSS_IPV6_PRE56_SCTP
613 #define RTE_ETH_RSS_IPV6_PRE64_SCTP     ETH_RSS_IPV6_PRE64_SCTP
614 #define RTE_ETH_RSS_IPV6_PRE96_SCTP     ETH_RSS_IPV6_PRE96_SCTP
615 #define RTE_ETH_TX_OFFLOAD_SEND_ON_TIMESTAMP    DEV_TX_OFFLOAD_SEND_ON_TIMESTAMP
616 #endif
617 #if RTE_VERSION >= RTE_VERSION_NUM(20,11,0,0)
618 #define RTE_ETH_SPEED_NUM_UNKNOWN       ETH_SPEED_NUM_UNKNOWN
619 #define RTE_ETH_RSS_ECPRI               ETH_RSS_ECPRI
620 #define RTE_ETH_RSS_LEVEL_PMD_DEFAULT   ETH_RSS_LEVEL_PMD_DEFAULT
621 #define RTE_ETH_RSS_LEVEL_OUTERMOST     ETH_RSS_LEVEL_OUTERMOST
622 #define RTE_ETH_RSS_LEVEL_INNERMOST     ETH_RSS_LEVEL_INNERMOST
623 #define RTE_ETH_RSS_LEVEL_MASK          ETH_RSS_LEVEL_MASK
624 #define RTE_ETH_RSS_LEVEL               ETH_RSS_LEVEL
625 #endif
626 #if RTE_VERSION >= RTE_VERSION_NUM(21,2,0,0)
627 #define RTE_ETH_RSS_MPLS                ETH_RSS_MPLS
628 #define RTE_ETH_TUNNEL_TYPE_ECPRI       RTE_TUNNEL_TYPE_ECPRI
629 #endif
630
631 #ifndef DEV_RX_OFFLOAD_JUMBO_FRAME
632 #define RTE_ETH_RX_OFFLOAD_JUMBO_FRAME  0x00000800
633 #else
634 #define RTE_ETH_RX_OFFLOAD_JUMBO_FRAME  DEV_RX_OFFLOAD_JUMBO_FRAME
635 #endif
636
637 #ifndef DEV_RX_OFFLOAD_KEEP_CRC
638 #ifndef DEV_RX_OFFLOAD_CRC_STRIP
639 #define RTE_ETH_RX_OFFLOAD_CRC_STRIP    0x00001000
640 #else
641 #define RTE_ETH_RX_OFFLOAD_CRC_STRIP    DEV_RX_OFFLOAD_CRC_STRIP
642 #endif
643 #define RTE_ETH_RX_OFFLOAD_KEEP_CRC     _force_error_if_defined_
644 #undef  RTE_ETH_RX_OFFLOAD_KEEP_CRC
645
646 #else
647 #ifndef DEV_RX_OFFLOAD_CRC_STRIP
648 #define RTE_ETH_RX_OFFLOAD_CRC_STRIP    _force_error_if_defined_
649 #undef  RTE_ETH_RX_OFFLOAD_CRC_STRIP
650 #else
651 #define RTE_ETH_RX_OFFLOAD_CRC_STRIP    DEV_RX_OFFLOAD_CRC_STRIP
652 #endif
653 #define RTE_ETH_RX_OFFLOAD_KEEP_CRC     DEV_RX_OFFLOAD_KEEP_CRC
654 #endif
655
656 #else //  >= 21.11
657 #define RTE_ETH_RX_OFFLOAD_JUMBO_FRAME  RTE_BIT64(11)
658 #define RTE_ETH_RX_OFFLOAD_CRC_STRIP    _force_error_if_defined_
659 #undef  RTE_ETH_RX_OFFLOAD_CRC_STRIP
660 #endif
661
662 #endif // _PROX_COMPAT_H