[dpdk-dev,v3,1/3] lpm: fix freeing unused sub-table on rule delete

Message ID 1470207736-20760-1-git-send-email-wei.dai@intel.com (mailing list archive)
State Superseded, archived
Headers

Commit Message

Wei Dai Aug. 3, 2016, 7:02 a.m. UTC
  When all rules with depth > 24 are deleted in a same sub-table
(tlb8 group) and only a rule with depth <=24 is left in it,
this sub-table (tlb8 group) should be recycled.

Fixes: dc81ebbacaeb ("lpm: extend IPv4 next hop field")
Fixes: af75078fece3 ("first public release")

Signed-off-by: Wei Dai <wei.dai@intel.com>
---
 lib/librte_lpm/rte_lpm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Comments

Wei Dai Aug. 3, 2016, 7:13 a.m. UTC | #1
This patch is same as patch 15063 which has been acked by Bruce Richardson.
Only title and message body of git log has been revised according to Bruce's
advice.

> -----Original Message-----
> From: Dai, Wei
> Sent: Wednesday, August 3, 2016 3:02 PM
> To: dev@dpdk.org
> Cc: Dai, Wei <wei.dai@intel.com>
> Subject: [PATCH v3 1/3] lpm: fix freeing unused sub-table on rule delete
> 
> When all rules with depth > 24 are deleted in a same sub-table
> (tlb8 group) and only a rule with depth <=24 is left in it, this sub-table (tlb8
> group) should be recycled.
> 
> Fixes: dc81ebbacaeb ("lpm: extend IPv4 next hop field")
> Fixes: af75078fece3 ("first public release")
> 
> Signed-off-by: Wei Dai <wei.dai@intel.com>
> ---
>  lib/librte_lpm/rte_lpm.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/librte_lpm/rte_lpm.c b/lib/librte_lpm/rte_lpm.c index
> 6f65d1c..24fec4b 100644
> --- a/lib/librte_lpm/rte_lpm.c
> +++ b/lib/librte_lpm/rte_lpm.c
> @@ -1533,7 +1533,7 @@ tbl8_recycle_check_v20(struct
> rte_lpm_tbl_entry_v20 *tbl8,
>  		 * and if so check the rest of the entries to verify that they
>  		 * are all of this depth.
>  		 */
> -		if (tbl8[tbl8_group_start].depth < MAX_DEPTH_TBL24) {
> +		if (tbl8[tbl8_group_start].depth <= MAX_DEPTH_TBL24) {
>  			for (i = (tbl8_group_start + 1); i < tbl8_group_end;
>  					i++) {
> 
> @@ -1580,7 +1580,7 @@ tbl8_recycle_check_v1604(struct rte_lpm_tbl_entry
> *tbl8,
>  		 * and if so check the rest of the entries to verify that they
>  		 * are all of this depth.
>  		 */
> -		if (tbl8[tbl8_group_start].depth < MAX_DEPTH_TBL24) {
> +		if (tbl8[tbl8_group_start].depth <= MAX_DEPTH_TBL24) {
>  			for (i = (tbl8_group_start + 1); i < tbl8_group_end;
>  					i++) {
> 
> --
> 2.5.5
  
Ferruh Yigit Aug. 3, 2016, 8:58 a.m. UTC | #2
On 8/3/2016 8:13 AM, Dai, Wei wrote:
> This patch is same as patch 15063 which has been acked by Bruce Richardson.
> Only title and message body of git log has been revised according to Bruce's
> advice.

For future, you can carry Ac with new version of the patch for these
kind of cases.
  

Patch

diff --git a/lib/librte_lpm/rte_lpm.c b/lib/librte_lpm/rte_lpm.c
index 6f65d1c..24fec4b 100644
--- a/lib/librte_lpm/rte_lpm.c
+++ b/lib/librte_lpm/rte_lpm.c
@@ -1533,7 +1533,7 @@  tbl8_recycle_check_v20(struct rte_lpm_tbl_entry_v20 *tbl8,
 		 * and if so check the rest of the entries to verify that they
 		 * are all of this depth.
 		 */
-		if (tbl8[tbl8_group_start].depth < MAX_DEPTH_TBL24) {
+		if (tbl8[tbl8_group_start].depth <= MAX_DEPTH_TBL24) {
 			for (i = (tbl8_group_start + 1); i < tbl8_group_end;
 					i++) {
 
@@ -1580,7 +1580,7 @@  tbl8_recycle_check_v1604(struct rte_lpm_tbl_entry *tbl8,
 		 * and if so check the rest of the entries to verify that they
 		 * are all of this depth.
 		 */
-		if (tbl8[tbl8_group_start].depth < MAX_DEPTH_TBL24) {
+		if (tbl8[tbl8_group_start].depth <= MAX_DEPTH_TBL24) {
 			for (i = (tbl8_group_start + 1); i < tbl8_group_end;
 					i++) {