Hi Yipeng,
On 17/03/2020 17:27, Wang, Yipeng1 wrote:
-----Original Message-----
From: Medvedkin, Vladimir <vladimir.medved...@intel.com>
Sent: Monday, March 9, 2020 5:44 AM
To: dev@dpdk.org
Cc: Wang, Yipeng1 <yipeng1.w...@intel.com>; Gobriel, Sameh
<sameh.gobr...@intel.com>; Richardson, Bruce
<bruce.richard...@intel.com>
Subject: [PATCH 1/2] hash: add hash bulk lookup with hash signatures array
Implement rte_hash_lookup_with_hash_bulk_data() - lookup function with
precomputed hash signatures.
Signed-off-by: Vladimir Medvedkin <vladimir.medved...@intel.com>
---
--- a/lib/librte_hash/rte_hash.h
+++ b/lib/librte_hash/rte_hash.h
@@ -528,6 +528,33 @@ rte_hash_lookup_bulk_data(const struct rte_hash
*h, const void **keys,
* Hash table to look in.
* @param keys
* A pointer to a list of keys to look for.
+ * @param sig
+ * A pointer to a list of precomputed hash values for keys.
+ * @param num_keys
+ * How many keys are in the keys list (less than
RTE_HASH_LOOKUP_BULK_MAX).
+ * @param hit_mask
+ * Output containing a bitmask with all successful lookups.
+ * @param data
+ * Output containing array of data returned from all the successful lookups.
+ * @return
+ * -EINVAL if there's an error, otherwise number of successful lookups.
+ */
+__rte_experimental
+int
+rte_hash_lookup_with_hash_bulk_data(const struct rte_hash *h,
+ const void **keys, hash_sig_t *prim_hash,
[Wang, Yipeng] hash_sig_t *sig
+ uint32_t num_keys, uint64_t *hit_mask, void *data[]);
+
+/**
+ * Find multiple keys in the hash table.
[Wang, Yipeng] ...with precomputed hash value array.
+ * This operation is multi-thread safe with regarding to other lookup threads.
+ * Read-write concurrency can be enabled by setting flag during
+ * table creation.
+ *
[Wang, Yipeng]
Hi, Vladimir, thanks for the patch!
Besides the minor comments above, my major concern is the code duplication here.
It is after all hundred's lines of code that in future if we want to extend
features, we need
to modify both function blocks.
Have you tried to just do if-else and reuse the current code block, and measure
the performance?
If that causes performance difference, then we may justify adding the
duplication, but we still
Need to optimize the software pipelining accordingly.
Agree, I'll get rid of code duplication in v2.
--
Regards,
Vladimir