Hi David,
On 19/10/2021 09:02, David Marchand wrote:
On Fri, Oct 15, 2021 at 3:02 PM Medvedkin, Vladimir
<vladimir.medved...@intel.com> wrote:
I am confused.
Does it mean that rte_jhash_32b is not compliant with rte_hash_create API?
I think so too, because despite the fact that the ABI is the same, the
API remains different with respect to the length argument.
Sorry I don't follow you with "ABI is the same".
Can you explain please?
I meant that rte_hash accepts:
/** Type of function that can be used for calculating the hash value. */
typedef uint32_t (*rte_hash_function)(const void *key, uint32_t key_len,
uint32_t init_val);
as a hash function. And signatures of rte_jhash() and rte_jhash_32b()
are the same, but differ in the semantics of the "key_len" argument.
Internally rte_hash passes a length of the key counted in bytes to this
functions, so problems appears if configured hash function considers the
key_len as something else than the size in bytes.
I am not against the fix, but it seems to test something different
than what an application using the hash library would do.
Or if an application directly calls this hash function, maybe the unit
test should not test it via rte_hash_create (which seems to defeat the
abstraction).
I'd say that user should not use this hash function with rte_hash.
Yipeng, Sameh, Bruce,
what do you think?
--
Regards,
Vladimir