7e3a1670b7
Add support for the vfr flag to the mark manager. The vf representor flag is added to class table so it can be set in the template details. Also added the vfr flag process in mark database. Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com> Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com> Reviewed-by: Mike Baucom <michael.baucom@broadcom.com> Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
117 lines
2.7 KiB
C
117 lines
2.7 KiB
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright(c) 2014-2019 Broadcom
|
|
* All rights reserved.
|
|
*/
|
|
|
|
#ifndef _ULP_MARK_MGR_H_
|
|
#define _ULP_MARK_MGR_H_
|
|
|
|
#include "bnxt_ulp.h"
|
|
|
|
#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;
|
|
uint16_t flags;
|
|
};
|
|
|
|
struct bnxt_gfid_mark_info {
|
|
uint32_t mark_id;
|
|
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;
|
|
};
|
|
|
|
/*
|
|
* Allocate and Initialize all Mark Manager resources for this ulp context.
|
|
*
|
|
* Initialize MARK database for GFID & LFID tables
|
|
* GFID: Global flow id which is based on EEM hash id.
|
|
* LFID: Local flow id which is the CFA action pointer.
|
|
* GFID is used for EEM flows, LFID is used for EM flows.
|
|
*
|
|
* Flow mapper modules adds mark_id in the MARK database.
|
|
*
|
|
* BNXT PMD receive handler extracts the hardware flow id from the
|
|
* received completion record. Fetches mark_id from the MARK
|
|
* database using the flow id. Injects mark_id into the packet's mbuf.
|
|
*
|
|
* ctxt [in] The ulp context for the mark manager.
|
|
*/
|
|
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_ */
|