DPDK
24.11.4
Toggle main menu visibility
Loading...
Searching...
No Matches
rte_fib.h
Go to the documentation of this file.
1
/* SPDX-License-Identifier: BSD-3-Clause
2
* Copyright(c) 2018 Vladimir Medvedkin <medvedkinv@gmail.com>
3
* Copyright(c) 2019 Intel Corporation
4
*/
5
6
#ifndef _RTE_FIB_H_
7
#define _RTE_FIB_H_
8
17
18
#include <stdint.h>
19
20
#include <
rte_rcu_qsbr.h
>
21
22
#ifdef __cplusplus
23
extern
"C"
{
24
#endif
25
26
struct
rte_fib;
27
struct
rte_rib;
28
30
#define RTE_FIB_MAXDEPTH 32
31
33
#define RTE_FIB_RCU_DQ_RECLAIM_MAX 16
35
#define RTE_FIB_RCU_DQ_RECLAIM_SZ 128
36
38
enum
rte_fib_qsbr_mode
{
40
RTE_FIB_QSBR_MODE_DQ
= 0,
42
RTE_FIB_QSBR_MODE_SYNC
43
};
44
46
enum
rte_fib_type
{
47
RTE_FIB_DUMMY
,
48
RTE_FIB_DIR24_8
49
};
50
52
typedef
int (*
rte_fib_modify_fn_t
)(
struct
rte_fib *fib, uint32_t ip,
53
uint8_t depth, uint64_t next_hop,
int
op);
55
typedef
void (*
rte_fib_lookup_fn_t
)(
void
*fib,
const
uint32_t *ips,
56
uint64_t *next_hops,
const
unsigned
int
n);
57
58
enum
rte_fib_op {
59
RTE_FIB_ADD,
60
RTE_FIB_DEL,
61
};
62
64
enum
rte_fib_dir24_8_nh_sz
{
65
RTE_FIB_DIR24_8_1B,
66
RTE_FIB_DIR24_8_2B,
67
RTE_FIB_DIR24_8_4B,
68
RTE_FIB_DIR24_8_8B
69
};
70
72
enum
rte_fib_lookup_type
{
73
RTE_FIB_LOOKUP_DEFAULT
,
75
RTE_FIB_LOOKUP_DIR24_8_SCALAR_MACRO
,
77
RTE_FIB_LOOKUP_DIR24_8_SCALAR_INLINE
,
82
RTE_FIB_LOOKUP_DIR24_8_SCALAR_UNI
,
86
RTE_FIB_LOOKUP_DIR24_8_VECTOR_AVX512
88
};
89
91
#define RTE_FIB_F_LOOKUP_NETWORK_ORDER 1
92
#define RTE_FIB_ALLOWED_FLAGS (RTE_FIB_F_LOOKUP_NETWORK_ORDER)
93
95
struct
rte_fib_conf
{
96
enum
rte_fib_type
type
;
98
uint64_t
default_nh
;
99
int
max_routes;
101
unsigned
int
rib_ext_sz
;
102
union
{
103
struct
{
104
enum
rte_fib_dir24_8_nh_sz
nh_sz;
105
uint32_t num_tbl8;
106
} dir24_8;
107
};
108
unsigned
int
flags
;
109
};
110
112
struct
rte_fib_rcu_config
{
114
struct
rte_rcu_qsbr *
v
;
118
enum
rte_fib_qsbr_mode
mode
;
122
uint32_t
dq_size
;
124
uint32_t
reclaim_thd
;
128
uint32_t
reclaim_max
;
129
};
130
144
struct
rte_fib *
145
rte_fib_create
(
const
char
*name,
int
socket_id,
struct
rte_fib_conf
*conf);
146
157
struct
rte_fib *
158
rte_fib_find_existing
(
const
char
*name);
159
167
void
168
rte_fib_free
(
struct
rte_fib *fib);
169
184
int
185
rte_fib_add
(
struct
rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t next_hop);
186
199
int
200
rte_fib_delete
(
struct
rte_fib *fib, uint32_t ip, uint8_t depth);
201
219
int
220
rte_fib_lookup_bulk
(
struct
rte_fib *fib, uint32_t *ips,
221
uint64_t *next_hops,
int
n);
231
void
*
232
rte_fib_get_dp
(
struct
rte_fib *fib);
233
243
struct
rte_rib *
244
rte_fib_get_rib
(
struct
rte_fib *fib);
245
258
int
259
rte_fib_select_lookup
(
struct
rte_fib *fib,
enum
rte_fib_lookup_type
type);
260
277
__rte_experimental
278
int
279
rte_fib_rcu_qsbr_add
(
struct
rte_fib *fib,
struct
rte_fib_rcu_config
*cfg);
280
281
#ifdef __cplusplus
282
}
283
#endif
284
285
#endif
/* _RTE_FIB_H_ */
rte_fib_get_dp
void * rte_fib_get_dp(struct rte_fib *fib)
rte_fib_delete
int rte_fib_delete(struct rte_fib *fib, uint32_t ip, uint8_t depth)
rte_fib_lookup_type
rte_fib_lookup_type
Definition
rte_fib.h:72
RTE_FIB_LOOKUP_DIR24_8_SCALAR_UNI
@ RTE_FIB_LOOKUP_DIR24_8_SCALAR_UNI
Definition
rte_fib.h:82
RTE_FIB_LOOKUP_DIR24_8_SCALAR_INLINE
@ RTE_FIB_LOOKUP_DIR24_8_SCALAR_INLINE
Definition
rte_fib.h:77
RTE_FIB_LOOKUP_DIR24_8_SCALAR_MACRO
@ RTE_FIB_LOOKUP_DIR24_8_SCALAR_MACRO
Definition
rte_fib.h:75
RTE_FIB_LOOKUP_DEFAULT
@ RTE_FIB_LOOKUP_DEFAULT
Definition
rte_fib.h:73
RTE_FIB_LOOKUP_DIR24_8_VECTOR_AVX512
@ RTE_FIB_LOOKUP_DIR24_8_VECTOR_AVX512
Definition
rte_fib.h:86
rte_fib_lookup_fn_t
void(* rte_fib_lookup_fn_t)(void *fib, const uint32_t *ips, uint64_t *next_hops, const unsigned int n)
Definition
rte_fib.h:55
rte_fib_rcu_qsbr_add
__rte_experimental int rte_fib_rcu_qsbr_add(struct rte_fib *fib, struct rte_fib_rcu_config *cfg)
rte_fib_create
struct rte_fib * rte_fib_create(const char *name, int socket_id, struct rte_fib_conf *conf)
rte_fib_find_existing
struct rte_fib * rte_fib_find_existing(const char *name)
rte_fib_dir24_8_nh_sz
rte_fib_dir24_8_nh_sz
Definition
rte_fib.h:64
rte_fib_get_rib
struct rte_rib * rte_fib_get_rib(struct rte_fib *fib)
rte_fib_select_lookup
int rte_fib_select_lookup(struct rte_fib *fib, enum rte_fib_lookup_type type)
rte_fib_modify_fn_t
int(* rte_fib_modify_fn_t)(struct rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t next_hop, int op)
Definition
rte_fib.h:52
rte_fib_qsbr_mode
rte_fib_qsbr_mode
Definition
rte_fib.h:38
RTE_FIB_QSBR_MODE_DQ
@ RTE_FIB_QSBR_MODE_DQ
Definition
rte_fib.h:40
RTE_FIB_QSBR_MODE_SYNC
@ RTE_FIB_QSBR_MODE_SYNC
Definition
rte_fib.h:42
rte_fib_free
void rte_fib_free(struct rte_fib *fib)
rte_fib_lookup_bulk
int rte_fib_lookup_bulk(struct rte_fib *fib, uint32_t *ips, uint64_t *next_hops, int n)
rte_fib_add
int rte_fib_add(struct rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t next_hop)
rte_fib_type
rte_fib_type
Definition
rte_fib.h:46
RTE_FIB_DUMMY
@ RTE_FIB_DUMMY
Definition
rte_fib.h:47
RTE_FIB_DIR24_8
@ RTE_FIB_DIR24_8
Definition
rte_fib.h:48
rte_rcu_qsbr.h
rte_fib_conf
Definition
rte_fib.h:95
rte_fib_conf::default_nh
uint64_t default_nh
Definition
rte_fib.h:98
rte_fib_conf::flags
unsigned int flags
Definition
rte_fib.h:108
rte_fib_conf::type
enum rte_fib_type type
Definition
rte_fib.h:96
rte_fib_conf::rib_ext_sz
unsigned int rib_ext_sz
Definition
rte_fib.h:101
rte_fib_rcu_config
Definition
rte_fib.h:112
rte_fib_rcu_config::v
struct rte_rcu_qsbr * v
Definition
rte_fib.h:114
rte_fib_rcu_config::mode
enum rte_fib_qsbr_mode mode
Definition
rte_fib.h:118
rte_fib_rcu_config::reclaim_max
uint32_t reclaim_max
Definition
rte_fib.h:128
rte_fib_rcu_config::reclaim_thd
uint32_t reclaim_thd
Definition
rte_fib.h:124
rte_fib_rcu_config::dq_size
uint32_t dq_size
Definition
rte_fib.h:122
lib
fib
rte_fib.h
Generated by
1.17.0