From 329d978e4a5217e042db006b5054ae61c54ba39e Mon Sep 17 00:00:00 2001 From: Sunil Kumar Kori Date: Tue, 12 Oct 2021 12:36:00 +0530 Subject: [PATCH] net/cnxk: support to get meter capabilities Implement ethdev operation to get meter capabilities for CNXK platform. Signed-off-by: Sunil Kumar Kori Signed-off-by: Rakesh Kudurumalla Acked-by: Jerin Jacob --- drivers/net/cnxk/cnxk_ethdev_mtr.c | 48 ++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/drivers/net/cnxk/cnxk_ethdev_mtr.c b/drivers/net/cnxk/cnxk_ethdev_mtr.c index fdb493a4b9..43dc3406af 100644 --- a/drivers/net/cnxk/cnxk_ethdev_mtr.c +++ b/drivers/net/cnxk/cnxk_ethdev_mtr.c @@ -5,7 +5,55 @@ #include "cnxk_ethdev.h" #include +#define NIX_MTR_COUNT_MAX 73 /* 64(leaf) + 8(mid) + 1(top) */ +#define NIX_MTR_COUNT_PER_FLOW 3 /* 1(leaf) + 1(mid) + 1(top) */ + +static struct rte_mtr_capabilities mtr_capa = { + .n_max = NIX_MTR_COUNT_MAX, + .n_shared_max = NIX_MTR_COUNT_PER_FLOW, + /* .identical = , */ + .shared_identical = true, + /* .shared_n_flows_per_mtr_max = ,*/ + .chaining_n_mtrs_per_flow_max = NIX_MTR_COUNT_PER_FLOW, + .chaining_use_prev_mtr_color_supported = true, + .chaining_use_prev_mtr_color_enforced = true, + .meter_srtcm_rfc2697_n_max = NIX_MTR_COUNT_MAX, + .meter_trtcm_rfc2698_n_max = NIX_MTR_COUNT_MAX, + .meter_trtcm_rfc4115_n_max = NIX_MTR_COUNT_MAX, + .meter_rate_max = NIX_BPF_RATE_MAX / 8, /* Bytes per second */ + .meter_policy_n_max = NIX_MTR_COUNT_MAX, + .color_aware_srtcm_rfc2697_supported = true, + .color_aware_trtcm_rfc2698_supported = true, + .color_aware_trtcm_rfc4115_supported = true, + .srtcm_rfc2697_byte_mode_supported = true, + .srtcm_rfc2697_packet_mode_supported = true, + .trtcm_rfc2698_byte_mode_supported = true, + .trtcm_rfc2698_packet_mode_supported = true, + .trtcm_rfc4115_byte_mode_supported = true, + .trtcm_rfc4115_packet_mode_supported = true, + .stats_mask = RTE_MTR_STATS_N_PKTS_GREEN | RTE_MTR_STATS_N_PKTS_YELLOW | + RTE_MTR_STATS_N_PKTS_RED | RTE_MTR_STATS_N_PKTS_DROPPED | + RTE_MTR_STATS_N_BYTES_GREEN | + RTE_MTR_STATS_N_BYTES_YELLOW | RTE_MTR_STATS_N_BYTES_RED | + RTE_MTR_STATS_N_BYTES_DROPPED}; + +static int +cnxk_nix_mtr_capabilities_get(struct rte_eth_dev *dev, + struct rte_mtr_capabilities *capa, + struct rte_mtr_error *error) +{ + RTE_SET_USED(dev); + + if (!capa) + return -rte_mtr_error_set(error, EINVAL, + RTE_MTR_ERROR_TYPE_MTR_PARAMS, NULL, + "NULL input parameter"); + *capa = mtr_capa; + return 0; +} + const struct rte_mtr_ops nix_mtr_ops = { + .capabilities_get = cnxk_nix_mtr_capabilities_get, }; int -- 2.20.1