get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/96425/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 96425,
    "url": "http://patches.dpdk.org/api/patches/96425/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20210729160405.161982-1-bingz@nvidia.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20210729160405.161982-1-bingz@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210729160405.161982-1-bingz@nvidia.com",
    "date": "2021-07-29T16:04:02",
    "name": "net/mlx5: fix meter profile validation",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "3da4a192d2b5bef2c04878374a0a7e8fcdd3f15d",
    "submitter": {
        "id": 1976,
        "url": "http://patches.dpdk.org/api/people/1976/?format=api",
        "name": "Bing Zhao",
        "email": "bingz@nvidia.com"
    },
    "delegate": {
        "id": 3268,
        "url": "http://patches.dpdk.org/api/users/3268/?format=api",
        "username": "rasland",
        "first_name": "Raslan",
        "last_name": "Darawsheh",
        "email": "rasland@nvidia.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20210729160405.161982-1-bingz@nvidia.com/mbox/",
    "series": [
        {
            "id": 18070,
            "url": "http://patches.dpdk.org/api/series/18070/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=18070",
            "date": "2021-07-29T16:04:02",
            "name": "net/mlx5: fix meter profile validation",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/18070/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/96425/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/96425/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "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])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 08EDFA034F;\n\tThu, 29 Jul 2021 18:04:43 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id C58B640687;\n\tThu, 29 Jul 2021 18:04:42 +0200 (CEST)",
            "from NAM10-BN7-obe.outbound.protection.outlook.com\n (mail-bn7nam10on2059.outbound.protection.outlook.com [40.107.92.59])\n by mails.dpdk.org (Postfix) with ESMTP id 2FE474067A\n for <dev@dpdk.org>; Thu, 29 Jul 2021 18:04:42 +0200 (CEST)",
            "from BN6PR22CA0060.namprd22.prod.outlook.com (2603:10b6:404:ca::22)\n by DM6PR12MB2764.namprd12.prod.outlook.com (2603:10b6:5:4a::30) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.26; Thu, 29 Jul\n 2021 16:04:40 +0000",
            "from BN8NAM11FT022.eop-nam11.prod.protection.outlook.com\n (2603:10b6:404:ca:cafe::9a) by BN6PR22CA0060.outlook.office365.com\n (2603:10b6:404:ca::22) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.17 via Frontend\n Transport; Thu, 29 Jul 2021 16:04:40 +0000",
            "from mail.nvidia.com (216.228.112.34) by\n BN8NAM11FT022.mail.protection.outlook.com (10.13.176.112) with Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id\n 15.20.4373.18 via Frontend Transport; Thu, 29 Jul 2021 16:04:40 +0000",
            "from nvidia.com (172.20.187.5) by HQMAIL107.nvidia.com\n (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 29 Jul\n 2021 16:04:38 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=TnTdfeFG9E8Nw7w4FXscDe0armTD+/7qZ2ZTExu3xb22FNjK4r+UyUMO31RUsOxn/hy7qEaEfg7mBWpbCxOEBbjFiw00m+rKaOr2+BcooTBE4I35kFmt9ON3RIr3qkpUQPh1zxYrHxCU+bygs8qOuGL3yxAiYPkRkvcnJljHw+k9uHJULQo+F6XpcHK3Pnc0wSAdDrok9meWxRQi2EPqV4/rqwrCvvqvUBL43F2BM9ss6dPJs2ffwHtFtgsysWQeSj/I7WvZBKVq0l4KjLrBSlK0fZsore0j0uAfEAhrGeGYHJND3UxaVIDX7b4BcAtclEr9oVxElZ/c5VsqfXeBsg==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=YtmH422gfzF5MwXC1EJhIIIeUj+HKdSk0TCUURwnIPI=;\n b=kK62Gkx9VFD8AZHeEQPEXCDDPQBrD6aVp8xAcPu5I2An23xJVRSQv8tfS0kgz9juYycecXW8oqudgmIoGvJZ2CFVXnYLA2LtUSJk1PwNCJHFaRNAscOpQqzeC6WI3OleZ0BXNGnVAuaMTIiYCsbXHZRa9/aLIrBFTxK77kfb0z8tybIyleq4iBBlMnJQg4HA+q0pZb/ED/wQisZFg+99tloMjzPZ2EsXTsUe/IvFUXFIVJBDDqAIpRM+a0T8+nhcttjNY0ctnq4H19g+hsONg2Pxridsw72mtQrVe5/S7zIyQmhXnUtu7dawsnmw8LZ/UQYUocNrawjLSXSNw19JoQ==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.112.34) smtp.rcpttodomain=monjalon.net smtp.mailfrom=nvidia.com;\n dmarc=pass (p=quarantine sp=none pct=100) action=none header.from=nvidia.com;\n dkim=none (message not signed); arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=YtmH422gfzF5MwXC1EJhIIIeUj+HKdSk0TCUURwnIPI=;\n b=IQJ7oJSsZ/WKNZriOglseCnn2wAHW2uFrCpTFo9E3SUmX+JpBxSKFoUevS13VAvY64fYjSmrCxjNIq135idf+qZKoD5SkTTx8aA9mLyzO+2diMi8x8dmCIF+1r6m5SFUxyxtM0MeJnp+2W/otfPUJ/d87zGWFBsqbBTTwa2dC9yCktzl79cac64Ag8RJRZQ8yCZra7UXrRuJsj8osIoi8YGXLJ1bWTu+ujIcQ+BQk4dhd/JBVjYWCqvypwPGm60n6FVSiAJTywI1Jihf1HghheEPuNkUOxJtWTG57q7OmgAoFPWxiv2x6+zsLZMWeaafXBRy7d20URrv3lfAyd7uQw==",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.112.34)\n smtp.mailfrom=nvidia.com; monjalon.net; dkim=none (message not signed)\n header.d=none;monjalon.net; dmarc=pass action=none header.from=nvidia.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.112.34 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.112.34; helo=mail.nvidia.com;",
        "From": "Bing Zhao <bingz@nvidia.com>",
        "To": "<viacheslavo@nvidia.com>, <matan@nvidia.com>",
        "CC": "<dev@dpdk.org>, <orika@nvidia.com>, <rasland@nvidia.com>,\n <thomas@monjalon.net>",
        "Date": "Thu, 29 Jul 2021 19:04:02 +0300",
        "Message-ID": "<20210729160405.161982-1-bingz@nvidia.com>",
        "X-Mailer": "git-send-email 2.27.0",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[172.20.187.5]",
        "X-ClientProxiedBy": "HQMAIL105.nvidia.com (172.20.187.12) To\n HQMAIL107.nvidia.com (172.20.187.13)",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "e233116d-d298-4209-7720-08d952aa9280",
        "X-MS-TrafficTypeDiagnostic": "DM6PR12MB2764:",
        "X-LD-Processed": "43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr",
        "X-Microsoft-Antispam-PRVS": "\n <DM6PR12MB276448B4BC0EEC52C9E43930D0EB9@DM6PR12MB2764.namprd12.prod.outlook.com>",
        "X-MS-Oob-TLC-OOBClassifiers": "OLM:8882;",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n NSiwTbp9f2YL5rNPwXmLG/vn84aU2q12jNENvcORds3ZWQa5m9xksG95/tUNAm/FEhILFBOyJW8Z5L6+j6Cc13UiH2cCA5XUI7tSWoKl2N0RZL/P7uNsVSvhdO3gqWC33XYsWQdZWWc8g3srqMPMhpnEe/aY9kmWk4droqwlqfb9CFKDyS0CR7Egd1bnVlWkvJQI0pzuMhbYT+qjyZNJZ/tkIUKblaFvTClUfpQ6eobFzKZ6xSgBsdXSeFaJxC8EE+mkT9M59ReH66izktZkFrNmuG2yX6rbtj9YXg9Tr6alKIE45wnp5SdUNywdHCaDlaeqk3GWduGezwtiMWw7IngbcH+nCTJy6Cu4FxJbwLJJHiRfUM5DC3CZhA7oB82YM1i1ORF1xGbnj978ypHmagpMjz2oViOH/Tx5wODSxyVeK1GvaqxOqNcjweXliBJ8e/AT+FXJe4lvq8egq7Frkl1/csKd9j1L0UpR3xg2EDI4lTKwe+OCgzspuxmM1JlowA6CGf6zxZ8eIXZkI6pHWcFbvi/sFcz++B60GYhFjzhXrIUF3Uxr21RPRphS5054+NW4hH7C1qYfV7Hr/D3au6Wz4eWNI2gnpUsywf9nCBlmgnzO3X6JFVHOrp4RI/BD3fSPc/SAd843BMBq2FgZumgZ6r701wL7zSmb18PRrtH/fJOTrYQc9P/tF6XiVwlEJolz3YYAd0C8lO8SqqEM0A==",
        "X-Forefront-Antispam-Report": "CIP:216.228.112.34; CTRY:US; LANG:en; SCL:1;\n SRV:;\n IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid03.nvidia.com; CAT:NONE;\n SFS:(4636009)(39860400002)(136003)(376002)(346002)(396003)(36840700001)(46966006)(426003)(316002)(54906003)(4326008)(6286002)(36906005)(55016002)(7696005)(8676002)(2906002)(26005)(83380400001)(36756003)(186003)(6666004)(86362001)(5660300002)(16526019)(336012)(82310400003)(7636003)(47076005)(36860700001)(478600001)(1076003)(82740400003)(70206006)(110136005)(356005)(6636002)(2616005)(8936002)(70586007);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "29 Jul 2021 16:04:40.3857 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n e233116d-d298-4209-7720-08d952aa9280",
        "X-MS-Exchange-CrossTenant-Id": "43083d15-7273-40c1-b7db-39efd9ccc17a",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.34];\n Helo=[mail.nvidia.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n BN8NAM11FT022.eop-nam11.prod.protection.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM6PR12MB2764",
        "Subject": "[dpdk-dev] [PATCH] net/mlx5: fix meter profile validation",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "After the support for yellow color and RFC2698 & RFC4115 were added,\nthe profile validation adjustment was missed. With this fix, the\nvalidation is like below:\n  1. Legacy metering only supports RFC2697 without EBS.\n  2. ASO metering can support all the three profiles.\n  3. For backward compatibility, none EBS with RFC2697 profile is\n     still supported and the checking is done in the meter\n     creation stage.\n\nIn the meanwhile, some checking which was done in the parameters\ncalculation stage is moved in the validation in order to skip the\nuseless checking.\n\nFixes: 33a7493c8df8 (\"net/mlx5: support meter for trTCM profiles\")\n\nSigned-off-by: Bing Zhao <bingz@nvidia.com>\nAcked-by: Matan Azrad <matan@nvidia.com>\n---\n drivers/common/mlx5/mlx5_prm.h     |   7 +-\n drivers/net/mlx5/mlx5_flow_meter.c | 139 ++++++++++++++++++-----------\n 2 files changed, 88 insertions(+), 58 deletions(-)",
    "diff": "diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h\nindex 5b73a193ee..fdb20f5d49 100644\n--- a/drivers/common/mlx5/mlx5_prm.h\n+++ b/drivers/common/mlx5/mlx5_prm.h\n@@ -3849,10 +3849,9 @@ enum {\n \tMLX5_FLOW_COLOR_UNDEFINED,\n };\n \n-/* Maximum value of srTCM metering parameters. */\n-#define MLX5_SRTCM_CBS_MAX (0xFF * (1ULL << 0x1F))\n-#define MLX5_SRTCM_CIR_MAX (8 * (1ULL << 30) * 0xFF)\n-#define MLX5_SRTCM_EBS_MAX 0\n+/* Maximum value of srTCM & trTCM metering parameters. */\n+#define MLX5_SRTCM_XBS_MAX (0xFF * (1ULL << 0x1F))\n+#define MLX5_SRTCM_XIR_MAX (8 * (1ULL << 30) * 0xFF)\n \n /* The bits meter color use. */\n #define MLX5_MTR_COLOR_BITS 8\ndiff --git a/drivers/net/mlx5/mlx5_flow_meter.c b/drivers/net/mlx5/mlx5_flow_meter.c\nindex 2d91a6fcf0..0f51710907 100644\n--- a/drivers/net/mlx5/mlx5_flow_meter.c\n+++ b/drivers/net/mlx5/mlx5_flow_meter.c\n@@ -130,6 +130,11 @@ mlx5_flow_meter_profile_validate(struct rte_eth_dev *dev,\n {\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n \tstruct mlx5_flow_meter_profile *fmp;\n+\tuint32_t ls_factor;\n+\tint ret;\n+\tuint64_t cir, cbs;\n+\tuint64_t eir, ebs;\n+\tuint64_t pir, pbs;\n \n \t/* Profile must not be NULL. */\n \tif (profile == NULL)\n@@ -148,50 +153,83 @@ mlx5_flow_meter_profile_validate(struct rte_eth_dev *dev,\n \t\t\t\t\t  RTE_MTR_ERROR_TYPE_METER_PROFILE_ID,\n \t\t\t\t\t  NULL,\n \t\t\t\t\t  \"Meter profile already exists.\");\n-\tif (profile->alg == RTE_MTR_SRTCM_RFC2697) {\n-\t\tif (priv->config.hca_attr.qos.flow_meter_old) {\n-\t\t\t/* Verify support for flow meter parameters. */\n-\t\t\tif (priv->sh->meter_aso_en && profile->packet_mode) {\n-\t\t\t\tif (profile->srtcm_rfc2697.cir > 0 &&\n-\t\t\t\t\t(profile->srtcm_rfc2697.cir <<\n-\t\t\t\t\tMLX5_MTRS_PPS_MAP_BPS_SHIFT)\n-\t\t\t\t\t<= MLX5_SRTCM_CIR_MAX &&\n-\t\t\t\t\tprofile->srtcm_rfc2697.cbs > 0 &&\n-\t\t\t\t\t(profile->srtcm_rfc2697.cbs <<\n-\t\t\t\t\tMLX5_MTRS_PPS_MAP_BPS_SHIFT)\n-\t\t\t\t\t<= MLX5_SRTCM_CBS_MAX &&\n-\t\t\t\t\t(profile->srtcm_rfc2697.ebs <<\n-\t\t\t\t\tMLX5_MTRS_PPS_MAP_BPS_SHIFT)\n-\t\t\t\t\t<= MLX5_SRTCM_EBS_MAX)\n-\t\t\t\t\treturn 0;\n-\t\t\t\treturn -rte_mtr_error_set\n-\t\t\t\t\t     (error, ENOTSUP,\n-\t\t\t\t\t      RTE_MTR_ERROR_TYPE_MTR_PARAMS,\n-\t\t\t\t\t      NULL,\n-\t\t\t\t\t      profile->srtcm_rfc2697.ebs ?\n-\t\t\t\t\t      \"Metering value ebs must be 0.\" :\n-\t\t\t\t\t      \"Invalid metering parameters.\");\n-\t\t\t}\n-\t\t\tif (profile->srtcm_rfc2697.cir > 0 &&\n-\t\t\t\tprofile->srtcm_rfc2697.cir <=\n-\t\t\t\t\t\tMLX5_SRTCM_CIR_MAX &&\n-\t\t\t\tprofile->srtcm_rfc2697.cbs > 0 &&\n-\t\t\t\tprofile->srtcm_rfc2697.cbs <=\n-\t\t\t\t\t\tMLX5_SRTCM_CBS_MAX &&\n-\t\t\t\tprofile->srtcm_rfc2697.ebs <=\n-\t\t\t\t\t\tMLX5_SRTCM_EBS_MAX)\n-\t\t\t\treturn 0;\n+\tif (!priv->sh->meter_aso_en) {\n+\t\t/* Old version is even not supported. */\n+\t\tif (!priv->config.hca_attr.qos.flow_meter_old)\n \t\t\treturn -rte_mtr_error_set(error, ENOTSUP,\n-\t\t\t\t\tRTE_MTR_ERROR_TYPE_MTR_PARAMS,\n-\t\t\t\t\tNULL,\n-\t\t\t\t\tprofile->srtcm_rfc2697.ebs ?\n-\t\t\t\t\t\"Metering value ebs must be 0.\" :\n-\t\t\t\t\t\"Invalid metering parameters.\");\n+\t\t\t\tRTE_MTR_ERROR_TYPE_METER_PROFILE,\n+\t\t\t\tNULL, \"Metering is not supported.\");\n+\t\t/* Old FW metering only supports srTCM. */\n+\t\tif (profile->alg != RTE_MTR_SRTCM_RFC2697) {\n+\t\t\treturn -rte_mtr_error_set(error, ENOTSUP,\n+\t\t\t\tRTE_MTR_ERROR_TYPE_METER_PROFILE,\n+\t\t\t\tNULL, \"Metering algorithm is not supported.\");\n+\t\t} else if (profile->srtcm_rfc2697.ebs) {\n+\t\t\t/* EBS is not supported for old metering. */\n+\t\t\treturn -rte_mtr_error_set(error, ENOTSUP,\n+\t\t\t\tRTE_MTR_ERROR_TYPE_METER_PROFILE,\n+\t\t\t\tNULL, \"EBS is not supported.\");\n \t\t}\n+\t\tif (profile->packet_mode)\n+\t\t\treturn -rte_mtr_error_set(error, ENOTSUP,\n+\t\t\t\tRTE_MTR_ERROR_TYPE_METER_PROFILE, NULL,\n+\t\t\t\t\"Metering algorithm packet mode is not supported.\");\n \t}\n-\treturn -rte_mtr_error_set(error, ENOTSUP,\n-\t\t\t\t  RTE_MTR_ERROR_TYPE_METER_PROFILE,\n-\t\t\t\t  NULL, \"Metering algorithm not supported.\");\n+\tls_factor = profile->packet_mode ? MLX5_MTRS_PPS_MAP_BPS_SHIFT : 0;\n+\tswitch (profile->alg) {\n+\tcase RTE_MTR_SRTCM_RFC2697:\n+\t\tcir = profile->srtcm_rfc2697.cir << ls_factor;\n+\t\tcbs = profile->srtcm_rfc2697.cbs << ls_factor;\n+\t\tebs = profile->srtcm_rfc2697.ebs << ls_factor;\n+\t\t/* EBS could be zero for old metering. */\n+\t\tif (cir > 0 && cir <= MLX5_SRTCM_XIR_MAX &&\n+\t\t    cbs > 0 && cbs <= MLX5_SRTCM_XBS_MAX &&\n+\t\t    ebs <= MLX5_SRTCM_XBS_MAX) {\n+\t\t\tret = 0;\n+\t\t} else {\n+\t\t\tret = -rte_mtr_error_set(error, ENOTSUP,\n+\t\t\t\t\tRTE_MTR_ERROR_TYPE_MTR_PARAMS, NULL,\n+\t\t\t\t\t\"Profile values out of range.\");\n+\t\t}\n+\t\tbreak;\n+\tcase RTE_MTR_TRTCM_RFC2698:\n+\t\tcir = profile->trtcm_rfc2698.cir << ls_factor;\n+\t\tcbs = profile->trtcm_rfc2698.cbs << ls_factor;\n+\t\tpir = profile->trtcm_rfc2698.pir << ls_factor;\n+\t\tpbs = profile->trtcm_rfc2698.pbs << ls_factor;\n+\t\tif (cir > 0 && cir <= MLX5_SRTCM_XIR_MAX &&\n+\t\t    cbs > 0 && cbs <= MLX5_SRTCM_XBS_MAX &&\n+\t\t    pir >= cir && pir <= (MLX5_SRTCM_XIR_MAX * 2) &&\n+\t\t    pbs >= cbs && pbs <= (MLX5_SRTCM_XBS_MAX * 2)) {\n+\t\t\tret = 0;\n+\t\t} else {\n+\t\t\tret = -rte_mtr_error_set(error, ENOTSUP,\n+\t\t\t\t\tRTE_MTR_ERROR_TYPE_MTR_PARAMS, NULL,\n+\t\t\t\t\t\"Profile values out of range.\");\n+\t\t}\n+\t\tbreak;\n+\tcase RTE_MTR_TRTCM_RFC4115:\n+\t\tcir = profile->trtcm_rfc4115.cir << ls_factor;\n+\t\tcbs = profile->trtcm_rfc4115.cbs << ls_factor;\n+\t\teir = profile->trtcm_rfc4115.eir << ls_factor;\n+\t\tebs = profile->trtcm_rfc4115.ebs << ls_factor;\n+\t\tif (cir > 0 && cir <= MLX5_SRTCM_XIR_MAX &&\n+\t\t    cbs > 0 && cbs <= MLX5_SRTCM_XBS_MAX &&\n+\t\t    eir <= MLX5_SRTCM_XIR_MAX && ebs <= MLX5_SRTCM_XBS_MAX) {\n+\t\t\tret = 0;\n+\t\t} else {\n+\t\t\tret = -rte_mtr_error_set(error, ENOTSUP,\n+\t\t\t\t\tRTE_MTR_ERROR_TYPE_MTR_PARAMS, NULL,\n+\t\t\t\t\t\"Profile values out of range.\");\n+\t\t}\n+\t\tbreak;\n+\tdefault:\n+\t\tret = -rte_mtr_error_set(error, ENOTSUP,\n+\t\t\t\t\t RTE_MTR_ERROR_TYPE_MTR_PARAMS, NULL,\n+\t\t\t\t\t \"Unknown metering algorithm.\");\n+\t\tbreak;\n+\t}\n+\treturn ret;\n }\n \n /*\n@@ -270,7 +308,7 @@ mlx5_flow_meter_xbs_man_exp_calc(uint64_t xbs, uint8_t *man, uint8_t *exp)\n  */\n static int\n mlx5_flow_meter_param_fill(struct mlx5_flow_meter_profile *fmp,\n-\t\t\tstruct mlx5_priv *priv, struct rte_mtr_error *error)\n+\t\t\t   struct rte_mtr_error *error)\n {\n \tstruct mlx5_flow_meter_srtcm_rfc2697_prm *srtcm = &fmp->srtcm_prm;\n \tuint8_t man, exp;\n@@ -278,17 +316,6 @@ mlx5_flow_meter_param_fill(struct mlx5_flow_meter_profile *fmp,\n \tuint32_t eir_exp, eir_man, ebs_exp, ebs_man;\n \tuint64_t cir, cbs, eir, ebs;\n \n-\tif (!priv->sh->meter_aso_en) {\n-\t\t/* Legacy FW metering will only support srTCM. */\n-\t\tif (fmp->profile.alg != RTE_MTR_SRTCM_RFC2697)\n-\t\t\treturn -rte_mtr_error_set(error, ENOTSUP,\n-\t\t\t\tRTE_MTR_ERROR_TYPE_METER_PROFILE,\n-\t\t\t\tNULL, \"Metering algorithm is not supported.\");\n-\t\tif (fmp->profile.packet_mode)\n-\t\t\treturn -rte_mtr_error_set(error, ENOTSUP,\n-\t\t\t\tRTE_MTR_ERROR_TYPE_METER_PROFILE, NULL,\n-\t\t\t\t\"Metering algorithm packet mode is not supported.\");\n-\t}\n \tswitch (fmp->profile.alg) {\n \tcase RTE_MTR_SRTCM_RFC2697:\n \t\tcir = fmp->profile.srtcm_rfc2697.cir;\n@@ -469,7 +496,7 @@ mlx5_flow_meter_profile_add(struct rte_eth_dev *dev,\n \tfmp->id = meter_profile_id;\n \tfmp->profile = *profile;\n \t/* Fill the flow meter parameters for the PRM. */\n-\tret = mlx5_flow_meter_param_fill(fmp, priv, error);\n+\tret = mlx5_flow_meter_param_fill(fmp, error);\n \tif (ret)\n \t\tgoto error;\n \tdata.ptr = fmp;\n@@ -1210,6 +1237,10 @@ mlx5_flow_meter_create(struct rte_eth_dev *dev, uint32_t meter_id,\n \t\taso_mtr = mlx5_aso_meter_by_idx(priv, mtr_idx);\n \t\tfm = &aso_mtr->fm;\n \t} else {\n+\t\tif (fmp->y_support)\n+\t\t\treturn -rte_mtr_error_set(error, ENOMEM,\n+\t\t\t\tRTE_MTR_ERROR_TYPE_UNSPECIFIED, NULL,\n+\t\t\t\t\"Unsupported profile with yellow.\");\n \t\tlegacy_fm = mlx5_ipool_zmalloc\n \t\t\t\t(priv->sh->ipool[MLX5_IPOOL_MTR], &mtr_idx);\n \t\tif (legacy_fm == NULL)\n",
    "prefixes": []
}