common/cnxk: support bandwidth profiles free

Implement RoC interface to free HW bandwidth profiles on
CN10K platform.

Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
This commit is contained in:
Sunil Kumar Kori 2021-10-12 12:35:49 +05:30 committed by Jerin Jacob
parent 7a63d75ecb
commit bf7290c65f
3 changed files with 48 additions and 0 deletions

View File

@ -533,6 +533,12 @@ int __roc_api roc_nix_bpf_alloc(struct roc_nix *roc_nix, uint8_t lvl_mask,
uint16_t per_lvl_cnt[ROC_NIX_BPF_LEVEL_MAX],
struct roc_nix_bpf_objs *profs /* Out */);
int __roc_api roc_nix_bpf_free(struct roc_nix *roc_nix,
struct roc_nix_bpf_objs *profs,
uint8_t num_prof);
int __roc_api roc_nix_bpf_free_all(struct roc_nix *roc_nix);
uint8_t __roc_api
roc_nix_bpf_level_to_idx(enum roc_nix_bpf_level_flag lvl_flag);

View File

@ -170,3 +170,43 @@ roc_nix_bpf_alloc(struct roc_nix *roc_nix, uint8_t lvl_mask,
exit:
return rc;
}
int
roc_nix_bpf_free(struct roc_nix *roc_nix, struct roc_nix_bpf_objs *profs,
uint8_t num_prof)
{
struct mbox *mbox = get_mbox(roc_nix);
struct nix_bandprof_free_req *req;
uint8_t level;
int i, j;
if (num_prof >= NIX_RX_BAND_PROF_LAYER_MAX)
return NIX_ERR_INVALID_RANGE;
req = mbox_alloc_msg_nix_bandprof_free(mbox);
if (req == NULL)
return -ENOSPC;
for (i = 0; i < num_prof; i++) {
level = sw_to_hw_lvl_map[profs[i].level];
req->prof_count[level] = profs[i].count;
for (j = 0; j < profs[i].count; j++)
req->prof_idx[level][j] = profs[i].ids[j];
}
return mbox_process(mbox);
}
int
roc_nix_bpf_free_all(struct roc_nix *roc_nix)
{
struct mbox *mbox = get_mbox(roc_nix);
struct nix_bandprof_free_req *req;
req = mbox_alloc_msg_nix_bandprof_free(mbox);
if (req == NULL)
return -ENOSPC;
req->free_all = true;
return mbox_process(mbox);
}

View File

@ -84,6 +84,8 @@ INTERNAL {
roc_se_ciph_key_set;
roc_nix_bpf_alloc;
roc_nix_bpf_count_get;
roc_nix_bpf_free;
roc_nix_bpf_free_all;
roc_nix_bpf_level_to_idx;
roc_nix_cq_dump;
roc_nix_cq_fini;