From: Sunil Kumar Kori <skori@marvell.com>
Implement RoC API to enable or disable HW bandwidth profiles
on CN10K platform.
Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
---
drivers/common/cnxk/roc_nix.h | 4 ++++
drivers/common/cnxk/roc_nix_bpf.c | 36 +++++++++++++++++++++++++++++++
drivers/common/cnxk/version.map | 1 +
3 files changed, 41 insertions(+)
@@ -262,6 +262,7 @@ struct roc_nix_stats_queue {
struct roc_nix_rq {
/* Input parameters */
uint16_t qid;
+ uint16_t bpf_id;
uint64_t aura_handle;
bool ipsech_ena;
uint16_t first_skip;
@@ -603,6 +604,9 @@ int __roc_api roc_nix_bpf_config(struct roc_nix *roc_nix, uint16_t id,
enum roc_nix_bpf_level_flag lvl_flag,
struct roc_nix_bpf_cfg *cfg);
+int __roc_api roc_nix_bpf_ena_dis(struct roc_nix *roc_nix, uint16_t id,
+ struct roc_nix_rq *rq, bool enable);
+
uint8_t __roc_api
roc_nix_bpf_level_to_idx(enum roc_nix_bpf_level_flag lvl_flag);
@@ -433,3 +433,39 @@ roc_nix_bpf_config(struct roc_nix *roc_nix, uint16_t id,
return mbox_process(mbox);
}
+
+int
+roc_nix_bpf_ena_dis(struct roc_nix *roc_nix, uint16_t id, struct roc_nix_rq *rq,
+ bool enable)
+{
+ struct nix *nix = roc_nix_to_nix_priv(roc_nix);
+ struct mbox *mbox = get_mbox(roc_nix);
+ struct nix_cn10k_aq_enq_req *aq;
+ int rc;
+
+ if (roc_model_is_cn9k())
+ return NIX_ERR_HW_NOTSUP;
+
+ if (rq->qid >= nix->nb_rx_queues)
+ return NIX_ERR_QUEUE_INVALID_RANGE;
+
+ aq = mbox_alloc_msg_nix_cn10k_aq_enq(mbox);
+ if (aq == NULL)
+ return -ENOSPC;
+ aq->qidx = rq->qid;
+ aq->ctype = NIX_AQ_CTYPE_RQ;
+ aq->op = NIX_AQ_INSTOP_WRITE;
+
+ aq->rq.policer_ena = enable;
+ if (enable)
+ aq->rq.band_prof_id = id;
+
+ rc = mbox_process(mbox);
+ if (rc)
+ goto exit;
+
+ rq->bpf_id = id;
+
+exit:
+ return rc;
+}
@@ -77,6 +77,7 @@ INTERNAL {
roc_nix_bpf_alloc;
roc_nix_bpf_config;
roc_nix_bpf_count_get;
+ roc_nix_bpf_ena_dis;
roc_nix_bpf_free;
roc_nix_bpf_free_all;
roc_nix_bpf_level_to_idx;