From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 2FEDC8043 for ; Thu, 4 Dec 2014 15:27:05 +0100 (CET) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga101.fm.intel.com with ESMTP; 04 Dec 2014 06:25:33 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.97,862,1389772800"; d="scan'208";a="425047296" Received: from bricha3-mobl3.ger.corp.intel.com ([10.243.20.23]) by FMSMGA003.fm.intel.com with SMTP; 04 Dec 2014 06:15:12 -0800 Received: by (sSMTP sendmail emulation); Thu, 04 Dec 2014 14:25:30 +0025 Date: Thu, 4 Dec 2014 14:25:30 +0000 From: Bruce Richardson To: dev@dpdk.org 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 Content-Disposition: inline In-Reply-To: <1417703013-32480-1-git-send-email-bruce.richardson@intel.com> Organization: Intel Shannon Ltd. User-Agent: Mutt/1.5.23 (2014-03-12) Subject: Re: [dpdk-dev] [PATCH] table: fix table_array for incomplete bitmask X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Dec 2014 14:27:05 -0000 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 >