net/bnxt: add locks in flow database
[dpdk.git] / drivers / net / bnxt / tf_ulp / ulp_mark_mgr.c
index b3527ec..8b8dccf 100644 (file)
@@ -18,6 +18,8 @@
                                                BNXT_ULP_MARK_VALID)
 #define ULP_MARK_DB_ENTRY_IS_INVALID(mark_info) (!((mark_info)->flags &\
                                                   BNXT_ULP_MARK_VALID))
+#define ULP_MARK_DB_ENTRY_SET_VFR_ID(mark_info) ((mark_info)->flags |=\
+                                                BNXT_ULP_MARK_VFR_ID)
 #define ULP_MARK_DB_ENTRY_IS_VFR_ID(mark_info) ((mark_info)->flags &\
                                                BNXT_ULP_MARK_VFR_ID)
 #define ULP_MARK_DB_ENTRY_IS_GLOBAL_HW_FID(mark_info) ((mark_info)->flags &\
@@ -118,9 +120,11 @@ gfid_not_required:
        return 0;
 
 mem_error:
-       rte_free(mark_tbl->gfid_tbl);
-       rte_free(mark_tbl->lfid_tbl);
-       rte_free(mark_tbl);
+       if (mark_tbl) {
+               rte_free(mark_tbl->gfid_tbl);
+               rte_free(mark_tbl->lfid_tbl);
+               rte_free(mark_tbl);
+       }
        BNXT_TF_DBG(DEBUG, "Failed to allocate memory for mark mgr\n");
        return -ENOMEM;
 }
@@ -190,9 +194,6 @@ ulp_mark_db_mark_get(struct bnxt_ulp_context *ctxt,
                    ULP_MARK_DB_ENTRY_IS_INVALID(&mtbl->gfid_tbl[idx]))
                        return -EINVAL;
 
-               BNXT_TF_DBG(DEBUG, "Get GFID[0x%0x] = 0x%0x\n",
-                           idx, mtbl->gfid_tbl[idx].mark_id);
-
                *vfr_flag = ULP_MARK_DB_ENTRY_IS_VFR_ID(&mtbl->gfid_tbl[idx]);
                *mark = mtbl->gfid_tbl[idx].mark_id;
        } else {
@@ -200,9 +201,6 @@ ulp_mark_db_mark_get(struct bnxt_ulp_context *ctxt,
                    ULP_MARK_DB_ENTRY_IS_INVALID(&mtbl->lfid_tbl[idx]))
                        return -EINVAL;
 
-               BNXT_TF_DBG(DEBUG, "Get LFID[0x%0x] = 0x%0x\n",
-                           idx, mtbl->lfid_tbl[idx].mark_id);
-
                *vfr_flag = ULP_MARK_DB_ENTRY_IS_VFR_ID(&mtbl->lfid_tbl[idx]);
                *mark = mtbl->lfid_tbl[idx].mark_id;
        }
@@ -263,6 +261,9 @@ ulp_mark_db_mark_add(struct bnxt_ulp_context *ctxt,
                BNXT_TF_DBG(DEBUG, "Set LFID[0x%0x] = 0x%0x\n", fid, mark);
                mtbl->lfid_tbl[fid].mark_id = mark;
                ULP_MARK_DB_ENTRY_SET_VALID(&mtbl->lfid_tbl[fid]);
+
+               if (mark_flag & BNXT_ULP_MARK_VFR_ID)
+                       ULP_MARK_DB_ENTRY_SET_VFR_ID(&mtbl->lfid_tbl[fid]);
        }
 
        return 0;