From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bruce Richardson Subject: Re: [PATCH] table: fix table_array for incomplete bitmask Date: Thu, 4 Dec 2014 14:25:30 +0000 Message-ID: <20141204142529.GB4828@bricha3-MOBL3> References: <1417703013-32480-1-git-send-email-bruce.richardson@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii To: dev-VfR2kkLFssw@public.gmane.org Return-path: Content-Disposition: inline In-Reply-To: <1417703013-32480-1-git-send-email-bruce.richardson-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" On Thu, Dec 04, 2014 at 02:23:33PM +0000, Bruce Richardson wrote: > Hi Cristian, please review before I send out publically. Thanks. B. > ------------------------- > > 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 Self-nak on this copy, please see follow-on without the review request to Cristian (who can hopefully ack this soon :-) ) > --- > lib/librte_table/rte_table_array.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/lib/librte_table/rte_table_array.c b/lib/librte_table/rte_table_array.c > index 0b1d42a..4d3c05e 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; > } > > -- > 1.9.3 >