[V3] table: fix bucket empty logic
Checks
Commit Message
Due to a typo, only 3 out of 4 keys in the bucket of the exact match
table were considered, which can result in valid keys being
incorrectly dropped from the table.
Fixes: d0a00966618ba ("table: add exact match SWX table")
Cc: stable@dpdk.org
Cc: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Signed-off-by: Thierry Herbelot <thierry.herbelot@6wind.com>
--
V3: reword commit log
V2: reword patch title
---
lib/table/rte_swx_table_em.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
> -----Original Message-----
> From: Thierry Herbelot <thierry.herbelot@6wind.com>
> Sent: Wednesday, July 7, 2021 12:19 PM
> To: dev@dpdk.org
> Cc: Thierry Herbelot <thierry.herbelot@6wind.com>; Thomas Monjalon
> <thomas@monjalon.net>; stable@dpdk.org; Dumitrescu, Cristian
> <cristian.dumitrescu@intel.com>
> Subject: [PATCH V3] table: fix bucket empty logic
>
> Due to a typo, only 3 out of 4 keys in the bucket of the exact match
> table were considered, which can result in valid keys being
> incorrectly dropped from the table.
>
> Fixes: d0a00966618ba ("table: add exact match SWX table")
> Cc: stable@dpdk.org
> Cc: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
>
> Signed-off-by: Thierry Herbelot <thierry.herbelot@6wind.com>
> --
> V3: reword commit log
> V2: reword patch title
> ---
> lib/table/rte_swx_table_em.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
> > Due to a typo, only 3 out of 4 keys in the bucket of the exact match
> > table were considered, which can result in valid keys being
> > incorrectly dropped from the table.
> >
> > Fixes: d0a00966618ba ("table: add exact match SWX table")
> > Cc: stable@dpdk.org
> > Cc: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
> >
> > Signed-off-by: Thierry Herbelot <thierry.herbelot@6wind.com>
>
> Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Applied, thanks
@@ -280,7 +280,7 @@ table_key_data(struct table *t, uint32_t key_id)
static inline int
bkt_is_empty(struct bucket_extension *bkt)
{
- return (!bkt->sig[0] && !bkt->sig[1] && !bkt->sig[2] && !bkt->sig[2]) ?
+ return (!bkt->sig[0] && !bkt->sig[1] && !bkt->sig[2] && !bkt->sig[3]) ?
1 : 0;
}