From: Gowrishankar Muthukrishnan Date: Fri, 21 Jan 2022 12:04:16 +0000 (+0530) Subject: common/cnxk: use for loop in shaper profiles cleanup X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=6a78d41e0765fe9107d61d609b1a4b9cf158acbd;p=dpdk.git common/cnxk: use for loop in shaper profiles cleanup In shaper profiles cleanup, Klockwork static analyzer tool reports infinite loop although existing loop condition is alright. False positive may be due to tqh_first not checked in loop, hence switching to FOREACH_SAFE to make Klockwork happy. Signed-off-by: Gowrishankar Muthukrishnan Signed-off-by: Shijith Thotton Acked-by: Jerin Jacob --- diff --git a/drivers/common/cnxk/roc_nix_tm.c b/drivers/common/cnxk/roc_nix_tm.c index b3d8ebd3c2..fe9e83fe1e 100644 --- a/drivers/common/cnxk/roc_nix_tm.c +++ b/drivers/common/cnxk/roc_nix_tm.c @@ -17,16 +17,16 @@ bitmap_ctzll(uint64_t slab) void nix_tm_clear_shaper_profiles(struct nix *nix) { - struct nix_tm_shaper_profile *shaper_profile; + struct nix_tm_shaper_profile *shaper_profile, *tmp; + struct nix_tm_shaper_profile_list *list; - shaper_profile = TAILQ_FIRST(&nix->shaper_profile_list); - while (shaper_profile != NULL) { + list = &nix->shaper_profile_list; + PLT_TAILQ_FOREACH_SAFE(shaper_profile, list, shaper, tmp) { if (shaper_profile->ref_cnt) plt_warn("Shaper profile %u has non zero references", shaper_profile->id); TAILQ_REMOVE(&nix->shaper_profile_list, shaper_profile, shaper); nix_tm_shaper_profile_free(shaper_profile); - shaper_profile = TAILQ_FIRST(&nix->shaper_profile_list); } } diff --git a/drivers/common/cnxk/roc_platform.h b/drivers/common/cnxk/roc_platform.h index 63be311f4d..68f29fe48e 100644 --- a/drivers/common/cnxk/roc_platform.h +++ b/drivers/common/cnxk/roc_platform.h @@ -20,6 +20,7 @@ #include #include #include +#include #include #include "roc_bits.h" @@ -55,6 +56,7 @@ #define BITMASK_ULL GENMASK_ULL #define PLT_ALIGN_CEIL RTE_ALIGN_CEIL #define PLT_INIT RTE_INIT +#define PLT_TAILQ_FOREACH_SAFE RTE_TAILQ_FOREACH_SAFE #ifndef PLT_ETHER_ADDR_LEN #define PLT_ETHER_ADDR_LEN RTE_ETHER_ADDR_LEN