This patch is same as patch 15064 which has been acked by Bruce Richardson. Resending it as 2/3 of a series of patches for same rte_lpm.c .
> -----Original Message----- > From: Dai, Wei > Sent: Wednesday, August 3, 2016 3:04 PM > To: dev at dpdk.org > Cc: Dai, Wei <wei.dai at intel.com> > Subject: [PATCH v3 3/3] lpm: remove redundant check when adding lpm rule > > When a rule with depth > 24 is added into an existing rule with depth <=24, a > new tbl8 is allocated, the existing rule first fulfill whole new tbl8, so the > filed > valid of each entry in this tbl8 is always true and depth of each entry is > always > <= 24 before adding the new rule with depth > 24. > > Signed-off-by: Wei Dai <wei.dai at intel.com> > --- > lib/librte_lpm/rte_lpm.c | 22 ++++++---------------- > 1 file changed, 6 insertions(+), 16 deletions(-) > > diff --git a/lib/librte_lpm/rte_lpm.c b/lib/librte_lpm/rte_lpm.c index > 24fec4b..ec67765 100644 > --- a/lib/librte_lpm/rte_lpm.c > +++ b/lib/librte_lpm/rte_lpm.c > @@ -940,14 +940,9 @@ add_depth_big_v20(struct rte_lpm_v20 *lpm, > uint32_t ip_masked, uint8_t depth, > > /* Insert new rule into the tbl8 entry. */ > for (i = tbl8_index; i < tbl8_index + tbl8_range; i++) { > - if (!lpm->tbl8[i].valid || > - lpm->tbl8[i].depth <= depth) { > - lpm->tbl8[i].valid = VALID; > - lpm->tbl8[i].depth = depth; > - lpm->tbl8[i].next_hop = next_hop; > - > - continue; > - } > + lpm->tbl8[i].valid = VALID; > + lpm->tbl8[i].depth = depth; > + lpm->tbl8[i].next_hop = next_hop; > } > > /* > @@ -1071,14 +1066,9 @@ add_depth_big_v1604(struct rte_lpm *lpm, > uint32_t ip_masked, uint8_t depth, > > /* Insert new rule into the tbl8 entry. */ > for (i = tbl8_index; i < tbl8_index + tbl8_range; i++) { > - if (!lpm->tbl8[i].valid || > - lpm->tbl8[i].depth <= depth) { > - lpm->tbl8[i].valid = VALID; > - lpm->tbl8[i].depth = depth; > - lpm->tbl8[i].next_hop = next_hop; > - > - continue; > - } > + lpm->tbl8[i].valid = VALID; > + lpm->tbl8[i].depth = depth; > + lpm->tbl8[i].next_hop = next_hop; > } > > /* > -- > 2.5.5