From patchwork Tue Jun 21 07:35:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sunil Kumar Kori X-Patchwork-Id: 113138 X-Patchwork-Delegate: jerinj@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 77378A00C3; Tue, 21 Jun 2022 09:35:35 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BC671427F4; Tue, 21 Jun 2022 09:35:31 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id E3C9F427F0 for ; Tue, 21 Jun 2022 09:35:30 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 25L1JuPB027483 for ; Tue, 21 Jun 2022 00:35:30 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=ZZ/lEqCT/iF2vgERTlkfzP/TtGkdsCK7yM4neALhQow=; b=bZUj3geUeNtDYtOKDW2mjT7K92VBmp5RN64VWG8Ex1peNAvFMxf4gRy+tDyFUbCBi83m sSJctnGXlaWT9xWvhD0H+uUXQk1QwHmSh399kXQqhriIbOMXky7prU/a5Hf4M2fyJvWm +3r/TPfqQtKkKGANE6p2CtqV/QBm0gx8/UnL72q1ccv28vpJ913zqOlWYhXfQ9ifvV68 MTZ1zmDCg1iiEWBs4gOu8sINQzE3sa4Q37piRJO0se8scAaEQfBF1yE3N/N9LhWsSuld WeNDo2n5YlvO+MG+yX/o95BflkubXyVqS1TQT4DESFr0CxcwURMh1qGURVMJIK7sDLU4 PQ== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3gu47ps4px-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Tue, 21 Jun 2022 00:35:29 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Tue, 21 Jun 2022 00:35:28 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 21 Jun 2022 00:35:28 -0700 Received: from localhost.localdomain (unknown [10.28.34.25]) by maili.marvell.com (Postfix) with ESMTP id AD11F5E6865; Tue, 21 Jun 2022 00:35:26 -0700 (PDT) From: To: Nithin Dabilpuram , Kiran Kumar K , Sunil Kumar Kori , Satha Rao CC: Subject: [PATCH v4 2/2] net/cnxk: support ops to update precolor VLAN table Date: Tue, 21 Jun 2022 13:05:11 +0530 Message-ID: <20220621073511.878557-2-skori@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220621073511.878557-1-skori@marvell.com> References: <20220616115402.772274-2-skori@marvell.com> <20220621073511.878557-1-skori@marvell.com> MIME-Version: 1.0 X-Proofpoint-GUID: MbKnxiR78-KEG_sb36UgekTZMrRlt8im X-Proofpoint-ORIG-GUID: MbKnxiR78-KEG_sb36UgekTZMrRlt8im X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.64.514 definitions=2022-06-21_03,2022-06-17_01,2022-02-23_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Sunil Kumar Kori Implement API to update VLAN table for pre-coloring for incoming packet per nixlf for CN10K platform. Signed-off-by: Sunil Kumar Kori --- v3..v4: - Remove Depends On tag from commit log. - Rebase on top of dpdk-next-net/main. - Fix clang build failures. v2..v3: - Fix dscp table runtime update error. v1..v2: - Aligned with latest input color spec. drivers/net/cnxk/cnxk_ethdev.c | 1 + drivers/net/cnxk/cnxk_ethdev.h | 3 +- drivers/net/cnxk/cnxk_ethdev_mtr.c | 282 ++++++++++++++++++++++++++--- 3 files changed, 259 insertions(+), 27 deletions(-) diff --git a/drivers/net/cnxk/cnxk_ethdev.c b/drivers/net/cnxk/cnxk_ethdev.c index 09e57361d2..55945456c1 100644 --- a/drivers/net/cnxk/cnxk_ethdev.c +++ b/drivers/net/cnxk/cnxk_ethdev.c @@ -1679,6 +1679,7 @@ cnxk_eth_dev_init(struct rte_eth_dev *eth_dev) dev->eth_dev = eth_dev; dev->configured = 0; dev->ptype_disable = 0; + dev->proto = RTE_MTR_COLOR_IN_PROTO_OUTER_VLAN; TAILQ_INIT(&dev->inb.list); TAILQ_INIT(&dev->outb.list); diff --git a/drivers/net/cnxk/cnxk_ethdev.h b/drivers/net/cnxk/cnxk_ethdev.h index e99230285c..feb24f2839 100644 --- a/drivers/net/cnxk/cnxk_ethdev.h +++ b/drivers/net/cnxk/cnxk_ethdev.h @@ -412,7 +412,8 @@ struct cnxk_eth_dev { uint64_t clk_delta; /* Ingress policer */ - enum roc_nix_bpf_color precolor_tbl[ROC_NIX_BPF_PRE_COLOR_MAX]; + enum roc_nix_bpf_color precolor_tbl[ROC_NIX_BPF_PRECOLOR_TBL_SIZE_DSCP]; + enum rte_mtr_color_in_protocol proto; struct cnxk_mtr_profiles mtr_profiles; struct cnxk_mtr_policy mtr_policy; struct cnxk_mtr mtr; diff --git a/drivers/net/cnxk/cnxk_ethdev_mtr.c b/drivers/net/cnxk/cnxk_ethdev_mtr.c index 02803bdf75..be2cb7d628 100644 --- a/drivers/net/cnxk/cnxk_ethdev_mtr.c +++ b/drivers/net/cnxk/cnxk_ethdev_mtr.c @@ -48,7 +48,12 @@ static struct rte_mtr_capabilities mtr_capa = { 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}; + RTE_MTR_STATS_N_BYTES_DROPPED, + .input_color_proto_mask = RTE_MTR_COLOR_IN_PROTO_OUTER_VLAN | + RTE_MTR_COLOR_IN_PROTO_INNER_VLAN | + RTE_MTR_COLOR_IN_PROTO_OUTER_IP | + RTE_MTR_COLOR_IN_PROTO_INNER_IP, + .separate_input_color_table_per_port = true}; static struct cnxk_meter_node * nix_mtr_find(struct cnxk_eth_dev *dev, uint32_t meter_id) @@ -470,6 +475,7 @@ cnxk_nix_mtr_create(struct rte_eth_dev *eth_dev, uint32_t mtr_id, struct cnxk_mtr_profile_node *profile; struct cnxk_mtr_policy_node *policy; struct cnxk_mtr *fm = &dev->mtr; + enum rte_color *table = NULL; struct cnxk_meter_node *mtr; int i; @@ -521,18 +527,40 @@ cnxk_nix_mtr_create(struct rte_eth_dev *eth_dev, uint32_t mtr_id, mtr->is_next = false; mtr->level = ROC_NIX_BPF_LEVEL_IDX_INVALID; + /* populate dscp table for input coloring */ if (params->dscp_table) { - mtr->params.dscp_table = - plt_zmalloc(ROC_NIX_BPF_PRE_COLOR_MAX, ROC_ALIGN); - if (mtr->params.dscp_table == NULL) { + table = (enum rte_color *)plt_zmalloc(sizeof(enum rte_color) * + ROC_NIX_BPF_PRECOLOR_TBL_SIZE_DSCP, ROC_ALIGN); + if (table == NULL) { plt_free(mtr); return -rte_mtr_error_set(error, ENOMEM, RTE_MTR_ERROR_TYPE_UNSPECIFIED, NULL, "Memory alloc failed."); } - for (i = 0; i < ROC_NIX_BPF_PRE_COLOR_MAX; i++) - mtr->params.dscp_table[i] = params->dscp_table[i]; + for (i = 0; i < ROC_NIX_BPF_PRECOLOR_TBL_SIZE_DSCP; i++) + table[i] = params->dscp_table[i]; + + mtr->params.dscp_table = table; + } + + + /* populate vlan table for input coloring */ + if (params->vlan_table) { + table = (enum rte_color *)plt_zmalloc(sizeof(enum rte_color) * + ROC_NIX_BPF_PRECOLOR_TBL_SIZE_VLAN, ROC_ALIGN); + if (table == NULL) { + plt_free(mtr->params.dscp_table); + plt_free(mtr); + return -rte_mtr_error_set(error, ENOMEM, + RTE_MTR_ERROR_TYPE_UNSPECIFIED, + NULL, "Memory alloc failed."); + } + + for (i = 0; i < ROC_NIX_BPF_PRECOLOR_TBL_SIZE_VLAN; i++) + table[i] = params->vlan_table[i]; + + mtr->params.vlan_table = table; } profile->ref_cnt++; @@ -619,7 +647,13 @@ cnxk_nix_mtr_destroy(struct rte_eth_dev *eth_dev, uint32_t mtr_id, mtr->policy->ref_cnt--; mtr->profile->ref_cnt--; TAILQ_REMOVE(fm, mtr, next); - plt_free(mtr->params.dscp_table); + + if (mtr->params.dscp_table) + plt_free(mtr->params.dscp_table); + + if (mtr->params.vlan_table) + plt_free(mtr->params.vlan_table); + plt_free(mtr); exit: @@ -689,7 +723,7 @@ cnxk_nix_mtr_dscp_table_update(struct rte_eth_dev *eth_dev, uint32_t mtr_id, enum rte_color *dscp_table, struct rte_mtr_error *error) { - enum roc_nix_bpf_color nix_dscp_tbl[ROC_NIX_BPF_PRE_COLOR_MAX]; + enum roc_nix_bpf_color nix_dscp_tbl[ROC_NIX_BPF_PRECOLOR_TBL_SIZE_DSCP]; enum roc_nix_bpf_color color_map[] = {ROC_NIX_BPF_COLOR_GREEN, ROC_NIX_BPF_COLOR_YELLOW, ROC_NIX_BPF_COLOR_RED}; @@ -707,16 +741,30 @@ cnxk_nix_mtr_dscp_table_update(struct rte_eth_dev *eth_dev, uint32_t mtr_id, } if (!dscp_table) { - for (i = 0; i < ROC_NIX_BPF_PRE_COLOR_MAX; i++) + for (i = 0; i < ROC_NIX_BPF_PRECOLOR_TBL_SIZE_DSCP; i++) nix_dscp_tbl[i] = ROC_NIX_BPF_COLOR_GREEN; } else { - for (i = 0; i < ROC_NIX_BPF_PRE_COLOR_MAX; i++) + for (i = 0; i < ROC_NIX_BPF_PRECOLOR_TBL_SIZE_DSCP; i++) nix_dscp_tbl[i] = color_map[dscp_table[i]]; } - table.count = ROC_NIX_BPF_PRE_COLOR_MAX; - table.mode = ROC_NIX_BPF_PC_MODE_DSCP_OUTER; - for (i = 0; i < ROC_NIX_BPF_PRE_COLOR_MAX; i++) + table.count = ROC_NIX_BPF_PRECOLOR_TBL_SIZE_DSCP; + + switch (dev->proto) { + case RTE_MTR_COLOR_IN_PROTO_OUTER_IP: + table.mode = ROC_NIX_BPF_PC_MODE_DSCP_OUTER; + break; + case RTE_MTR_COLOR_IN_PROTO_INNER_IP: + table.mode = ROC_NIX_BPF_PC_MODE_DSCP_INNER; + break; + default: + rc = -rte_mtr_error_set(error, EINVAL, + RTE_MTR_ERROR_TYPE_UNSPECIFIED, NULL, + "Invalid input color protocol"); + goto exit; + } + + for (i = 0; i < ROC_NIX_BPF_PRECOLOR_TBL_SIZE_DSCP; i++) table.color[i] = nix_dscp_tbl[i]; rc = roc_nix_bpf_pre_color_tbl_setup(nix, mtr->bpf_id, @@ -727,13 +775,138 @@ cnxk_nix_mtr_dscp_table_update(struct rte_eth_dev *eth_dev, uint32_t mtr_id, goto exit; } - for (i = 0; i < ROC_NIX_BPF_PRE_COLOR_MAX; i++) + for (i = 0; i < ROC_NIX_BPF_PRECOLOR_TBL_SIZE_DSCP; i++) dev->precolor_tbl[i] = nix_dscp_tbl[i]; exit: return rc; } +static int +cnxk_nix_mtr_vlan_table_update(struct rte_eth_dev *eth_dev, uint32_t mtr_id, + enum rte_color *vlan_table, + struct rte_mtr_error *error) +{ + enum roc_nix_bpf_color nix_vlan_tbl[ROC_NIX_BPF_PRECOLOR_TBL_SIZE_VLAN]; + enum roc_nix_bpf_color color_map[] = {ROC_NIX_BPF_COLOR_GREEN, + ROC_NIX_BPF_COLOR_YELLOW, + ROC_NIX_BPF_COLOR_RED}; + struct cnxk_eth_dev *dev = cnxk_eth_pmd_priv(eth_dev); + struct roc_nix_bpf_precolor table; + struct roc_nix *nix = &dev->nix; + struct cnxk_meter_node *mtr; + int rc, i; + + mtr = nix_mtr_find(dev, mtr_id); + if (mtr == NULL) { + return -rte_mtr_error_set(error, ENOENT, + RTE_MTR_ERROR_TYPE_MTR_ID, NULL, + "Meter object not found"); + } + + if (!vlan_table) { + for (i = 0; i < ROC_NIX_BPF_PRECOLOR_TBL_SIZE_VLAN; i++) + nix_vlan_tbl[i] = ROC_NIX_BPF_COLOR_GREEN; + } else { + for (i = 0; i < ROC_NIX_BPF_PRECOLOR_TBL_SIZE_VLAN; i++) + nix_vlan_tbl[i] = color_map[vlan_table[i]]; + } + + table.count = ROC_NIX_BPF_PRECOLOR_TBL_SIZE_VLAN; + + switch (dev->proto) { + case RTE_MTR_COLOR_IN_PROTO_OUTER_VLAN: + table.mode = ROC_NIX_BPF_PC_MODE_VLAN_OUTER; + break; + case RTE_MTR_COLOR_IN_PROTO_INNER_VLAN: + table.mode = ROC_NIX_BPF_PC_MODE_VLAN_INNER; + break; + default: + rc = -rte_mtr_error_set(error, EINVAL, + RTE_MTR_ERROR_TYPE_UNSPECIFIED, NULL, + "Invalid input color protocol"); + goto exit; + } + + for (i = 0; i < ROC_NIX_BPF_PRECOLOR_TBL_SIZE_VLAN; i++) + table.color[i] = nix_vlan_tbl[i]; + + rc = roc_nix_bpf_pre_color_tbl_setup(nix, mtr->bpf_id, + lvl_map[mtr->level], &table); + if (rc) { + rte_mtr_error_set(error, rc, RTE_MTR_ERROR_TYPE_UNSPECIFIED, + NULL, NULL); + goto exit; + } + + for (i = 0; i < ROC_NIX_BPF_PRECOLOR_TBL_SIZE_VLAN; i++) + dev->precolor_tbl[i] = nix_vlan_tbl[i]; + +exit: + return rc; +} + +static int +cnxk_nix_mtr_in_proto_set(struct rte_eth_dev *eth_dev, uint32_t mtr_id, + enum rte_mtr_color_in_protocol proto, + uint32_t priority, struct rte_mtr_error *error) +{ + struct cnxk_eth_dev *dev = cnxk_eth_pmd_priv(eth_dev); + struct cnxk_meter_node *mtr; + + RTE_SET_USED(priority); + + mtr = nix_mtr_find(dev, mtr_id); + if (mtr == NULL) { + return -rte_mtr_error_set(error, ENOENT, + RTE_MTR_ERROR_TYPE_MTR_ID, NULL, + "Meter object not found"); + } + + dev->proto = proto; + return 0; +} + +static int +cnxk_nix_mtr_in_proto_get(struct rte_eth_dev *eth_dev, uint32_t mtr_id, + uint64_t *proto_mask, struct rte_mtr_error *error) +{ + struct cnxk_eth_dev *dev = cnxk_eth_pmd_priv(eth_dev); + struct cnxk_meter_node *mtr; + + mtr = nix_mtr_find(dev, mtr_id); + if (mtr == NULL) { + return -rte_mtr_error_set(error, ENOENT, + RTE_MTR_ERROR_TYPE_MTR_ID, NULL, + "Meter object not found"); + } + + *proto_mask = dev->proto; + return 0; +} + +static int +cnxk_nix_mtr_in_proto_prio_get(struct rte_eth_dev *eth_dev, uint32_t mtr_id, + enum rte_mtr_color_in_protocol proto, + uint32_t *priority, struct rte_mtr_error *error) +{ + struct cnxk_eth_dev *dev = cnxk_eth_pmd_priv(eth_dev); + struct cnxk_meter_node *mtr; + + RTE_SET_USED(proto); + + mtr = nix_mtr_find(dev, mtr_id); + if (mtr == NULL) { + return -rte_mtr_error_set(error, ENOENT, + RTE_MTR_ERROR_TYPE_MTR_ID, NULL, + "Meter object not found"); + } + + plt_info("Only single priority supported i.e. 0"); + *priority = 0; + return 0; +} + static int cnxk_nix_mtr_stats_update(struct rte_eth_dev *eth_dev, uint32_t mtr_id, uint64_t stats_mask, struct rte_mtr_error *error) @@ -870,6 +1043,10 @@ const struct rte_mtr_ops nix_mtr_ops = { .meter_enable = cnxk_nix_mtr_enable, .meter_disable = cnxk_nix_mtr_disable, .meter_dscp_table_update = cnxk_nix_mtr_dscp_table_update, + .meter_vlan_table_update = cnxk_nix_mtr_vlan_table_update, + .in_proto_set = cnxk_nix_mtr_in_proto_set, + .in_proto_get = cnxk_nix_mtr_in_proto_get, + .in_proto_prio_get = cnxk_nix_mtr_in_proto_prio_get, .stats_update = cnxk_nix_mtr_stats_update, .stats_read = cnxk_nix_mtr_stats_read, }; @@ -1041,6 +1218,9 @@ nix_mtr_level_update(struct rte_eth_dev *eth_dev, uint32_t id, uint32_t level) static void nix_mtr_config_map(struct cnxk_meter_node *mtr, struct roc_nix_bpf_cfg *cfg) { + enum roc_nix_bpf_color color_map[] = {ROC_NIX_BPF_COLOR_GREEN, + ROC_NIX_BPF_COLOR_YELLOW, + ROC_NIX_BPF_COLOR_RED}; enum roc_nix_bpf_algo alg_map[] = { ROC_NIX_BPF_ALGO_NONE, ROC_NIX_BPF_ALGO_2697, ROC_NIX_BPF_ALGO_2698, ROC_NIX_BPF_ALGO_4115}; @@ -1049,6 +1229,28 @@ nix_mtr_config_map(struct cnxk_meter_node *mtr, struct roc_nix_bpf_cfg *cfg) cfg->alg = alg_map[profile->profile.alg]; cfg->lmode = profile->profile.packet_mode; + cfg->icolor = color_map[mtr->params.default_input_color]; + + switch (RTE_MTR_COLOR_IN_PROTO_OUTER_IP) { + case RTE_MTR_COLOR_IN_PROTO_OUTER_IP: + cfg->pc_mode = ROC_NIX_BPF_PC_MODE_DSCP_OUTER; + cfg->tnl_ena = false; + break; + case RTE_MTR_COLOR_IN_PROTO_INNER_IP: + cfg->pc_mode = ROC_NIX_BPF_PC_MODE_DSCP_INNER; + cfg->tnl_ena = true; + break; + case RTE_MTR_COLOR_IN_PROTO_OUTER_VLAN: + cfg->pc_mode = ROC_NIX_BPF_PC_MODE_VLAN_OUTER; + cfg->tnl_ena = false; + break; + case RTE_MTR_COLOR_IN_PROTO_INNER_VLAN: + cfg->pc_mode = ROC_NIX_BPF_PC_MODE_VLAN_INNER; + cfg->tnl_ena = true; + break; + default: + break; + } switch (cfg->alg) { case ROC_NIX_BPF_ALGO_2697: @@ -1090,23 +1292,50 @@ nix_mtr_config_map(struct cnxk_meter_node *mtr, struct roc_nix_bpf_cfg *cfg) } static void -nix_dscp_table_map(struct cnxk_meter_node *mtr, - struct roc_nix_bpf_precolor *tbl) +nix_precolor_table_map(struct cnxk_meter_node *mtr, + struct roc_nix_bpf_precolor *tbl, + enum rte_mtr_color_in_protocol proto) { enum roc_nix_bpf_color color_map[] = {ROC_NIX_BPF_COLOR_GREEN, ROC_NIX_BPF_COLOR_YELLOW, ROC_NIX_BPF_COLOR_RED}; int i; - tbl->count = ROC_NIX_BPF_PRE_COLOR_MAX; - tbl->mode = ROC_NIX_BPF_PC_MODE_DSCP_OUTER; - - for (i = 0; i < ROC_NIX_BPF_PRE_COLOR_MAX; i++) - tbl->color[i] = ROC_NIX_BPF_COLOR_GREEN; - - if (mtr->params.dscp_table) { - for (i = 0; i < ROC_NIX_BPF_PRE_COLOR_MAX; i++) - tbl->color[i] = color_map[mtr->params.dscp_table[i]]; + switch (proto) { + case RTE_MTR_COLOR_IN_PROTO_OUTER_IP: + case RTE_MTR_COLOR_IN_PROTO_INNER_IP: + tbl->count = ROC_NIX_BPF_PRECOLOR_TBL_SIZE_DSCP; + tbl->mode = (proto == RTE_MTR_COLOR_IN_PROTO_OUTER_IP) ? + ROC_NIX_BPF_PC_MODE_DSCP_OUTER : + ROC_NIX_BPF_PC_MODE_DSCP_INNER; + + for (i = 0; i < tbl->count; i++) + tbl->color[i] = ROC_NIX_BPF_COLOR_GREEN; + + if (mtr->params.dscp_table) { + for (i = 0; i < tbl->count; i++) + tbl->color[i] = + color_map[mtr->params.dscp_table[i]]; + } + break; + case RTE_MTR_COLOR_IN_PROTO_OUTER_VLAN: + case RTE_MTR_COLOR_IN_PROTO_INNER_VLAN: + tbl->count = ROC_NIX_BPF_PRECOLOR_TBL_SIZE_VLAN; + tbl->mode = (proto == RTE_MTR_COLOR_IN_PROTO_OUTER_VLAN) ? + ROC_NIX_BPF_PC_MODE_VLAN_OUTER : + ROC_NIX_BPF_PC_MODE_VLAN_INNER; + + for (i = 0; i < tbl->count; i++) + tbl->color[i] = ROC_NIX_BPF_COLOR_GREEN; + + if (mtr->params.vlan_table) { + for (i = 0; i < tbl->count; i++) + tbl->color[i] = + color_map[mtr->params.vlan_table[i]]; + } + break; + default: + break; } } @@ -1245,7 +1474,8 @@ nix_mtr_configure(struct rte_eth_dev *eth_dev, uint32_t id) memset(&tbl, 0, sizeof(struct roc_nix_bpf_precolor)); - nix_dscp_table_map(mtr[i], &tbl); + nix_precolor_table_map(mtr[i], &tbl, + dev->proto); rc = roc_nix_bpf_pre_color_tbl_setup(nix, mtr[i]->bpf_id, lvl_map[mtr[i]->level], &tbl);