On 8/2/2018 3:01 AM, Li Han wrote: > in struct ip_frag_key,src_dst[] type is uint64_t. > but "val" which to store the calc restult ,type is uint32_t. > we may lost high 32 bit key. and function return value is int, > but it won't return < 0. > > Signed-off-by: Li Han <han....@zte.com.cn>
Fix looks good to me [1], but not sure if it worth getting risk to merge it after rc3, taking into account that original code is from 2014. [1] perhaps no need to make "i" uint64_t > --- > lib/librte_ip_frag/ip_frag_common.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/lib/librte_ip_frag/ip_frag_common.h > b/lib/librte_ip_frag/ip_frag_common.h > index 197acf8..ca69680 100644 > --- a/lib/librte_ip_frag/ip_frag_common.h > +++ b/lib/librte_ip_frag/ip_frag_common.h > @@ -69,10 +69,10 @@ struct ip_frag_pkt * ip_frag_lookup(struct > rte_ip_frag_tbl *tbl, > } > > /* compare two keys */ > -static inline int > +static inline uint64_t > ip_frag_key_cmp(const struct ip_frag_key * k1, const struct ip_frag_key * k2) > { > - uint32_t i, val; > + uint64_t i, val; > val = k1->id ^ k2->id; > for (i = 0; i < k1->key_len; i++) > val |= k1->src_dst[i] ^ k2->src_dst[i]; >