lib: fix cache alignment of structures
[dpdk.git] / lib / librte_table / rte_table_hash_lru.c
index d1a4984..c9a8afd 100644 (file)
@@ -36,6 +36,7 @@
 
 #include <rte_common.h>
 #include <rte_mbuf.h>
+#include <rte_memory.h>
 #include <rte_malloc.h>
 #include <rte_log.h>
 
@@ -147,7 +148,7 @@ rte_table_hash_lru_create(void *params, int socket_id, uint32_t entry_size)
        struct rte_table_hash_lru_params *p =
                (struct rte_table_hash_lru_params *) params;
        struct rte_table_hash *t;
-       uint32_t total_size, table_meta_sz, table_meta_offset;
+       uint32_t total_size, table_meta_sz;
        uint32_t bucket_sz, key_sz, key_stack_sz, data_sz;
        uint32_t bucket_offset, key_offset, key_stack_offset, data_offset;
        uint32_t i;
@@ -155,21 +156,21 @@ rte_table_hash_lru_create(void *params, int socket_id, uint32_t entry_size)
        /* Check input parameters */
        if ((check_params_create(p) != 0) ||
                (!rte_is_power_of_2(entry_size)) ||
-               ((sizeof(struct rte_table_hash) % CACHE_LINE_SIZE) != 0) ||
-               (sizeof(struct bucket) != (CACHE_LINE_SIZE / 2))) {
+               ((sizeof(struct rte_table_hash) % RTE_CACHE_LINE_SIZE) != 0) ||
+               (sizeof(struct bucket) != (RTE_CACHE_LINE_SIZE / 2))) {
                return NULL;
        }
 
        /* Memory allocation */
-       table_meta_sz = CACHE_LINE_ROUNDUP(sizeof(struct rte_table_hash));
-       bucket_sz = CACHE_LINE_ROUNDUP(p->n_buckets * sizeof(struct bucket));
-       key_sz = CACHE_LINE_ROUNDUP(p->n_keys * p->key_size);
-       key_stack_sz = CACHE_LINE_ROUNDUP(p->n_keys * sizeof(uint32_t));
-       data_sz = CACHE_LINE_ROUNDUP(p->n_keys * entry_size);
+       table_meta_sz = RTE_CACHE_LINE_ROUNDUP(sizeof(struct rte_table_hash));
+       bucket_sz = RTE_CACHE_LINE_ROUNDUP(p->n_buckets * sizeof(struct bucket));
+       key_sz = RTE_CACHE_LINE_ROUNDUP(p->n_keys * p->key_size);
+       key_stack_sz = RTE_CACHE_LINE_ROUNDUP(p->n_keys * sizeof(uint32_t));
+       data_sz = RTE_CACHE_LINE_ROUNDUP(p->n_keys * entry_size);
        total_size = table_meta_sz + bucket_sz + key_sz + key_stack_sz +
                data_sz;
 
-       t = rte_zmalloc_socket("TABLE", total_size, CACHE_LINE_SIZE, socket_id);
+       t = rte_zmalloc_socket("TABLE", total_size, RTE_CACHE_LINE_SIZE, socket_id);
        if (t == NULL) {
                RTE_LOG(ERR, TABLE,
                        "%s: Cannot allocate %u bytes for hash table\n",
@@ -192,11 +193,10 @@ rte_table_hash_lru_create(void *params, int socket_id, uint32_t entry_size)
        /* Internal */
        t->bucket_mask = t->n_buckets - 1;
        t->key_size_shl = __builtin_ctzl(p->key_size);
-       t->data_size_shl = __builtin_ctzl(p->key_size);
+       t->data_size_shl = __builtin_ctzl(entry_size);
 
        /* Tables */
-       table_meta_offset = 0;
-       bucket_offset = table_meta_offset + table_meta_sz;
+       bucket_offset = 0;
        key_offset = bucket_offset + bucket_sz;
        key_stack_offset = key_offset + key_sz;
        data_offset = key_stack_offset + key_stack_sz;