"Amber, Kumar" <kumar.am...@intel.com> writes: > Hi all , > > I want to report random untouched unit test cases failed by Jenkins > . pls can you guys check why it is unstable ? > Every upload shows random test failed .
I'll work on the service_autotest patch. > http://mails.dpdk.org/archives/test-report/2019-November/109120.html > > Regards > Amber > > -----Original Message----- > From: dev <dev-boun...@dpdk.org> On Behalf Of Kumar Amber > Sent: Monday, November 25, 2019 4:38 PM > To: dev@dpdk.org > Cc: Wang, Yipeng1 <yipeng1.w...@intel.com> > Subject: [dpdk-dev] [PATCH v3] hash: added a new API to hash to query key id > > Adding new API function to query the maximum key ID that could possibly > returned by rte_hash_add_key and rte_hash_add_key_with_hash. When > RTE_HASH_EXTRA_FLAGS_MULTI_WRITER_ADD > is set, the maximum key id is larger than the entry count specified by the > user. > > Signed-off-by: Kumar Amber <kumar.am...@intel.com> > --- > lib/librte_hash/rte_cuckoo_hash.c | 15 +++++++++++++++ > lib/librte_hash/rte_hash.h | 25 +++++++++++++++++++++++-- > lib/librte_hash/rte_hash_version.map | 1 + > 3 files changed, 39 insertions(+), 2 deletions(-) > > diff --git a/lib/librte_hash/rte_cuckoo_hash.c > b/lib/librte_hash/rte_cuckoo_hash.c > index 87a4c01f2..3a94f10b8 100644 > --- a/lib/librte_hash/rte_cuckoo_hash.c > +++ b/lib/librte_hash/rte_cuckoo_hash.c > @@ -506,6 +506,21 @@ rte_hash_hash(const struct rte_hash *h, const void *key) > return h->hash_func(key, h->key_len, h->hash_func_init_val); } > > +uint32_t > +rte_hash_max_key_id(const struct rte_hash *h) { > + RETURN_IF_TRUE((h == NULL), -EINVAL); > + if (h->use_local_cache) > + /* > + * Increase number of slots by total number of indices > + * that can be stored in the lcore caches > + */ > + return (h->entries + ((RTE_MAX_LCORE - 1) * > + (LCORE_CACHE_SIZE - 1))); > + else > + return h->entries; > +} > + > int32_t > rte_hash_count(const struct rte_hash *h) { diff --git > a/lib/librte_hash/rte_hash.h b/lib/librte_hash/rte_hash.h index > 0d73370dc..c87861e72 100644 > --- a/lib/librte_hash/rte_hash.h > +++ b/lib/librte_hash/rte_hash.h > @@ -164,6 +164,23 @@ rte_hash_reset(struct rte_hash *h); int32_t > rte_hash_count(const struct rte_hash *h); > > +/** > + * @warning > + * @b EXPERIMENTAL: this API may change without prior notice > + * > + * Return the maximum key value ID that could possibly be returned by > + * rte_hash_add_key function. > + * > + * @param h > + * Hash table to query from > + * @return > + * - -EINVAL if parameters are invalid > + * - A value indicating the max key Id key slots present in the table. > + */ > +__rte_experimental > +uint32_t > +rte_hash_max_key_id(const struct rte_hash *h); > + > /** > * Add a key-value pair to an existing hash table. > * This operation is not multi-thread safe @@ -234,7 +251,9 @@ > rte_hash_add_key_with_hash_data(const struct rte_hash *h, const void *key, > * - -EINVAL if the parameters are invalid. > * - -ENOSPC if there is no space in the hash for this key. > * - A positive value that can be used by the caller as an offset into an > - * array of user data. This value is unique for this key. > + * array of user data. This value is unique for this key. This > + * unique key id may be larger than the user specified entry count > + * when RTE_HASH_EXTRA_FLAGS_MULTI_WRITER_ADD flag is set. > */ > int32_t > rte_hash_add_key(const struct rte_hash *h, const void *key); @@ -256,7 > +275,9 @@ rte_hash_add_key(const struct rte_hash *h, const void *key); > * - -EINVAL if the parameters are invalid. > * - -ENOSPC if there is no space in the hash for this key. > * - A positive value that can be used by the caller as an offset into an > - * array of user data. This value is unique for this key. > + * array of user data. This value is unique for this key. This > + * unique key ID may be larger than the user specified entry count > + * when RTE_HASH_EXTRA_FLAGS_MULTI_WRITER_ADD flag is set. > */ > int32_t > rte_hash_add_key_with_hash(const struct rte_hash *h, const void *key, > hash_sig_t sig); diff --git a/lib/librte_hash/rte_hash_version.map > b/lib/librte_hash/rte_hash_version.map > index 734ae28b0..562ceb8bc 100644 > --- a/lib/librte_hash/rte_hash_version.map > +++ b/lib/librte_hash/rte_hash_version.map > @@ -58,5 +58,6 @@ EXPERIMENTAL { > global: > > rte_hash_free_key_with_position; > + rte_hash_max_key_id; > > }; > -- > 2.17.1