From 7c528c6ef502515cd7f443f69c1ee68ac48bbe7f Mon Sep 17 00:00:00 2001 From: Kishore Padmanabha Date: Tue, 16 Nov 2021 18:34:35 +0530 Subject: [PATCH] net/bnxt: fix SRAM resource free block list The SRAM resource free did not reset the next block to be used when the block is not empty. This caused the flows not be created when max flows limit is reached and you delete one flow and try to add a new flow. The fix calls the update of the next free block even when block is not empty. Fixes: 37ff91c158a3 ("net/bnxt: add SRAM manager model") Signed-off-by: Kishore Padmanabha Signed-off-by: Venkat Duvvuru Reviewed-by: Mike Baucom Reviewed-by: Randy Schacher Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/tf_core/tf_sram_mgr.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/net/bnxt/tf_core/tf_sram_mgr.c b/drivers/net/bnxt/tf_core/tf_sram_mgr.c index a248ef2ce8..acb3372486 100644 --- a/drivers/net/bnxt/tf_core/tf_sram_mgr.c +++ b/drivers/net/bnxt/tf_core/tf_sram_mgr.c @@ -794,17 +794,19 @@ tf_sram_mgr_free(void *sram_handle, TFP_DRV_LOG(ERR, "Free block_id(%d) failed error(%s)\n", block_id, strerror(-rc)); } - /* Free local entry regardless - */ + /* Free local entry regardless */ tf_sram_free_block(slice_list, block); - /* Find the next non-full block in the list - */ - tf_sram_find_first_not_full_block(slice_list, - parms->slice_size, - &slice_list->first_not_full_block); + /* Clear the not full block to set it again */ + slice_list->first_not_full_block = NULL; } + if (slice_list->first_not_full_block) + return rc; + /* set the non full block so it can be used in next alloc */ + tf_sram_find_first_not_full_block(slice_list, + parms->slice_size, + &slice_list->first_not_full_block); return rc; } -- 2.20.1