table: fix next hop table entry type

Change type of nht field from uint32_t to uint8_t and increase max of
next hops.

nht_entry and nht should be declared as uint8_t because
entry_size is in bytes and is given as a parameter to compute
the position in nht array.

Fixes: dc81ebbacaeb ("lpm: extend IPv4 next hop field")

Signed-off-by: Michal Kobylinski <michalx.kobylinski@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
This commit is contained in:
Michal Kobylinski 2016-06-21 15:20:10 +02:00 committed by Thomas Monjalon
parent 81d084dd2a
commit 34d279906d

View File

@ -44,7 +44,9 @@
#include "rte_table_lpm.h"
#define RTE_TABLE_LPM_MAX_NEXT_HOPS 256
#ifndef RTE_TABLE_LPM_MAX_NEXT_HOPS
#define RTE_TABLE_LPM_MAX_NEXT_HOPS 65536
#endif
#ifdef RTE_TABLE_STATS_COLLECT
@ -74,7 +76,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 +190,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 +244,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__);