/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2014-2019 Broadcom
+ * Copyright(c) 2014-2021 Broadcom
* All rights reserved.
*/
#include "bnxt_ulp.h"
-#define ULP_MARK_INVALID (0)
+#define BNXT_ULP_MARK_VALID 0x1
+#define BNXT_ULP_MARK_VFR_ID 0x2
+#define BNXT_ULP_MARK_GLOBAL_HW_FID 0x4
+#define BNXT_ULP_MARK_LOCAL_HW_FID 0x8
+
struct bnxt_lfid_mark_info {
uint16_t mark_id;
- bool valid;
+ uint16_t flags;
};
struct bnxt_gfid_mark_info {
uint32_t mark_id;
- bool valid;
+ uint16_t flags;
};
struct bnxt_ulp_mark_tbl {
struct bnxt_lfid_mark_info *lfid_tbl;
struct bnxt_gfid_mark_info *gfid_tbl;
+ uint32_t lfid_num_entries;
+ uint32_t gfid_num_entries;
uint32_t gfid_mask;
uint32_t gfid_type_bit;
- uint32_t gfid_max;
};
/*
int32_t
ulp_mark_db_init(struct bnxt_ulp_context *ctxt);
+/*
+ * Release all resources in the Mark Manager for this ulp context
+ *
+ * ctxt [in] The ulp context for the mark manager
+ */
+int32_t
+ulp_mark_db_deinit(struct bnxt_ulp_context *ctxt);
+
+/*
+ * Get a Mark from the Mark Manager
+ *
+ * ctxt [in] The ulp context for the mark manager
+ *
+ * is_gfid [in] The type of fid (GFID or LFID)
+ *
+ * fid [in] The flow id that is returned by HW in BD
+ *
+ * vfr_flag [out].it indicatesif mark is vfr_id or mark id
+ *
+ * mark [out] The mark that is associated with the FID
+ *
+ */
+int32_t
+ulp_mark_db_mark_get(struct bnxt_ulp_context *ctxt,
+ bool is_gfid,
+ uint32_t fid,
+ uint32_t *vfr_flag,
+ uint32_t *mark);
+
+/*
+ * Adds a Mark to the Mark Manager
+ *
+ * ctxt [in] The ulp context for the mark manager
+ *
+ * mark_flag [in] mark flags.
+ *
+ * fid [in] The flow id that is returned by HW in BD
+ *
+ * mark [in] The mark to be associated with the FID
+ *
+ */
+int32_t
+ulp_mark_db_mark_add(struct bnxt_ulp_context *ctxt,
+ uint32_t mark_flag,
+ uint32_t gfid,
+ uint32_t mark);
+
+/*
+ * Removes a Mark from the Mark Manager
+ *
+ * ctxt [in] The ulp context for the mark manager
+ *
+ * mark_flag [in] mark flags
+ *
+ * fid [in] The flow id that is returned by HW in BD
+ *
+ */
+int32_t
+ulp_mark_db_mark_del(struct bnxt_ulp_context *ctxt,
+ uint32_t mark_flag,
+ uint32_t gfid);
+
#endif /* _ULP_MARK_MGR_H_ */