From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Monjalon Subject: Re: [PATCH] lib/librte_table: Fix table array lookup Date: Tue, 16 Dec 2014 18:59:27 +0100 Message-ID: <3098312.cgTdNF7W9b@xps13> References: <20141213010638.28002.63966.stgit@localhost.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7Bit Cc: dev-VfR2kkLFssw@public.gmane.org To: Cristian Dumitrescu Return-path: In-Reply-To: <20141213010638.28002.63966.stgit-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@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" Cristian, this patch is about packet framework. Could you review it please? 2014-12-12 17:06, Mark Wunderlich: > The existing lookup function was returning an unmodified > pkts_mask bitmask into lookup_hit_mask. This effectively > assumes that all packets would index correctly into one > of the array table entries. > > Also, there was no check that the metadata provided index > value was within range of the table max entries. By using > using table index bitmask on the metadata provided index > the resulting entry position may falsely indicate a hit > for index values provided that happen to be greter than > the number of table entries. > > Like other table type lookup functions it would seem that > the possibility exists that some of the packets provided > to the function would not result in a hit. It is assumed > that the metadata provided should be a direct index into > the array table. So, code was added to build and return > a bitmask for only those packets that correctly index > directly into the table array. > > If the original intent for this table type was to accept > any 32-bit value, then by applying the table index bitmask > as a modulo index for distribution across table entries, > then this patch would be invalid and should be rejected. > > Signed-off-by: Mark Wunderlich > --- > lib/librte_table/rte_table_array.c | 25 +++++++++++++++---------- > 1 file changed, 15 insertions(+), 10 deletions(-)