summaryrefslogtreecommitdiffstats
path: root/VNFs
diff options
context:
space:
mode:
authorLuc Provoost <luc.provoost@gmail.com>2023-01-08 10:27:45 +0100
committerLuc Provoost <luc.provoost@gmail.com>2023-01-09 10:35:42 +0100
commit13389617efbcb463caeca5d6209655b76ba87abe (patch)
tree2a8ed286a23588fef3546404fa96e9de8a0e8c08 /VNFs
parent71af55a06ef268178530697c48c34bc2c765bd67 (diff)
Fix socket_id in rte_hash_parameters
The socket_id was either not initialized or set to 0. This fix sets the proper socket_id to the relevant NUMA node. When running on NUMA nodes other than 0, memory allocation for the hash table could fail. With this fix, it is supposed to work on all NUMA nodes. Signed-off-by: Luc Provoost <luc.provoost@gmail.com> Change-Id: I59887fe064a7e7c96ce2f6ce1c70791844b165b2
Diffstat (limited to 'VNFs')
-rw-r--r--VNFs/DPPD-PROX/handle_cgnat.c1
-rw-r--r--VNFs/DPPD-PROX/handle_gen.c1
-rw-r--r--VNFs/DPPD-PROX/handle_master.c1
-rw-r--r--VNFs/DPPD-PROX/handle_nat.c1
-rw-r--r--VNFs/DPPD-PROX/packet_utils.c1
-rw-r--r--VNFs/DPPD-PROX/prox_shared.c1
6 files changed, 6 insertions, 0 deletions
diff --git a/VNFs/DPPD-PROX/handle_cgnat.c b/VNFs/DPPD-PROX/handle_cgnat.c
index 03ea6dc8..9ce63b20 100644
--- a/VNFs/DPPD-PROX/handle_cgnat.c
+++ b/VNFs/DPPD-PROX/handle_cgnat.c
@@ -797,6 +797,7 @@ static int lua_to_hash_nat(struct task_args *targ, struct lua_State *L, enum lua
.key_len = sizeof(struct private_key),
.hash_func = rte_hash_crc,
.hash_func_init_val = 0,
+ .socket_id = socket,
};
plogx_info("hash table name = %s\n", hash_params.name);
struct private_key private_key;
diff --git a/VNFs/DPPD-PROX/handle_gen.c b/VNFs/DPPD-PROX/handle_gen.c
index 23112251..2c8a65c7 100644
--- a/VNFs/DPPD-PROX/handle_gen.c
+++ b/VNFs/DPPD-PROX/handle_gen.c
@@ -1906,6 +1906,7 @@ static void init_task_gen(struct task_base *tbase, struct task_args *targ)
.key_len = sizeof(union ipv4_5tuple_host),
.hash_func = rte_hash_crc,
.hash_func_init_val = 0,
+ .socket_id = task->socket_id,
};
plog_info("\t\thash table name = %s\n", hash_params.name);
task->flow_id_table = rte_hash_create(&hash_params);
diff --git a/VNFs/DPPD-PROX/handle_master.c b/VNFs/DPPD-PROX/handle_master.c
index a1c10d50..58240ba0 100644
--- a/VNFs/DPPD-PROX/handle_master.c
+++ b/VNFs/DPPD-PROX/handle_master.c
@@ -909,6 +909,7 @@ void init_ctrl_plane(struct task_base *tbase)
.entries = n_entries,
.hash_func = rte_hash_crc,
.hash_func_init_val = 0,
+ .socket_id = socket_id,
};
if (prox_cfg.flags & DSF_L3_ENABLED) {
hash_params.key_len = sizeof(uint32_t);
diff --git a/VNFs/DPPD-PROX/handle_nat.c b/VNFs/DPPD-PROX/handle_nat.c
index 93559143..ad0fcf45 100644
--- a/VNFs/DPPD-PROX/handle_nat.c
+++ b/VNFs/DPPD-PROX/handle_nat.c
@@ -123,6 +123,7 @@ static int lua_to_hash_nat(struct lua_State *L, enum lua_place from, const char
.key_len = sizeof(ip_from),
.hash_func = rte_hash_crc,
.hash_func_init_val = 0,
+ .socket_id = socket,
};
ret_hash = rte_hash_create(&hash_params);
diff --git a/VNFs/DPPD-PROX/packet_utils.c b/VNFs/DPPD-PROX/packet_utils.c
index 0189a1e0..95ce7abc 100644
--- a/VNFs/DPPD-PROX/packet_utils.c
+++ b/VNFs/DPPD-PROX/packet_utils.c
@@ -492,6 +492,7 @@ void task_init_l3(struct task_base *tbase, struct task_args *targ)
.key_len = sizeof(uint32_t),
.hash_func = rte_hash_crc,
.hash_func_init_val = 0,
+ .socket_id = socket_id,
};
if (targ->flags & TASK_ARG_L3) {
plog_info("\t\tInitializing L3 (IPv4)\n");
diff --git a/VNFs/DPPD-PROX/prox_shared.c b/VNFs/DPPD-PROX/prox_shared.c
index 52f4eb18..de26441d 100644
--- a/VNFs/DPPD-PROX/prox_shared.c
+++ b/VNFs/DPPD-PROX/prox_shared.c
@@ -55,6 +55,7 @@ static void prox_sh_create_hash(struct prox_shared *ps, size_t size)
{
param.entries = size;
param.name = get_sh_name();
+ param.socket_id = rte_socket_id();
ps->hash = rte_hash_create(&param);
PROX_PANIC(ps->hash == NULL, "Failed to create hash table for shared data");
ps->size = size;