examples/eventdev: fix run forever with -n option
[dpdk.git] / lib / librte_table / rte_table_hash_key32.c
index b3ae73e..31fe6fd 100644 (file)
@@ -129,7 +129,7 @@ rte_table_hash_create_key32_lru(void *params,
        /* Check input parameters */
        if ((check_params_create_lru(p) != 0) ||
                ((sizeof(struct rte_table_hash) % RTE_CACHE_LINE_SIZE) != 0) ||
-               ((sizeof(struct rte_bucket_4_32) % RTE_CACHE_LINE_SIZE) != 0)) {
+               ((sizeof(struct rte_bucket_4_32) % 64) != 0)) {
                return NULL;
        }
        n_entries_per_bucket = 4;
@@ -179,7 +179,7 @@ rte_table_hash_create_key32_lru(void *params,
 static int
 rte_table_hash_free_key32_lru(void *table)
 {
-       struct rte_table_hash *f = (struct rte_table_hash *) table;
+       struct rte_table_hash *f = table;
 
        /* Check input parameters */
        if (f == NULL) {
@@ -199,7 +199,7 @@ rte_table_hash_entry_add_key32_lru(
        int *key_found,
        void **entry_ptr)
 {
-       struct rte_table_hash *f = (struct rte_table_hash *) table;
+       struct rte_table_hash *f = table;
        struct rte_bucket_4_32 *bucket;
        uint64_t signature, pos;
        uint32_t bucket_index, i;
@@ -265,7 +265,7 @@ rte_table_hash_entry_delete_key32_lru(
        int *key_found,
        void *entry)
 {
-       struct rte_table_hash *f = (struct rte_table_hash *) table;
+       struct rte_table_hash *f = table;
        struct rte_bucket_4_32 *bucket;
        uint64_t signature;
        uint32_t bucket_index, i;
@@ -329,7 +329,7 @@ rte_table_hash_create_key32_ext(void *params,
        uint32_t entry_size)
 {
        struct rte_table_hash_key32_ext_params *p =
-                       (struct rte_table_hash_key32_ext_params *) params;
+                       params;
        struct rte_table_hash *f;
        uint32_t n_buckets, n_buckets_ext, n_entries_per_bucket;
        uint32_t key_size, bucket_size_cl, stack_size_cl, total_size, i;
@@ -337,7 +337,7 @@ rte_table_hash_create_key32_ext(void *params,
        /* Check input parameters */
        if ((check_params_create_ext(p) != 0) ||
                ((sizeof(struct rte_table_hash) % RTE_CACHE_LINE_SIZE) != 0) ||
-               ((sizeof(struct rte_bucket_4_32) % RTE_CACHE_LINE_SIZE) != 0))
+               ((sizeof(struct rte_bucket_4_32) % 64) != 0))
                return NULL;
 
        n_entries_per_bucket = 4;
@@ -392,7 +392,7 @@ rte_table_hash_create_key32_ext(void *params,
 static int
 rte_table_hash_free_key32_ext(void *table)
 {
-       struct rte_table_hash *f = (struct rte_table_hash *) table;
+       struct rte_table_hash *f = table;
 
        /* Check input parameters */
        if (f == NULL) {
@@ -412,7 +412,7 @@ rte_table_hash_entry_add_key32_ext(
        int *key_found,
        void **entry_ptr)
 {
-       struct rte_table_hash *f = (struct rte_table_hash *) table;
+       struct rte_table_hash *f = table;
        struct rte_bucket_4_32 *bucket0, *bucket, *bucket_prev;
        uint64_t signature;
        uint32_t bucket_index, i;
@@ -492,7 +492,7 @@ rte_table_hash_entry_delete_key32_ext(
        int *key_found,
        void *entry)
 {
-       struct rte_table_hash *f = (struct rte_table_hash *) table;
+       struct rte_table_hash *f = table;
        struct rte_bucket_4_32 *bucket0, *bucket, *bucket_prev;
        uint64_t signature;
        uint32_t bucket_index, i;
@@ -591,16 +591,17 @@ rte_table_hash_entry_delete_key32_ext(
                pos = 3;                                        \
 }
 
-#define lookup1_stage0(pkt0_index, mbuf0, pkts, pkts_mask)     \
+#define lookup1_stage0(pkt0_index, mbuf0, pkts, pkts_mask, f)  \
 {                                                              \
        uint64_t pkt_mask;                                      \
+       uint32_t key_offset = f->key_offset;    \
                                                                \
        pkt0_index = __builtin_ctzll(pkts_mask);                \
        pkt_mask = 1LLU << pkt0_index;                          \
        pkts_mask &= ~pkt_mask;                                 \
                                                                \
        mbuf0 = pkts[pkt0_index];                               \
-       rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf0, 0));   \
+       rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf0, key_offset));\
 }
 
 #define lookup1_stage1(mbuf1, bucket1, f)                      \
@@ -698,36 +699,38 @@ rte_table_hash_entry_delete_key32_ext(
 }
 
 #define lookup2_stage0(pkt00_index, pkt01_index, mbuf00, mbuf01,\
-       pkts, pkts_mask)                                        \
+       pkts, pkts_mask, f)                                     \
 {                                                              \
        uint64_t pkt00_mask, pkt01_mask;                        \
+       uint32_t key_offset = f->key_offset;            \
                                                                \
        pkt00_index = __builtin_ctzll(pkts_mask);               \
        pkt00_mask = 1LLU << pkt00_index;                       \
        pkts_mask &= ~pkt00_mask;                               \
                                                                \
        mbuf00 = pkts[pkt00_index];                             \
-       rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf00, 0));  \
+       rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf00, key_offset));\
                                                                \
        pkt01_index = __builtin_ctzll(pkts_mask);               \
        pkt01_mask = 1LLU << pkt01_index;                       \
        pkts_mask &= ~pkt01_mask;                               \
                                                                \
        mbuf01 = pkts[pkt01_index];                             \
-       rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf01, 0));  \
+       rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf01, key_offset));\
 }
 
 #define lookup2_stage0_with_odd_support(pkt00_index, pkt01_index,\
-       mbuf00, mbuf01, pkts, pkts_mask)                        \
+       mbuf00, mbuf01, pkts, pkts_mask, f)                     \
 {                                                              \
        uint64_t pkt00_mask, pkt01_mask;                        \
+       uint32_t key_offset = f->key_offset;            \
                                                                \
        pkt00_index = __builtin_ctzll(pkts_mask);               \
        pkt00_mask = 1LLU << pkt00_index;                       \
        pkts_mask &= ~pkt00_mask;                               \
                                                                \
        mbuf00 = pkts[pkt00_index];                             \
-       rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf00, 0));  \
+       rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf00, key_offset)); \
                                                                \
        pkt01_index = __builtin_ctzll(pkts_mask);               \
        if (pkts_mask == 0)                                     \
@@ -737,7 +740,7 @@ rte_table_hash_entry_delete_key32_ext(
        pkts_mask &= ~pkt01_mask;                               \
                                                                \
        mbuf01 = pkts[pkt01_index];                             \
-       rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf01, 0));  \
+       rte_prefetch0(RTE_MBUF_METADATA_UINT8_PTR(mbuf01, key_offset)); \
 }
 
 #define lookup2_stage1(mbuf10, mbuf11, bucket10, bucket11, f)  \
@@ -852,7 +855,7 @@ rte_table_hash_lookup_key32_lru(
                        struct rte_mbuf *mbuf;
                        uint32_t pkt_index;
 
-                       lookup1_stage0(pkt_index, mbuf, pkts, pkts_mask);
+                       lookup1_stage0(pkt_index, mbuf, pkts, pkts_mask, f);
                        lookup1_stage1(mbuf, bucket, f);
                        lookup1_stage2_lru(pkt_index, mbuf, bucket,
                                        pkts_mask_out, entries, f);
@@ -869,7 +872,7 @@ rte_table_hash_lookup_key32_lru(
         */
        /* Pipeline stage 0 */
        lookup2_stage0(pkt00_index, pkt01_index, mbuf00, mbuf01, pkts,
-               pkts_mask);
+               pkts_mask, f);
 
        /* Pipeline feed */
        mbuf10 = mbuf00;
@@ -879,7 +882,7 @@ rte_table_hash_lookup_key32_lru(
 
        /* Pipeline stage 0 */
        lookup2_stage0(pkt00_index, pkt01_index, mbuf00, mbuf01, pkts,
-               pkts_mask);
+               pkts_mask, f);
 
        /* Pipeline stage 1 */
        lookup2_stage1(mbuf10, mbuf11, bucket10, bucket11, f);
@@ -903,7 +906,7 @@ rte_table_hash_lookup_key32_lru(
 
                /* Pipeline stage 0 */
                lookup2_stage0_with_odd_support(pkt00_index, pkt01_index,
-                       mbuf00, mbuf01, pkts, pkts_mask);
+                       mbuf00, mbuf01, pkts, pkts_mask, f);
 
                /* Pipeline stage 1 */
                lookup2_stage1(mbuf10, mbuf11, bucket10, bucket11, f);
@@ -981,7 +984,7 @@ rte_table_hash_lookup_key32_ext(
                        struct rte_mbuf *mbuf;
                        uint32_t pkt_index;
 
-                       lookup1_stage0(pkt_index, mbuf, pkts, pkts_mask);
+                       lookup1_stage0(pkt_index, mbuf, pkts, pkts_mask, f);
                        lookup1_stage1(mbuf, bucket, f);
                        lookup1_stage2_ext(pkt_index, mbuf, bucket,
                                pkts_mask_out, entries, buckets_mask, buckets,
@@ -997,7 +1000,7 @@ rte_table_hash_lookup_key32_ext(
         */
        /* Pipeline stage 0 */
        lookup2_stage0(pkt00_index, pkt01_index, mbuf00, mbuf01, pkts,
-               pkts_mask);
+               pkts_mask, f);
 
        /* Pipeline feed */
        mbuf10 = mbuf00;
@@ -1007,7 +1010,7 @@ rte_table_hash_lookup_key32_ext(
 
        /* Pipeline stage 0 */
        lookup2_stage0(pkt00_index, pkt01_index, mbuf00, mbuf01, pkts,
-               pkts_mask);
+               pkts_mask, f);
 
        /* Pipeline stage 1 */
        lookup2_stage1(mbuf10, mbuf11, bucket10, bucket11, f);
@@ -1031,7 +1034,7 @@ rte_table_hash_lookup_key32_ext(
 
                /* Pipeline stage 0 */
                lookup2_stage0_with_odd_support(pkt00_index, pkt01_index,
-                       mbuf00, mbuf01, pkts, pkts_mask);
+                       mbuf00, mbuf01, pkts, pkts_mask, f);
 
                /* Pipeline stage 1 */
                lookup2_stage1(mbuf10, mbuf11, bucket10, bucket11, f);
@@ -1107,7 +1110,7 @@ grind_next_buckets:
 static int
 rte_table_hash_key32_stats_read(void *table, struct rte_table_stats *stats, int clear)
 {
-       struct rte_table_hash *t = (struct rte_table_hash *) table;
+       struct rte_table_hash *t = table;
 
        if (stats != NULL)
                memcpy(stats, &t->stats, sizeof(t->stats));