From: Bruce Richardson Date: Thu, 4 Dec 2014 14:24:12 +0000 (+0000) Subject: table: fix lookup with incomplete bitmask X-Git-Tag: spdx-start~9988 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=58507670cf1a4832eba725eba872d57b81d85491;p=dpdk.git table: fix lookup with incomplete bitmask When a lookup was done on a table_array structure with an incomplete bitmask, the results was always zero hits. This was because the pkts_mask value was cleared as we process each entry, and the result was assigned at the end of the loop, when pkts_mask was zero. Changing the assignment to occur at the start, before the pkts_mask gets cleared, fixes this issue. Signed-off-by: Bruce Richardson Acked by: Cristian Dumitrescu --- diff --git a/lib/librte_table/rte_table_array.c b/lib/librte_table/rte_table_array.c index 0b1d42a21c..4d3c05eeca 100644 --- a/lib/librte_table/rte_table_array.c +++ b/lib/librte_table/rte_table_array.c @@ -164,6 +164,8 @@ rte_table_array_lookup( { struct rte_table_array *t = (struct rte_table_array *) table; + *lookup_hit_mask = pkts_mask; + if ((pkts_mask & (pkts_mask + 1)) == 0) { uint64_t n_pkts = __builtin_popcountll(pkts_mask); uint32_t i; @@ -190,8 +192,6 @@ rte_table_array_lookup( } } - *lookup_hit_mask = pkts_mask; - return 0; }