DPDK  23.03.0
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 
46 struct rte_gro_param {
47  uint64_t gro_types;
49  uint16_t max_flow_num;
53  uint16_t socket_id;
58 };
59 
75 void *rte_gro_ctx_create(const struct rte_gro_param *param);
76 
86 void rte_gro_ctx_destroy(void *ctx);
87 
108 uint16_t rte_gro_reassemble_burst(struct rte_mbuf **pkts,
109  uint16_t nb_pkts,
110  const struct rte_gro_param *param);
111 
139 uint16_t rte_gro_reassemble(struct rte_mbuf **pkts,
140  uint16_t nb_pkts,
141  void *ctx);
142 
170 uint16_t rte_gro_timeout_flush(void *ctx,
171  uint64_t timeout_cycles,
172  uint64_t gro_types,
173  struct rte_mbuf **out,
174  uint16_t max_nb_out);
175 
189 uint64_t rte_gro_get_pkt_count(void *ctx);
190 
191 #ifdef __cplusplus
192 }
193 #endif
194 
195 #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:49
uint64_t gro_types
Definition: rte_gro.h:47
uint16_t max_item_per_flow
Definition: rte_gro.h:51
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:53
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)