net/cnxk: support to get meter capabilities

Implement ethdev operation to get meter capabilities for
CNXK platform.

Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
Signed-off-by: Rakesh Kudurumalla <rkudurumalla@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
This commit is contained in:
Sunil Kumar Kori 2021-10-12 12:36:00 +05:30 committed by Jerin Jacob
parent a7c236b894
commit 329d978e4a

View File

@ -5,7 +5,55 @@
#include "cnxk_ethdev.h"
#include <rte_mtr_driver.h>
#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