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>
---
drivers/common/cnxk/meson.build | 1 +
drivers/common/cnxk/roc_nix.h | 11 +++++++++++
drivers/common/cnxk/roc_nix_bpf.c | 22 ++++++++++++++++++++++
drivers/common/cnxk/roc_nix_priv.h | 1 +
drivers/common/cnxk/version.map | 1 +
5 files changed, 36 insertions(+)
create mode 100644 drivers/common/cnxk/roc_nix_bpf.c
@@ -24,6 +24,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',
@@ -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 {
@@ -464,6 +472,9 @@ int __roc_api roc_nix_tm_rsrc_count(struct roc_nix *roc_nix,
int __roc_api roc_nix_tm_node_name_get(struct roc_nix *roc_nix,
uint32_t node_id, char *buf,
size_t buflen);
+/* 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);
new file mode 100644
@@ -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;
+}
@@ -170,6 +170,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,
@@ -74,6 +74,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;