> -----Original Message----- > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Michal Jastrzebski > Sent: Monday, June 20, 2016 11:10 AM > To: dev at dpdk.org > Cc: Kobylinski, MichalX <michalx.kobylinski at intel.com> > Subject: [dpdk-dev] [PATCH] lib/table: fix wrong type of nht field > > From: Michal Kobylinski <michalx.kobylinski at intel.com> > > Change type of nht field from uint32_t to uint8_t and increase max of > next hops. > > Fixes: dc81ebbacaeb ("lpm: extend IPv4 next hop field") > > Signed-off-by: Michal Kobylinski <michalx.kobylinski at intel.com> > Acked-by: Cristian Dumitrescu <cristian.dumitrescu at intel.com> > --- > examples/ip_pipeline/pipeline/pipeline_routing_be.h | 2 +- > lib/librte_table/rte_table_lpm.c | 8 ++++---- > 2 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/examples/ip_pipeline/pipeline/pipeline_routing_be.h > b/examples/ip_pipeline/pipeline/pipeline_routing_be.h > index 1276342..ea50896 100644 > --- a/examples/ip_pipeline/pipeline/pipeline_routing_be.h > +++ b/examples/ip_pipeline/pipeline/pipeline_routing_be.h > @@ -42,7 +42,7 @@ > * Pipeline argument parsing > */ > #ifndef PIPELINE_ROUTING_N_ROUTES_DEFAULT > -#define PIPELINE_ROUTING_N_ROUTES_DEFAULT 4096 > +#define PIPELINE_ROUTING_N_ROUTES_DEFAULT 65536 > #endif >
Changing the PIPELINE_ROUTING_N_ROUTES_DEFAULT is actually not required, this is simply the default value which can be changed through the configuration file. Please remove this. > enum pipeline_routing_encap { > diff --git a/lib/librte_table/rte_table_lpm.c > b/lib/librte_table/rte_table_lpm.c > index cdeb0f5..f2eaed5 100644 > --- a/lib/librte_table/rte_table_lpm.c > +++ b/lib/librte_table/rte_table_lpm.c > @@ -44,7 +44,7 @@ > > #include "rte_table_lpm.h" > > -#define RTE_TABLE_LPM_MAX_NEXT_HOPS 256 > +#define RTE_TABLE_LPM_MAX_NEXT_HOPS 65536 > With the next hop size of 24 bits, we can now make this configurable, so please use: #ifndef RTE_TABLE_LPM_MAX_NEXT_HOPS #define RTE_TABLE_LPM_MAX_NEXT_HOPS 65536 #endif > #ifdef RTE_TABLE_STATS_COLLECT > > @@ -74,7 +74,7 @@ struct rte_table_lpm { > > /* Next Hop Table (NHT) */ > uint32_t nht_users[RTE_TABLE_LPM_MAX_NEXT_HOPS]; > - uint32_t nht[0] __rte_cache_aligned; > + uint8_t nht[0] __rte_cache_aligned; > }; > > static void * > @@ -188,7 +188,7 @@ nht_find_existing(struct rte_table_lpm *lpm, void > *entry, uint32_t *pos) > uint32_t i; > > for (i = 0; i < RTE_TABLE_LPM_MAX_NEXT_HOPS; i++) { > - uint32_t *nht_entry = &lpm->nht[i * lpm->entry_size]; > + uint8_t *nht_entry = &lpm->nht[i * lpm->entry_size]; > > if ((lpm->nht_users[i] > 0) && (memcmp(nht_entry, entry, > lpm->entry_unique_size) == 0)) { > @@ -242,7 +242,7 @@ rte_table_lpm_entry_add( > > /* Find existing or free NHT entry */ > if (nht_find_existing(lpm, entry, &nht_pos) == 0) { > - uint32_t *nht_entry; > + uint8_t *nht_entry; > > if (nht_find_free(lpm, &nht_pos) == 0) { > RTE_LOG(ERR, TABLE, "%s: NHT full\n", __func__); > -- > 1.9.1