git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
examples/eventdev: fix run forever with -n option
[dpdk.git]
/
lib
/
librte_table
/
rte_table_hash_key32.c
diff --git
a/lib/librte_table/rte_table_hash_key32.c
b/lib/librte_table/rte_table_hash_key32.c
index
b3ae73e
..
31fe6fd
100644
(file)
--- a/
lib/librte_table/rte_table_hash_key32.c
+++ b/
lib/librte_table/rte_table_hash_key32.c
@@
-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) ||
/* 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;
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)
{
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) {
/* Check input parameters */
if (f == NULL) {
@@
-199,7
+199,7
@@
rte_table_hash_entry_add_key32_lru(
int *key_found,
void **entry_ptr)
{
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;
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)
{
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;
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 =
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;
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) ||
/* 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;
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)
{
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) {
/* Check input parameters */
if (f == NULL) {
@@
-412,7
+412,7
@@
rte_table_hash_entry_add_key32_ext(
int *key_found,
void **entry_ptr)
{
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;
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)
{
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;
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; \
}
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; \
{ \
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]; \
\
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) \
}
#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,\
}
#define lookup2_stage0(pkt00_index, pkt01_index, mbuf00, mbuf01,\
- pkts, pkts_mask
)
\
+ pkts, pkts_mask
, f)
\
{ \
uint64_t pkt00_mask, pkt01_mask; \
{ \
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]; \
\
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]; \
\
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,\
}
#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; \
{ \
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]; \
\
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) \
\
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]; \
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) \
}
#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;
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);
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,
*/
/* Pipeline stage 0 */
lookup2_stage0(pkt00_index, pkt01_index, mbuf00, mbuf01, pkts,
- pkts_mask);
+ pkts_mask
, f
);
/* Pipeline feed */
mbuf10 = mbuf00;
/* 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,
/* 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);
/* 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,
/* 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);
/* 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;
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,
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,
*/
/* Pipeline stage 0 */
lookup2_stage0(pkt00_index, pkt01_index, mbuf00, mbuf01, pkts,
- pkts_mask);
+ pkts_mask
, f
);
/* Pipeline feed */
mbuf10 = mbuf00;
/* 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,
/* 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);
/* 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,
/* 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);
/* 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)
{
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));
if (stats != NULL)
memcpy(stats, &t->stats, sizeof(t->stats));