net/bnxt: check and set initial counter ID
authorSomnath Kotur <somnath.kotur@broadcom.com>
Fri, 11 Sep 2020 01:55:55 +0000 (18:55 -0700)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 18 Sep 2020 16:55:12 +0000 (18:55 +0200)
Instead of relying on value of Flow counter ID to determine validity
have an explicit boolean flag for the same to check and set.

Fixes: 306c2d28e247 ("net/bnxt: support count action in flow query")
Fixes: 9cf9c8385df7 ("net/bnxt: add ULP flow counter manager")
Cc: stable@dpdk.org
Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
drivers/net/bnxt/tf_ulp/ulp_fc_mgr.c
drivers/net/bnxt/tf_ulp/ulp_fc_mgr.h

index df1921d..5a0bf60 100644 (file)
@@ -431,8 +431,7 @@ bool ulp_fc_mgr_start_idx_isset(struct bnxt_ulp_context *ctxt, enum tf_dir dir)
 
        ulp_fc_info = bnxt_ulp_cntxt_ptr2_fc_info_get(ctxt);
 
-       /* Assuming start_idx of 0 is invalid */
-       return (ulp_fc_info->shadow_hw_tbl[dir].start_idx != 0);
+       return ulp_fc_info->shadow_hw_tbl[dir].start_idx_is_set;
 }
 
 /*
@@ -456,9 +455,10 @@ int32_t ulp_fc_mgr_start_idx_set(struct bnxt_ulp_context *ctxt, enum tf_dir dir,
        if (!ulp_fc_info)
                return -EIO;
 
-       /* Assuming that 0 is an invalid counter ID ? */
-       if (ulp_fc_info->shadow_hw_tbl[dir].start_idx == 0)
+       if (!ulp_fc_info->shadow_hw_tbl[dir].start_idx_is_set) {
                ulp_fc_info->shadow_hw_tbl[dir].start_idx = start_idx;
+               ulp_fc_info->shadow_hw_tbl[dir].start_idx_is_set = true;
+       }
 
        return 0;
 }
index 9c317b0..0cb880d 100644 (file)
@@ -38,6 +38,7 @@ struct hw_fc_mem_info {
         */
        void *mem_pa;
        uint32_t start_idx;
+       bool start_idx_is_set;
 };
 
 struct bnxt_ulp_fc_info {