[dpdk-dev] [PATCH] fix lpm bugs

Bruce Richardson bruce.richardson at intel.com
Wed Oct 21 13:07:49 CEST 2015


On Wed, Oct 21, 2015 at 05:54:13PM +0800, mablexidana wrote:
> hi:
>     We test some lpm cases and find some bugs, below is how to fix it. thanks :)

Hi,

thanks for the patch. Could you perhaps provide a description of how to reproduce
the bug (or bugs you are fixing), so that we can reproduce them and verify the
fix. (A unit test added to the existing lpm unit tests for this would be the 
best solution.)
For the patch itself, the commit message should also describe the bug, and
how the patch fixes it. It's also good to include a one-line "Fixes:" line
in the comment - generated by using the git alias "fixline" added as:
	fixline = log -1 --abbrev=12 --format='Fixes: %h (\"%s\")'

Regards,
/Bruce

> ---
>  lib/librte_lpm/rte_lpm.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> 
> diff --git a/lib/librte_lpm/rte_lpm.c b/lib/librte_lpm/rte_lpm.c
> index 163ba3c..b5199ff 100644
> --- a/lib/librte_lpm/rte_lpm.c
> +++ b/lib/librte_lpm/rte_lpm.c
> @@ -735,7 +735,7 @@ delete_depth_small(struct rte_lpm *lpm, uint32_t ip_masked,
>                                         lpm->tbl24[i].depth <= depth ) {
>                                 lpm->tbl24[i].valid = INVALID;
>                         }
> -                       else {
> +                       else if (lpm->tbl24[i].ext_entry == 1){
>                                 /*
>                                  * If TBL24 entry is extended, then there has
>                                  * to be a rule with depth >= 25 in the
> @@ -770,6 +770,7 @@ delete_depth_small(struct rte_lpm *lpm, uint32_t ip_masked,
> 
> 
>                 struct rte_lpm_tbl8_entry new_tbl8_entry = {
>                         .valid = VALID,
> +                       .valid_group = VALID,
>                         .depth = sub_rule_depth,
>                         .next_hop = lpm->rules_tbl
>                         [sub_rule_index].next_hop,
> @@ -781,7 +782,7 @@ delete_depth_small(struct rte_lpm *lpm, uint32_t ip_masked,
>                                         lpm->tbl24[i].depth <= depth ) {
>                                 lpm->tbl24[i] = new_tbl24_entry;
>                         }
> -                       else {
> +                       else  if (lpm->tbl24[i].ext_entry == 1) {
>                                 /*
>                                  * If TBL24 entry is extended, then there has
>                                  * to be a rule with depth >= 25 in the
> --
> 1.8.5.2 (Apple Git-48)


More information about the dev mailing list