Fix socket_id in rte_hash_parameters 99/73799/3
authorLuc Provoost <luc.provoost@gmail.com>
Sun, 8 Jan 2023 09:27:45 +0000 (10:27 +0100)
committerLuc Provoost <luc.provoost@gmail.com>
Mon, 9 Jan 2023 09:35:42 +0000 (10:35 +0100)
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

VNFs/DPPD-PROX/handle_cgnat.c
VNFs/DPPD-PROX/handle_gen.c
VNFs/DPPD-PROX/handle_master.c
VNFs/DPPD-PROX/handle_nat.c
VNFs/DPPD-PROX/packet_utils.c
VNFs/DPPD-PROX/prox_shared.c

index 03ea6dc..9ce63b2 100644 (file)
@@ -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;
index 2311225..2c8a65c 100644 (file)
@@ -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);
index a1c10d5..58240ba 100644 (file)
@@ -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);
index 9355914..ad0fcf4 100644 (file)
@@ -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);
index 0189a1e..95ce7ab 100644 (file)
@@ -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");
index 52f4eb1..de26441 100644 (file)
@@ -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;