#define _ULP_FLOW_DB_H_
#include "bnxt_ulp.h"
-#include "ulp_template_db.h"
+#include "ulp_template_db_enum.h"
-#define BNXT_FLOW_DB_DEFAULT_NUM_FLOWS 128
-#define BNXT_FLOW_DB_DEFAULT_NUM_RESOURCES 5
+#define BNXT_FLOW_DB_DEFAULT_NUM_FLOWS 512
+#define BNXT_FLOW_DB_DEFAULT_NUM_RESOURCES 8
/*
* Structure for the flow database resource information
uint32_t tail_index;
/* Table to track the active flows. */
- uint64_t *active_flow_tbl;
+ uint64_t *active_reg_flows;
+ uint64_t *active_dflt_flows;
uint32_t num_flows;
uint32_t num_resources;
};
-/* Flow database supports two tables. */
-enum bnxt_ulp_flow_db_tables {
- BNXT_ULP_REGULAR_FLOW_TABLE,
- BNXT_ULP_DEFAULT_FLOW_TABLE,
- BNXT_ULP_FLOW_TABLE_MAX
-};
-
/* Structure for the flow database resource information. */
struct bnxt_ulp_flow_db {
- struct bnxt_ulp_flow_tbl flow_tbl[BNXT_ULP_FLOW_TABLE_MAX];
+ struct bnxt_ulp_flow_tbl flow_tbl;
uint16_t *func_id_tbl;
uint32_t func_id_tbl_size;
};
*
* returns 0 on success and negative on failure.
*/
-int32_t ulp_flow_db_fid_alloc(struct bnxt_ulp_context *ulp_ctxt,
- enum bnxt_ulp_flow_db_tables tbl_idx,
- uint16_t func_id,
- uint32_t *fid);
+int32_t
+ulp_flow_db_fid_alloc(struct bnxt_ulp_context *ulp_ctxt,
+ enum bnxt_ulp_fdb_type flow_type,
+ uint16_t func_id,
+ uint32_t *fid);
/*
* Allocate the flow database entry.
*
* returns 0 on success and negative on failure.
*/
-int32_t ulp_flow_db_resource_add(struct bnxt_ulp_context *ulp_ctxt,
- enum bnxt_ulp_flow_db_tables tbl_idx,
- uint32_t fid,
- struct ulp_flow_db_res_params *params);
+int32_t
+ulp_flow_db_resource_add(struct bnxt_ulp_context *ulp_ctxt,
+ enum bnxt_ulp_fdb_type flow_type,
+ uint32_t fid,
+ struct ulp_flow_db_res_params *params);
/*
* Free the flow database entry.
*
* Returns 0 on success and negative on failure.
*/
-int32_t ulp_flow_db_resource_del(struct bnxt_ulp_context *ulp_ctxt,
- enum bnxt_ulp_flow_db_tables tbl_idx,
- uint32_t fid,
- struct ulp_flow_db_res_params *params);
+int32_t
+ulp_flow_db_resource_del(struct bnxt_ulp_context *ulp_ctxt,
+ enum bnxt_ulp_fdb_type flow_type,
+ uint32_t fid,
+ struct ulp_flow_db_res_params *params);
/*
* Free the flow database entry
*
* returns 0 on success and negative on failure.
*/
-int32_t ulp_flow_db_fid_free(struct bnxt_ulp_context *ulp_ctxt,
- enum bnxt_ulp_flow_db_tables tbl_idx,
- uint32_t fid);
+int32_t
+ulp_flow_db_fid_free(struct bnxt_ulp_context *ulp_ctxt,
+ enum bnxt_ulp_fdb_type tbl_idx,
+ uint32_t fid);
/*
*Get the flow database entry details
*
* returns 0 on success and negative on failure.
*/
-int32_t ulp_flow_db_resource_get(struct bnxt_ulp_context *ulp_ctxt,
- enum bnxt_ulp_flow_db_tables tbl_idx,
- uint32_t fid,
- uint32_t *nxt_idx,
- struct ulp_flow_db_res_params *params);
+int32_t
+ulp_flow_db_resource_get(struct bnxt_ulp_context *ulp_ctxt,
+ enum bnxt_ulp_fdb_type flow_type,
+ uint32_t fid,
+ uint32_t *nxt_idx,
+ struct ulp_flow_db_res_params *params);
/*
* Flush all flows in the flow database.
*
* returns 0 on success or negative number on failure
*/
-int32_t ulp_flow_db_flush_flows(struct bnxt_ulp_context *ulp_ctx,
- uint32_t idx);
+int32_t
+ulp_flow_db_flush_flows(struct bnxt_ulp_context *ulp_ctx,
+ uint32_t idx);
/*
* Flush all flows in the flow database that belong to a device function.
* Check that flow id matches the function id or not
*
* ulp_ctxt [in] Ptr to ulp context
- * flow_db [in] Ptr to flow table
+ * flow_id [in] flow id of the flow.
* func_id [in] The func_id to be set, for reset pass zero.
*
* returns true on success or false on failure
uint32_t flow_id,
uint32_t func_id);
+/*
+ * Api to get the cfa action pointer from a flow.
+ *
+ * ulp_ctxt [in] Ptr to ulp context
+ * flow_id [in] flow id
+ * cfa_action [out] The resource handle stored in the flow database
+ *
+ * returns 0 on success
+ */
+int32_t
+ulp_default_flow_db_cfa_action_get(struct bnxt_ulp_context *ulp_ctx,
+ uint32_t flow_id,
+ uint16_t *cfa_action);
+
#endif /* _ULP_FLOW_DB_H_ */