DPDK  24.11.0-rc3
rte_gro.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2017 Intel Corporation
3  */
4 
5 #ifndef _RTE_GRO_H_
6 #define _RTE_GRO_H_
7 
13 #include <stdint.h>
14 #include <rte_mbuf.h>
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 #define RTE_GRO_MAX_BURST_ITEM_NUM 128U
21 
24 #define RTE_GRO_TYPE_MAX_NUM 64
25 
26 #define RTE_GRO_TYPE_SUPPORT_NUM 2
27 
29 #define RTE_GRO_TCP_IPV4_INDEX 0
30 #define RTE_GRO_TCP_IPV4 (1ULL << RTE_GRO_TCP_IPV4_INDEX)
31 
32 #define RTE_GRO_IPV4_VXLAN_TCP_IPV4_INDEX 1
33 #define RTE_GRO_IPV4_VXLAN_TCP_IPV4 (1ULL << RTE_GRO_IPV4_VXLAN_TCP_IPV4_INDEX)
34 
35 #define RTE_GRO_UDP_IPV4_INDEX 2
36 #define RTE_GRO_UDP_IPV4 (1ULL << RTE_GRO_UDP_IPV4_INDEX)
37 
38 #define RTE_GRO_IPV4_VXLAN_UDP_IPV4_INDEX 3
39 #define RTE_GRO_IPV4_VXLAN_UDP_IPV4 (1ULL << RTE_GRO_IPV4_VXLAN_UDP_IPV4_INDEX)
40 
41 #define RTE_GRO_TCP_IPV6_INDEX 4
42 #define RTE_GRO_TCP_IPV6 (1ULL << RTE_GRO_TCP_IPV6_INDEX)
43 
49 struct rte_gro_param {
50  uint64_t gro_types;
52  uint16_t max_flow_num;
56  uint16_t socket_id;
61 };
62 
78 void *rte_gro_ctx_create(const struct rte_gro_param *param);
79 
89 void rte_gro_ctx_destroy(void *ctx);
90 
111 uint16_t rte_gro_reassemble_burst(struct rte_mbuf **pkts,
112  uint16_t nb_pkts,
113  const struct rte_gro_param *param);
114 
142 uint16_t rte_gro_reassemble(struct rte_mbuf **pkts,
143  uint16_t nb_pkts,
144  void *ctx);
145 
173 uint16_t rte_gro_timeout_flush(void *ctx,
174  uint64_t timeout_cycles,
175  uint64_t gro_types,
176  struct rte_mbuf **out,
177  uint16_t max_nb_out);
178 
192 uint64_t rte_gro_get_pkt_count(void *ctx);
193 
194 #ifdef __cplusplus
195 }
196 #endif
197 
198 #endif /* _RTE_GRO_H_ */
uint16_t rte_gro_timeout_flush(void *ctx, uint64_t timeout_cycles, uint64_t gro_types, struct rte_mbuf **out, uint16_t max_nb_out)
uint16_t max_flow_num
Definition: rte_gro.h:52
uint64_t gro_types
Definition: rte_gro.h:50
uint16_t max_item_per_flow
Definition: rte_gro.h:54
void * rte_gro_ctx_create(const struct rte_gro_param *param)
void rte_gro_ctx_destroy(void *ctx)
uint16_t rte_gro_reassemble(struct rte_mbuf **pkts, uint16_t nb_pkts, void *ctx)
uint16_t socket_id
Definition: rte_gro.h:56
uint64_t rte_gro_get_pkt_count(void *ctx)
uint16_t rte_gro_reassemble_burst(struct rte_mbuf **pkts, uint16_t nb_pkts, const struct rte_gro_param *param)