From: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
To: dev@dpdk.org
Cc: konstantin.ananyev@intel.com, conor.walsh@intel.com, thomas@monjalon.net
Subject: [dpdk-dev] [PATCH v2] fib: add rib extension size parameter
Date: Wed, 27 Oct 2021 16:49:40 +0100 [thread overview]
Message-ID: <1635349780-167920-1-git-send-email-vladimir.medvedkin@intel.com> (raw)
In-Reply-To: <1630943759-362969-1-git-send-email-vladimir.medvedkin@intel.com>
This patch adds a new parameter to the fib configuration to specify
the size of the extension for internal RIB structure.
Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
Tested-by: Conor Walsh <conor.walsh@intel.com>
---
app/test-fib/main.c | 2 ++
app/test/test_fib.c | 5 +++++
app/test/test_fib6.c | 5 +++++
app/test/test_fib6_perf.c | 1 +
app/test/test_fib_perf.c | 1 +
doc/guides/rel_notes/release_21_11.rst | 5 +++++
examples/l3fwd/l3fwd_fib.c | 2 ++
lib/fib/rte_fib.c | 2 +-
lib/fib/rte_fib.h | 2 ++
lib/fib/rte_fib6.c | 2 +-
lib/fib/rte_fib6.h | 2 ++
11 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/app/test-fib/main.c b/app/test-fib/main.c
index b0a97b0..ecd4201 100644
--- a/app/test-fib/main.c
+++ b/app/test-fib/main.c
@@ -857,6 +857,7 @@ run_v4(void)
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,
@@ -1057,6 +1058,7 @@ run_v6(void)
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,
diff --git a/app/test/test_fib.c b/app/test/test_fib.c
index e46b993..eb69d6e 100644
--- a/app/test/test_fib.c
+++ b/app/test/test_fib.c
@@ -36,6 +36,7 @@ test_create_invalid(void)
struct rte_fib_conf config;
config.max_routes = MAX_ROUTES;
+ config.rib_ext_sz = 0;
config.default_nh = 0;
config.type = RTE_FIB_DUMMY;
@@ -94,6 +95,7 @@ test_multiple_create(void)
struct rte_fib_conf config;
int32_t i;
+ config.rib_ext_sz = 0;
config.default_nh = 0;
config.type = RTE_FIB_DUMMY;
@@ -120,6 +122,7 @@ test_free_null(void)
struct rte_fib_conf config;
config.max_routes = MAX_ROUTES;
+ config.rib_ext_sz = 0;
config.default_nh = 0;
config.type = RTE_FIB_DUMMY;
@@ -146,6 +149,7 @@ test_add_del_invalid(void)
uint8_t depth = 24;
config.max_routes = MAX_ROUTES;
+ config.rib_ext_sz = 0;
config.default_nh = 0;
config.type = RTE_FIB_DUMMY;
@@ -320,6 +324,7 @@ test_lookup(void)
int ret;
config.max_routes = MAX_ROUTES;
+ config.rib_ext_sz = 0;
config.default_nh = def_nh;
config.type = RTE_FIB_DUMMY;
diff --git a/app/test/test_fib6.c b/app/test/test_fib6.c
index 74abfc7..15ad091 100644
--- a/app/test/test_fib6.c
+++ b/app/test/test_fib6.c
@@ -38,6 +38,7 @@ test_create_invalid(void)
struct rte_fib6_conf config;
config.max_routes = MAX_ROUTES;
+ config.rib_ext_sz = 0;
config.default_nh = 0;
config.type = RTE_FIB6_DUMMY;
@@ -96,6 +97,7 @@ test_multiple_create(void)
struct rte_fib6_conf config;
int32_t i;
+ config.rib_ext_sz = 0;
config.default_nh = 0;
config.type = RTE_FIB6_DUMMY;
@@ -122,6 +124,7 @@ test_free_null(void)
struct rte_fib6_conf config;
config.max_routes = MAX_ROUTES;
+ config.rib_ext_sz = 0;
config.default_nh = 0;
config.type = RTE_FIB6_DUMMY;
@@ -149,6 +152,7 @@ test_add_del_invalid(void)
uint8_t depth = 24;
config.max_routes = MAX_ROUTES;
+ config.rib_ext_sz = 0;
config.default_nh = 0;
config.type = RTE_FIB6_DUMMY;
@@ -338,6 +342,7 @@ test_lookup(void)
int ret;
config.max_routes = MAX_ROUTES;
+ config.rib_ext_sz = 0;
config.default_nh = def_nh;
config.type = RTE_FIB6_DUMMY;
diff --git a/app/test/test_fib6_perf.c b/app/test/test_fib6_perf.c
index 56c799b..e565799 100644
--- a/app/test/test_fib6_perf.c
+++ b/app/test/test_fib6_perf.c
@@ -78,6 +78,7 @@ test_fib6_perf(void)
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);
diff --git a/app/test/test_fib_perf.c b/app/test/test_fib_perf.c
index dd2e54d..86b2f83 100644
--- a/app/test/test_fib_perf.c
+++ b/app/test/test_fib_perf.c
@@ -323,6 +323,7 @@ test_fib_perf(void)
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;
diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst
index 1ccac87..f4d4444 100644
--- a/doc/guides/rel_notes/release_21_11.rst
+++ b/doc/guides/rel_notes/release_21_11.rst
@@ -305,6 +305,11 @@ New Features
* Pcapng format with timestamps and meta-data.
* Fixes packet capture with stripped VLAN tags.
+* **Updated FIB library API.**
+
+ 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.
+
Removed Items
-------------
diff --git a/examples/l3fwd/l3fwd_fib.c b/examples/l3fwd/l3fwd_fib.c
index ca0f350..f5c685a 100644
--- a/examples/l3fwd/l3fwd_fib.c
+++ b/examples/l3fwd/l3fwd_fib.c
@@ -590,6 +590,7 @@ setup_fib(const int socketid)
/* 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);
@@ -639,6 +640,7 @@ setup_fib(const int socketid)
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);
diff --git a/lib/fib/rte_fib.c b/lib/fib/rte_fib.c
index b354d4b..6ca180d 100644
--- a/lib/fib/rte_fib.c
+++ b/lib/fib/rte_fib.c
@@ -164,7 +164,7 @@ rte_fib_create(const char *name, int socket_id, struct rte_fib_conf *conf)
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);
diff --git a/lib/fib/rte_fib.h b/lib/fib/rte_fib.h
index ac54f83..b3c59df 100644
--- a/lib/fib/rte_fib.h
+++ b/lib/fib/rte_fib.h
@@ -80,6 +80,8 @@ struct rte_fib_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;
diff --git a/lib/fib/rte_fib6.c b/lib/fib/rte_fib6.c
index 44cc0c9..be79efe 100644
--- a/lib/fib/rte_fib6.c
+++ b/lib/fib/rte_fib6.c
@@ -165,7 +165,7 @@ rte_fib6_create(const char *name, int socket_id, struct rte_fib6_conf *conf)
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);
diff --git a/lib/fib/rte_fib6.h b/lib/fib/rte_fib6.h
index f9d7812..95879af 100644
--- a/lib/fib/rte_fib6.h
+++ b/lib/fib/rte_fib6.h
@@ -71,6 +71,8 @@ struct rte_fib6_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;
--
2.7.4
next prev parent reply other threads:[~2021-10-27 15:49 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-06 15:55 [dpdk-dev] [PATCH] " Vladimir Medvedkin
2021-09-08 16:59 ` Conor Walsh
2021-10-25 17:23 ` Thomas Monjalon
2021-10-26 20:30 ` Medvedkin, Vladimir
2021-10-27 8:28 ` Thomas Monjalon
2021-10-27 15:47 ` Medvedkin, Vladimir
2021-10-27 15:49 ` Vladimir Medvedkin [this message]
2021-11-04 11:36 ` [dpdk-dev] [PATCH v2] " Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1635349780-167920-1-git-send-email-vladimir.medvedkin@intel.com \
--to=vladimir.medvedkin@intel.com \
--cc=conor.walsh@intel.com \
--cc=dev@dpdk.org \
--cc=konstantin.ananyev@intel.com \
--cc=thomas@monjalon.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).