conf.type = get_fib_type();
conf.default_nh = def_nh;
conf.max_routes = config.nb_routes * 2;
+ conf.rib_ext_sz = 0;
if (conf.type == RTE_FIB_DIR24_8) {
conf.dir24_8.nh_sz = __builtin_ctz(config.ent_sz);
conf.dir24_8.num_tbl8 = RTE_MIN(config.tbl8,
conf.type = get_fib_type();
conf.default_nh = def_nh;
conf.max_routes = config.nb_routes * 2;
+ conf.rib_ext_sz = 0;
if (conf.type == RTE_FIB6_TRIE) {
conf.trie.nh_sz = __builtin_ctz(config.ent_sz);
conf.trie.num_tbl8 = RTE_MIN(config.tbl8,
struct rte_fib_conf config;
config.max_routes = MAX_ROUTES;
+ config.rib_ext_sz = 0;
config.default_nh = 0;
config.type = RTE_FIB_DUMMY;
struct rte_fib_conf config;
int32_t i;
+ config.rib_ext_sz = 0;
config.default_nh = 0;
config.type = RTE_FIB_DUMMY;
struct rte_fib_conf config;
config.max_routes = MAX_ROUTES;
+ config.rib_ext_sz = 0;
config.default_nh = 0;
config.type = RTE_FIB_DUMMY;
uint8_t depth = 24;
config.max_routes = MAX_ROUTES;
+ config.rib_ext_sz = 0;
config.default_nh = 0;
config.type = RTE_FIB_DUMMY;
int ret;
config.max_routes = MAX_ROUTES;
+ config.rib_ext_sz = 0;
config.default_nh = def_nh;
config.type = RTE_FIB_DUMMY;
struct rte_fib6_conf config;
config.max_routes = MAX_ROUTES;
+ config.rib_ext_sz = 0;
config.default_nh = 0;
config.type = RTE_FIB6_DUMMY;
struct rte_fib6_conf config;
int32_t i;
+ config.rib_ext_sz = 0;
config.default_nh = 0;
config.type = RTE_FIB6_DUMMY;
struct rte_fib6_conf config;
config.max_routes = MAX_ROUTES;
+ config.rib_ext_sz = 0;
config.default_nh = 0;
config.type = RTE_FIB6_DUMMY;
uint8_t depth = 24;
config.max_routes = MAX_ROUTES;
+ config.rib_ext_sz = 0;
config.default_nh = 0;
config.type = RTE_FIB6_DUMMY;
int ret;
config.max_routes = MAX_ROUTES;
+ config.rib_ext_sz = 0;
config.default_nh = def_nh;
config.type = RTE_FIB6_DUMMY;
conf.type = RTE_FIB6_TRIE;
conf.default_nh = 0;
conf.max_routes = 1000000;
+ conf.rib_ext_sz = 0;
conf.trie.nh_sz = RTE_FIB6_TRIE_4B;
conf.trie.num_tbl8 = RTE_MIN(get_max_nh(conf.trie.nh_sz), 1000000U);
struct rte_fib_conf config;
config.max_routes = 2000000;
+ config.rib_ext_sz = 0;
config.type = RTE_FIB_DIR24_8;
config.default_nh = 0;
config.dir24_8.nh_sz = RTE_FIB_DIR24_8_4B;
* eventdev: Moved memory used by timer adapters to hugepage. This will prevent
TLB misses if any and aligns to memory structure of other subsystems.
+* fib: Added the ``rib_ext_sz`` field to ``rte_fib_conf`` and ``rte_fib6_conf``
+ so that user can specify the size of the RIB extension inside the FIB.
+
ABI Changes
-----------
/* Create the fib IPv4 table. */
config_ipv4.type = RTE_FIB_DIR24_8;
config_ipv4.max_routes = (1 << 16);
+ config_ipv4.rib_ext_sz = 0;
config_ipv4.default_nh = FIB_DEFAULT_HOP;
config_ipv4.dir24_8.nh_sz = RTE_FIB_DIR24_8_4B;
config_ipv4.dir24_8.num_tbl8 = (1 << 15);
config.type = RTE_FIB6_TRIE;
config.max_routes = (1 << 16) - 1;
+ config.rib_ext_sz = 0;
config.default_nh = FIB_DEFAULT_HOP;
config.trie.nh_sz = RTE_FIB6_TRIE_4B;
config.trie.num_tbl8 = (1 << 15);
return NULL;
}
- rib_conf.ext_sz = 0;
+ rib_conf.ext_sz = conf->rib_ext_sz;
rib_conf.max_nodes = conf->max_routes * 2;
rib = rte_rib_create(name, socket_id, &rib_conf);
/** Default value returned on lookup if there is no route */
uint64_t default_nh;
int max_routes;
+ /** Size of the node extension in the internal RIB struct */
+ unsigned int rib_ext_sz;
union {
struct {
enum rte_fib_dir24_8_nh_sz nh_sz;
return NULL;
}
- rib_conf.ext_sz = 0;
+ rib_conf.ext_sz = conf->rib_ext_sz;
rib_conf.max_nodes = conf->max_routes * 2;
rib = rte_rib6_create(name, socket_id, &rib_conf);
/** Default value returned on lookup if there is no route */
uint64_t default_nh;
int max_routes;
+ /** Size of the node extension in the internal RIB struct */
+ unsigned int rib_ext_sz;
union {
struct {
enum rte_fib_trie_nh_sz nh_sz;