All of lore.kernel.org
 help / color / mirror / Atom feed
From: <skori@marvell.com>
To: Nithin Dabilpuram <ndabilpuram@marvell.com>,
	Kiran Kumar K <kirankumark@marvell.com>,
	Sunil Kumar Kori <skori@marvell.com>,
	Satha Rao <skoteshwar@marvell.com>, Ray Kinsella <mdr@ashroe.eu>
Cc: <dev@dpdk.org>
Subject: [dpdk-dev] [PATCH v5 02/28] common/cnxk: support RoC API to get level to index
Date: Tue, 12 Oct 2021 12:35:46 +0530	[thread overview]
Message-ID: <20211012070612.352164-3-skori@marvell.com> (raw)
In-Reply-To: <20211012070612.352164-1-skori@marvell.com>

From: Sunil Kumar Kori <skori@marvell.com>

CN10K platform supports policer up to 3 level of hierarchy.
Implement RoC API to get corresponding index for given level.

Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
---
v5:
 - Fix checkpatch errors
 - Fix patch apply errors

v4:
 - Rebase support on dpdk-next-net-mrvl branch
 - Handled meter action during flow destroy
 - Handled meter cleanup during port shutdown
 
v3:
 - Rebase support on latest DPDK
 - Handled multilevel chaining for tree hierarchy
 - Fix naming convention

v2:
 - Rebase support on latest DPDK
 - Handled multilevel chaining for linear hierarchy
 - Review comments incorporated

 drivers/common/cnxk/meson.build    |  1 +
 drivers/common/cnxk/roc_nix.h      | 12 ++++++++++++
 drivers/common/cnxk/roc_nix_bpf.c  | 22 ++++++++++++++++++++++
 drivers/common/cnxk/roc_nix_priv.h |  1 +
 drivers/common/cnxk/roc_utils.c    |  3 +++
 drivers/common/cnxk/version.map    |  1 +
 6 files changed, 40 insertions(+)
 create mode 100644 drivers/common/cnxk/roc_nix_bpf.c

diff --git a/drivers/common/cnxk/meson.build b/drivers/common/cnxk/meson.build
index 97db5f087b..32d3ad5087 100644
--- a/drivers/common/cnxk/meson.build
+++ b/drivers/common/cnxk/meson.build
@@ -25,6 +25,7 @@ sources = files(
         'roc_mbox.c',
         'roc_model.c',
         'roc_nix.c',
+        'roc_nix_bpf.c',
         'roc_nix_debug.c',
         'roc_nix_fc.c',
         'roc_nix_irq.c',
diff --git a/drivers/common/cnxk/roc_nix.h b/drivers/common/cnxk/roc_nix.h
index b06895a565..bf4fd2f208 100644
--- a/drivers/common/cnxk/roc_nix.h
+++ b/drivers/common/cnxk/roc_nix.h
@@ -6,6 +6,8 @@
 #define _ROC_NIX_H_
 
 /* Constants */
+#define ROC_NIX_BPF_LEVEL_IDX_INVALID 0xFF
+
 enum roc_nix_rss_reta_sz {
 	ROC_NIX_RSS_RETA_SZ_64 = 64,
 	ROC_NIX_RSS_RETA_SZ_128 = 128,
@@ -29,6 +31,12 @@ enum roc_nix_vlan_type {
 	ROC_NIX_VLAN_TYPE_OUTER = 0x02,
 };
 
+enum roc_nix_bpf_level_flag {
+	ROC_NIX_BPF_LEVEL_F_LEAF = BIT(0),
+	ROC_NIX_BPF_LEVEL_F_MID = BIT(1),
+	ROC_NIX_BPF_LEVEL_F_TOP = BIT(2),
+};
+
 struct roc_nix_vlan_config {
 	uint32_t type;
 	union {
@@ -508,6 +516,10 @@ int __roc_api roc_nix_tm_prepare_rate_limited_tree(struct roc_nix *roc_nix);
 bool __roc_api roc_nix_tm_is_user_hierarchy_enabled(struct roc_nix *nix);
 int __roc_api roc_nix_tm_tree_type_get(struct roc_nix *nix);
 
+/* Ingress Policer API */
+uint8_t __roc_api
+roc_nix_bpf_level_to_idx(enum roc_nix_bpf_level_flag lvl_flag);
+
 /* MAC */
 int __roc_api roc_nix_mac_rxtx_start_stop(struct roc_nix *roc_nix, bool start);
 int __roc_api roc_nix_mac_link_event_start_stop(struct roc_nix *roc_nix,
diff --git a/drivers/common/cnxk/roc_nix_bpf.c b/drivers/common/cnxk/roc_nix_bpf.c
new file mode 100644
index 0000000000..b588cc16e4
--- /dev/null
+++ b/drivers/common/cnxk/roc_nix_bpf.c
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(C) 2021 Marvell.
+ */
+
+#include "roc_api.h"
+#include "roc_priv.h"
+
+uint8_t
+roc_nix_bpf_level_to_idx(enum roc_nix_bpf_level_flag level_f)
+{
+	uint8_t idx;
+
+	if (level_f & ROC_NIX_BPF_LEVEL_F_LEAF)
+		idx = 0;
+	else if (level_f & ROC_NIX_BPF_LEVEL_F_MID)
+		idx = 1;
+	else if (level_f & ROC_NIX_BPF_LEVEL_F_TOP)
+		idx = 2;
+	else
+		idx = ROC_NIX_BPF_LEVEL_IDX_INVALID;
+	return idx;
+}
diff --git a/drivers/common/cnxk/roc_nix_priv.h b/drivers/common/cnxk/roc_nix_priv.h
index 7653c5a328..02b1be852d 100644
--- a/drivers/common/cnxk/roc_nix_priv.h
+++ b/drivers/common/cnxk/roc_nix_priv.h
@@ -187,6 +187,7 @@ enum nix_err_status {
 	NIX_ERR_INVALID_RANGE,
 	NIX_ERR_INTERNAL,
 	NIX_ERR_OP_NOTSUP,
+	NIX_ERR_HW_NOTSUP,
 	NIX_ERR_QUEUE_INVALID_RANGE,
 	NIX_ERR_AQ_READ_FAILED,
 	NIX_ERR_AQ_WRITE_FAILED,
diff --git a/drivers/common/cnxk/roc_utils.c b/drivers/common/cnxk/roc_utils.c
index 751486f503..f1b5ef3b70 100644
--- a/drivers/common/cnxk/roc_utils.c
+++ b/drivers/common/cnxk/roc_utils.c
@@ -34,6 +34,9 @@ roc_error_msg_get(int errorcode)
 	case NIX_ERR_OP_NOTSUP:
 		err_msg = "Operation not supported";
 		break;
+	case NIX_ERR_HW_NOTSUP:
+		err_msg = "Hardware does not support";
+		break;
 	case NIX_ERR_QUEUE_INVALID_RANGE:
 		err_msg = "Invalid Queue range";
 		break;
diff --git a/drivers/common/cnxk/version.map b/drivers/common/cnxk/version.map
index ccf8ec157e..c84c229938 100644
--- a/drivers/common/cnxk/version.map
+++ b/drivers/common/cnxk/version.map
@@ -82,6 +82,7 @@ INTERNAL {
 	roc_model;
 	roc_se_auth_key_set;
 	roc_se_ciph_key_set;
+	roc_nix_bpf_level_to_idx;
 	roc_nix_cq_dump;
 	roc_nix_cq_fini;
 	roc_nix_cq_init;
-- 
2.25.1


  parent reply	other threads:[~2021-10-12  7:06 UTC|newest]

Thread overview: 116+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-27  8:21 [dpdk-dev] [PATCH v2 01/27] common/cnxk: update policer MBOX APIs and HW definitions skori
2021-09-27  8:21 ` [dpdk-dev] [PATCH v2 02/27] common/cnxk: support RoC API to get level to index skori
2021-09-27  8:21 ` [dpdk-dev] [PATCH v2 03/27] common/cnxk: support RoC API to get profile count skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 04/27] common/cnxk: support RoC API to alloc bandwidth profiles skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 05/27] common/cnxk: support RoC API to free " skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 06/27] common/cnxk: support RoC API to configure bandwidth profile skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 07/27] common/cnxk: support RoC API to toggle profile state skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 08/27] common/cnxk: support RoC API to dump bandwidth profile skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 09/27] common/cnxk: support RoC API to setup precolor table skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 10/27] common/cnxk: support RoC API to connect bandwidth profiles skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 11/27] common/cnxk: support RoC API to get stats to index skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 12/27] common/cnxk: support RoC API to read profile statistics skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 13/27] common/cnxk: support RoC API to reset profile stats skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 14/27] common/cnxk: support meter in action list skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 15/27] net/cnxk: support meter ops get API skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 16/27] net/cnxk: support ops to get meter capabilities skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 17/27] net/cnxk: support ops to create meter profile skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 18/27] net/cnxk: support ops to delete " skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 19/27] net/cnxk: support ops to validate meter policy skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 20/27] net/cnxk: support ops to create " skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 21/27] net/cnxk: support ops to delete " skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 22/27] net/cnxk: support ops to create meter skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 23/27] net/cnxk: support ops to delete meter skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 24/27] net/cnxk: support ops to enable/disable meter skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 25/27] net/cnxk: support ops to update precolor DSCP table skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 26/27] net/cnxk: support ops to read/update meter stats skori
2021-09-27  8:22 ` [dpdk-dev] [PATCH v2 27/27] net/cnxk: support meter action to flow create skori
2021-09-30  9:08 ` [dpdk-dev] [PATCH v3 01/27] common/cnxk: update policer MBOX APIs and HW definitions skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 02/27] common/cnxk: support RoC API to get level to index skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 03/27] common/cnxk: support RoC API to get profile count skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 04/27] common/cnxk: support RoC API to alloc bandwidth profiles skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 05/27] common/cnxk: support RoC API to free " skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 06/27] common/cnxk: support RoC API to configure bandwidth profile skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 07/27] common/cnxk: support RoC API to toggle profile state skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 08/27] common/cnxk: support RoC API to dump bandwidth profile skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 09/27] common/cnxk: support RoC API to setup precolor table skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 10/27] common/cnxk: support RoC API to connect bandwidth profiles skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 11/27] common/cnxk: support RoC API to get stats to index skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 12/27] common/cnxk: support RoC API to read profile statistics skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 13/27] common/cnxk: support RoC API to reset profile stats skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 14/27] common/cnxk: support meter in action list skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 15/27] net/cnxk: support meter ops get API skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 16/27] net/cnxk: support ops to get meter capabilities skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 17/27] net/cnxk: support ops to create meter profile skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 18/27] net/cnxk: support ops to delete " skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 19/27] net/cnxk: support ops to validate meter policy skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 20/27] net/cnxk: support ops to create " skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 21/27] net/cnxk: support ops to delete " skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 22/27] net/cnxk: support ops to create meter skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 23/27] net/cnxk: support ops to delete meter skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 24/27] net/cnxk: support ops to enable/disable meter skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 25/27] net/cnxk: support ops to update precolor DSCP table skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 26/27] net/cnxk: support ops to read/update meter stats skori
2021-09-30  9:08   ` [dpdk-dev] [PATCH v3 27/27] net/cnxk: support meter action to flow create skori
2021-09-30 10:00   ` [dpdk-dev] [PATCH v3 01/27] common/cnxk: update policer MBOX APIs and HW definitions Kinsella, Ray
2021-10-02 13:56     ` Jerin Jacob
2021-10-11 15:50   ` [dpdk-dev] [PATCH v4 00/28] Support ingress policer skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 01/28] common/cnxk: update policer MBOX APIs and HW definitions skori
2021-10-12  7:05       ` [dpdk-dev] [PATCH v5 00/28] Support ingress policer skori
2021-10-12  7:05         ` [dpdk-dev] [PATCH v5 01/28] common/cnxk: update policer MBOX APIs and HW definitions skori
2021-10-12  7:05         ` skori [this message]
2021-10-12  7:05         ` [dpdk-dev] [PATCH v5 03/28] common/cnxk: support RoC API to get profile count skori
2021-10-12  7:05         ` [dpdk-dev] [PATCH v5 04/28] common/cnxk: support RoC API to alloc bandwidth profiles skori
2021-10-12  7:05         ` [dpdk-dev] [PATCH v5 05/28] common/cnxk: support RoC API to free " skori
2021-10-12  7:05         ` [dpdk-dev] [PATCH v5 06/28] common/cnxk: support RoC API to configure bandwidth profile skori
2021-10-12  7:05         ` [dpdk-dev] [PATCH v5 07/28] common/cnxk: support RoC API to toggle profile state skori
2021-10-12  7:05         ` [dpdk-dev] [PATCH v5 08/28] common/cnxk: support RoC API to dump bandwidth profile skori
2021-10-12  7:05         ` [dpdk-dev] [PATCH v5 09/28] common/cnxk: support RoC API to setup precolor table skori
2021-10-12  7:05         ` [dpdk-dev] [PATCH v5 10/28] common/cnxk: support RoC API to connect bandwidth profiles skori
2021-10-12  7:05         ` [dpdk-dev] [PATCH v5 11/28] common/cnxk: support RoC API to get stats to index skori
2021-10-12  7:05         ` [dpdk-dev] [PATCH v5 12/28] common/cnxk: support RoC API to read profile statistics skori
2021-10-12  7:05         ` [dpdk-dev] [PATCH v5 13/28] common/cnxk: support RoC API to reset profile stats skori
2021-10-12  7:05         ` [dpdk-dev] [PATCH v5 14/28] common/cnxk: support meter in action list skori
2021-10-12  7:05         ` [dpdk-dev] [PATCH v5 15/28] net/cnxk: support meter ops get API skori
2021-10-12  7:06         ` [dpdk-dev] [PATCH v5 16/28] net/cnxk: support ops to get meter capabilities skori
2021-10-12  7:06         ` [dpdk-dev] [PATCH v5 17/28] net/cnxk: support ops to create meter profile skori
2021-10-12  7:06         ` [dpdk-dev] [PATCH v5 18/28] net/cnxk: support ops to delete " skori
2021-10-12  7:06         ` [dpdk-dev] [PATCH v5 19/28] net/cnxk: support ops to validate meter policy skori
2021-10-12  7:06         ` [dpdk-dev] [PATCH v5 20/28] net/cnxk: support ops to create " skori
2021-10-12  7:06         ` [dpdk-dev] [PATCH v5 21/28] net/cnxk: support ops to delete " skori
2021-10-12  7:06         ` [dpdk-dev] [PATCH v5 22/28] net/cnxk: support ops to create meter skori
2021-10-12  7:06         ` [dpdk-dev] [PATCH v5 23/28] net/cnxk: support ops to delete meter skori
2021-10-12  7:06         ` [dpdk-dev] [PATCH v5 24/28] net/cnxk: support ops to enable/disable meter skori
2021-10-12  7:06         ` [dpdk-dev] [PATCH v5 25/28] net/cnxk: support ops to update precolor DSCP table skori
2021-10-12  7:06         ` [dpdk-dev] [PATCH v5 26/28] net/cnxk: support ops to read/update meter stats skori
2021-10-12  7:06         ` [dpdk-dev] [PATCH v5 27/28] net/cnxk: support meter action to flow create skori
2021-10-12  7:06         ` [dpdk-dev] [PATCH v5 28/28] net/cnxk: support meter action to flow destroy skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 02/28] common/cnxk: support RoC API to get level to index skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 03/28] common/cnxk: support RoC API to get profile count skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 04/28] common/cnxk: support RoC API to alloc bandwidth profiles skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 05/28] common/cnxk: support RoC API to free " skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 06/28] common/cnxk: support RoC API to configure bandwidth profile skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 07/28] common/cnxk: support RoC API to toggle profile state skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 08/28] common/cnxk: support RoC API to dump bandwidth profile skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 09/28] common/cnxk: support RoC API to setup precolor table skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 10/28] common/cnxk: support RoC API to connect bandwidth profiles skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 11/28] common/cnxk: support RoC API to get stats to index skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 12/28] common/cnxk: support RoC API to read profile statistics skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 13/28] common/cnxk: support RoC API to reset profile stats skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 14/28] common/cnxk: support meter in action list skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 15/28] net/cnxk: support meter ops get API skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 16/28] net/cnxk: support ops to get meter capabilities skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 17/28] net/cnxk: support ops to create meter profile skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 18/28] net/cnxk: support ops to delete " skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 19/28] net/cnxk: support ops to validate meter policy skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 20/28] net/cnxk: support ops to create " skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 21/28] net/cnxk: support ops to delete " skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 22/28] net/cnxk: support ops to create meter skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 23/28] net/cnxk: support ops to delete meter skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 24/28] net/cnxk: support ops to enable/disable meter skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 25/28] net/cnxk: support ops to update precolor DSCP table skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 26/28] net/cnxk: support ops to read/update meter stats skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 27/28] net/cnxk: support meter action to flow create skori
2021-10-11 15:50     ` [dpdk-dev] [PATCH v4 28/28] net/cnxk: support meter action to flow destroy skori
2021-10-19 14:30     ` [dpdk-dev] [PATCH v4 00/28] Support ingress policer Jerin Jacob
2021-10-20 13:28       ` Ferruh Yigit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211012070612.352164-3-skori@marvell.com \
    --to=skori@marvell.com \
    --cc=dev@dpdk.org \
    --cc=kirankumark@marvell.com \
    --cc=mdr@ashroe.eu \
    --cc=ndabilpuram@marvell.com \
    --cc=skoteshwar@marvell.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.