get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 116411,
    "url": "https://patches.dpdk.org/api/patches/116411/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20220917060210.3332529-3-shunh@nvidia.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<20220917060210.3332529-3-shunh@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220917060210.3332529-3-shunh@nvidia.com",
    "date": "2022-09-17T06:02:09",
    "name": "[v1,2/3] net/mlx5: add meter flow limitation when matching all ports",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "65d68bad5070efc8b62adca2383dbb77fe027ac3",
    "submitter": {
        "id": 2212,
        "url": "https://patches.dpdk.org/api/people/2212/?format=api",
        "name": "Shun Hao",
        "email": "shunh@nvidia.com"
    },
    "delegate": {
        "id": 3268,
        "url": "https://patches.dpdk.org/api/users/3268/?format=api",
        "username": "rasland",
        "first_name": "Raslan",
        "last_name": "Darawsheh",
        "email": "rasland@nvidia.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20220917060210.3332529-3-shunh@nvidia.com/mbox/",
    "series": [
        {
            "id": 24702,
            "url": "https://patches.dpdk.org/api/series/24702/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=24702",
            "date": "2022-09-17T06:02:07",
            "name": "Fix meter hierarchy issue for represented port",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/24702/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/116411/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/116411/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 259E8A0032;\n\tSat, 17 Sep 2022 08:02:47 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id B73244114B;\n\tSat, 17 Sep 2022 08:02:44 +0200 (CEST)",
            "from NAM10-DM6-obe.outbound.protection.outlook.com\n (mail-dm6nam10on2041.outbound.protection.outlook.com [40.107.93.41])\n by mails.dpdk.org (Postfix) with ESMTP id A9E2E4114B;\n Sat, 17 Sep 2022 08:02:43 +0200 (CEST)",
            "from DS7PR03CA0118.namprd03.prod.outlook.com (2603:10b6:5:3b7::33)\n by DS0PR12MB6462.namprd12.prod.outlook.com (2603:10b6:8:c6::19) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Sat, 17 Sep\n 2022 06:02:42 +0000",
            "from DM6NAM11FT085.eop-nam11.prod.protection.outlook.com\n (2603:10b6:5:3b7:cafe::3d) by DS7PR03CA0118.outlook.office365.com\n (2603:10b6:5:3b7::33) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.16 via Frontend\n Transport; Sat, 17 Sep 2022 06:02:42 +0000",
            "from mail.nvidia.com (216.228.117.160) by\n DM6NAM11FT085.mail.protection.outlook.com (10.13.172.236) with Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.5632.12 via Frontend Transport; Sat, 17 Sep 2022 06:02:41 +0000",
            "from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com\n (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.26; Fri, 16 Sep\n 2022 23:02:32 -0700",
            "from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com\n (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.29; Fri, 16 Sep\n 2022 23:02:30 -0700"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=kaXoQrfexzLE57fjJzKEYnLDZWEKvnjNAjhinP+0cFgofzIvPDpCqLgR5m65AXFT8/4ESO9z5tb0amPP8rCf8uEMVkOePlVWATgn2SplvCHpZpeiYsaUIZohuZt95VDoTPA4CSzl5uKUuop3UJScUbb1eRsClpOraB6d7gVPJDVNjIQOfNd2PS0lKYdeoQqTMmm/quyI36DOpILKeu5luTAHKW08NCZCyKTWw/D2xZCkAS+nv3GpeVkHukTbsPOsL5XYmC0CuiobhzxoGWNf6K7TPlCRcXiDz0PuAewZ4aKMaxW5RAZ7TUOVpjMLhuDnDvws4cKjZXfgh30t4q6+mQ==",
        "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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=uML6phj2rm9TRJ+lLt8IbaprhhW1fGxQ0ebj3+ex0ro=;\n b=kVvYzcredlUr933drTNRT1fa5W4mXAq7O2p8STTFBh+95p0sghOwiJHqIs902J9gCzVmbKw4Xepn2YiT2KBrxwDwCuid2bmXw4Lix8VX1iLQf/FP4zR/1PYQrMcnyvNdG0ye2FRWm1za7U7x6GDIG7JMUZmw4Y2/u7SGvyJoqBOV/KvB2kxm5d7XbYuRDHWQEo9dqKXxhY8iYwsmtg1bibioHZQOVV+LASPEZf6M9KP4Ie9zvJhePEbNYsHJaFzSbruiEkFSh9c6V0b7Y+805y57jjIiUlotwqVWbRS8yS6Nms0oqrUlaNJc3MQLMBYGSfc4Dd9EDC4D6fPTfBEC7A==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.117.160) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com;\n dmarc=pass (p=reject sp=reject 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=uML6phj2rm9TRJ+lLt8IbaprhhW1fGxQ0ebj3+ex0ro=;\n b=ilQTI8+RAAkNuafquEH/XnzhE60hRFCCKlq3wqjqhqDyGd3i4thCWUFUNVEHGpxaXp0EQZBHjx7Dx5/rQv0/cKwy9RvkTu+eQAsXGYUhq1fMwV1fj96ZyYXKEfU+1P5ramutmzdUBHS90xrQXVG6lnrBH067i21rDA6BjkWmpYRd7qP2yeyf9miGI+Lu6warBZJ4HkNCowwQrHsI2cJ26fFvR9pD7AprWYPS8PrDKdzSIy5k1MH5hvz8uHTZ+SWoJYd9Oc7GDxB6sid/NkAo59pF0Ycltd49RDOtEEMPJ9kLUL/WBRM/U05zdPIH7HUSExywaVxtchT+0tZn1GcuUw==",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.117.160)\n smtp.mailfrom=nvidia.com;\n dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=nvidia.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.117.160 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C",
        "From": "Shun Hao <shunh@nvidia.com>",
        "To": "<viacheslavo@nvidia.com>, <matan@nvidia.com>, <orika@nvidia.com>, \"Sean\n Zhang\" <xiazhang@nvidia.com>",
        "CC": "<dev@dpdk.org>, <rasland@nvidia.com>, <stable@dpdk.org>",
        "Subject": "[PATCH v1 2/3] net/mlx5: add meter flow limitation when matching all\n ports",
        "Date": "Sat, 17 Sep 2022 09:02:09 +0300",
        "Message-ID": "<20220917060210.3332529-3-shunh@nvidia.com>",
        "X-Mailer": "git-send-email 2.20.0",
        "In-Reply-To": "<20220917060210.3332529-1-shunh@nvidia.com>",
        "References": "<20220917060210.3332529-1-shunh@nvidia.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.126.231.35]",
        "X-ClientProxiedBy": "rnnvmail203.nvidia.com (10.129.68.9) To\n rnnvmail201.nvidia.com (10.129.68.8)",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "DM6NAM11FT085:EE_|DS0PR12MB6462:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "c8b75e6c-e566-4110-a81e-08da98723ba2",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n WZEt+CftJcnWDInJwha4IfF0Rdwhjm/PjibpeD1vrVpCFlpd0SlRZTIS2D3T/scaXbbmLUObpRtnxwCVNC0iVUkh7w09n+hdB5yep/kv0hhMsxF4xXg8Ss5BWYQg/3Mpaj5IgFqfqfEoV4uZqVypATHzIi/QzvFzR2EXJOFBIctmn7Htv2HcdjaedVZqdCFBdU6tPldVwBMBTvqBAr2y2WG9gj9AhhB3RwOmCkoCZhgTWBKt6chMTsLV4CwKkPWGL7mKWEaVDtND1aqiXQKrzPGOfY6E9WYSdJG23d2BIRfM+rONDBfhxmPhPDp/cPsdgOBC3Rftb1Zebbn2ISPPv1juZSGKCiBq4hTJvoO5jWv+C2RtcnY/ZpOqvFjNRZnevJXfP53Odtv1fH/3FZI87CYE2enxZ+jUX6IJ/wGU/VWn2yqERyWQbXO7X0b8ZB69Ksl03ZFA1anltI9e338UoZmb5lZBxrE0X801/iEy588pPyqIXRGpOWShVwPPRwe7HOBc/ZMCoChQEH6MaX8lPApZG0hk3MvZb+rFcsA3//EvS5rSh4Fzn3oLpY2MtcsjEu3pZ2+mrAKuE2cm+AiZ1CULzRx+fuSqsb0O8kFZrbEb8gg2+yU5yk1daO1Vjlxgu8YpBsDkkwd5HY3KuLEtH9+rI0Ly0Hbke0wJApu8usIRJK/a1eZbkCaYWpNW1kh0e/oROqaWs2auduG9IWJ0uaRP3nTO64uhRqrirPL7MUPM2GWfeyXA+ZqsGjBIL51Uj6MS9+CHlJ6B7PIBapewyw==",
        "X-Forefront-Antispam-Report": "CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1;\n SRV:;\n IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE;\n SFS:(13230022)(4636009)(346002)(136003)(376002)(39860400002)(396003)(451199015)(40470700004)(36840700001)(46966006)(2906002)(83380400001)(5660300002)(36860700001)(40460700003)(7636003)(450100002)(478600001)(86362001)(82740400003)(26005)(70206006)(70586007)(6636002)(6666004)(8676002)(336012)(110136005)(6286002)(47076005)(426003)(16526019)(36756003)(8936002)(40480700001)(4326008)(186003)(316002)(7696005)(55016003)(41300700001)(54906003)(356005)(2616005)(82310400005)(1076003);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "17 Sep 2022 06:02:41.8993 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n c8b75e6c-e566-4110-a81e-08da98723ba2",
        "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.117.160];\n Helo=[mail.nvidia.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n DM6NAM11FT085.eop-nam11.prod.protection.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DS0PR12MB6462",
        "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"
    },
    "content": "If there's no param in represented_port item, it will be treated as\nmatching all ports by default. But there's some limitation when using it\nwith meter hierarchy.\n\nThis patch adds the limitation that when matching all ports, the meter\nhierarchy should not contain any meter having drop count.\n\nFixes: e8146c63 (\"net/mlx5: support represented port item in flow rules\")\nCc: stable@dpdk.org\n\nSigned-off-by: Shun Hao <shunh@nvidia.com>\nAcked-by: Matan Azrad <matan@nvidia.com>\n---\n doc/guides/nics/mlx5.rst        |  1 +\n drivers/net/mlx5/mlx5.h         |  2 ++\n drivers/net/mlx5/mlx5_flow.c    | 11 ++++++-\n drivers/net/mlx5/mlx5_flow.h    |  1 +\n drivers/net/mlx5/mlx5_flow_dv.c | 51 ++++++++++++++++++++-------------\n 5 files changed, 45 insertions(+), 21 deletions(-)",
    "diff": "diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst\nindex d331e48ce7..631f0840eb 100644\n--- a/doc/guides/nics/mlx5.rst\n+++ b/doc/guides/nics/mlx5.rst\n@@ -473,6 +473,7 @@ Limitations\n   - meter profile packet mode is supported.\n   - meter profiles of RFC2697, RFC2698 and RFC4115 are supported.\n   - RFC4115 implementation is following MEF, meaning yellow traffic may reclaim unused green bandwidth when green token bucket is full.\n+  - When using DV flow engine (``dv_flow_en`` = 1), if meter has drop count or meter hierarchy contains any meter that uses drop count, it cannot be used by flow matching all ports.\n \n - Integrity:\n \ndiff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h\nindex a56ee83d99..9300dc02ff 100644\n--- a/drivers/net/mlx5/mlx5.h\n+++ b/drivers/net/mlx5/mlx5.h\n@@ -775,6 +775,8 @@ struct mlx5_flow_meter_policy {\n \t/* Is queue action in policy table. */\n \tuint32_t is_hierarchy:1;\n \t/* Is meter action in policy table. */\n+\tuint32_t hierarchy_drop_cnt:1;\n+\t/* Is any meter in hierarchy contains drop_cnt. */\n \tuint32_t skip_y:1;\n \t/* If yellow color policy is skipped. */\n \tuint32_t skip_g:1;\ndiff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c\nindex e93b6e144c..2038c4a6c0 100644\n--- a/drivers/net/mlx5/mlx5_flow.c\n+++ b/drivers/net/mlx5/mlx5_flow.c\n@@ -5338,6 +5338,7 @@ flow_meter_split_prep(struct rte_eth_dev *dev,\n \t\tswitch (item_type) {\n \t\tcase RTE_FLOW_ITEM_TYPE_PORT_ID:\n \t\tcase RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT:\n+\t\t\tif (mlx5_flow_get_item_vport_id(dev, items, &flow_src_port, NULL, error))\n \t\t\t\treturn -rte_errno;\n \t\t\tif (!fm->def_policy && wks->policy->is_hierarchy &&\n \t\t\t    flow_src_port != priv->representor_id) {\n@@ -11012,6 +11013,8 @@ int16_t mlx5_flow_get_esw_manager_vport_id(struct rte_eth_dev *dev)\n  *   The src port id match item.\n  * @param[out] vport_id\n  *   Pointer to put the vport id.\n+ * @param[out] all_ports\n+ *   Indicate if the item matches all ports.\n  * @param[out] error\n  *   Pointer to error structure.\n  *\n@@ -11021,6 +11024,7 @@ int16_t mlx5_flow_get_esw_manager_vport_id(struct rte_eth_dev *dev)\n int mlx5_flow_get_item_vport_id(struct rte_eth_dev *dev,\n \t\t\t\tconst struct rte_flow_item *item,\n \t\t\t\tuint16_t *vport_id,\n+\t\t\t\tbool *all_ports,\n \t\t\t\tstruct rte_flow_error *error)\n {\n \tstruct mlx5_priv *port_priv;\n@@ -11032,8 +11036,13 @@ int mlx5_flow_get_item_vport_id(struct rte_eth_dev *dev,\n \t\treturn rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM_SPEC,\n \t\t\t\t\t  NULL, \"Incorrect item type.\");\n \tpid_v = item->spec;\n-\tif (!pid_v)\n+\tif (!pid_v) {\n+\t\tif (all_ports)\n+\t\t\t*all_ports = (item->type == RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT);\n \t\treturn 0;\n+\t}\n+\tif (all_ports)\n+\t\t*all_ports = false;\n \tesw_mgr_port = (item->type == RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT) ?\n \t\t\t\tMLX5_REPRESENTED_PORT_ESW_MGR : MLX5_PORT_ESW_MGR;\n \tif (pid_v->id == esw_mgr_port) {\ndiff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h\nindex 2f265763a9..0fa1735b1a 100644\n--- a/drivers/net/mlx5/mlx5_flow.h\n+++ b/drivers/net/mlx5/mlx5_flow.h\n@@ -2087,6 +2087,7 @@ int16_t mlx5_flow_get_esw_manager_vport_id(struct rte_eth_dev *dev);\n int mlx5_flow_get_item_vport_id(struct rte_eth_dev *dev,\n \t\t\t\tconst struct rte_flow_item *item,\n \t\t\t\tuint16_t *vport_id,\n+\t\t\t\tbool *all_ports,\n \t\t\t\tstruct rte_flow_error *error);\n \n #endif /* RTE_PMD_MLX5_FLOW_H_ */\ndiff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c\nindex f7a5e479b6..5a382b66a4 100644\n--- a/drivers/net/mlx5/mlx5_flow_dv.c\n+++ b/drivers/net/mlx5/mlx5_flow_dv.c\n@@ -5245,6 +5245,8 @@ mlx5_flow_validate_action_meter(struct rte_eth_dev *dev,\n \tstruct mlx5_flow_meter_info *fm;\n \tstruct mlx5_flow_meter_policy *mtr_policy;\n \tstruct mlx5_flow_mtr_mng *mtrmng = priv->sh->mtrmng;\n+\tuint16_t flow_src_port = priv->representor_id;\n+\tbool all_ports = false;\n \n \tif (!am)\n \t\treturn rte_flow_error_set(error, EINVAL,\n@@ -5307,27 +5309,34 @@ mlx5_flow_validate_action_meter(struct rte_eth_dev *dev,\n \t\t\t\t\t  \"Flow attributes domain \"\n \t\t\t\t\t  \"have a conflict with current \"\n \t\t\t\t\t  \"meter domain attributes\");\n-\t\tif (attr->transfer && mtr_policy->dev) {\n-\t\t\t/**\n-\t\t\t * When policy has fate action of port_id,\n-\t\t\t * the flow should have the same src port as policy.\n-\t\t\t */\n-\t\t\tstruct mlx5_priv *policy_port_priv =\n-\t\t\t\t\tmtr_policy->dev->data->dev_private;\n-\t\t\tuint16_t flow_src_port = priv->representor_id;\n-\n-\t\t\tif (port_id_item) {\n-\t\t\t\tif (mlx5_flow_get_item_vport_id(dev, port_id_item,\n-\t\t\t\t\t\t\t\t&flow_src_port, error))\n-\t\t\t\t\treturn -rte_errno;\n+\t\tif (port_id_item) {\n+\t\t\tif (mlx5_flow_get_item_vport_id(dev, port_id_item, &flow_src_port,\n+\t\t\t\t\t\t\t&all_ports, error))\n+\t\t\t\treturn -rte_errno;\n+\t\t}\n+\t\tif (attr->transfer) {\n+\t\t\tif (mtr_policy->dev) {\n+\t\t\t\t/**\n+\t\t\t\t * When policy has fate action of port_id,\n+\t\t\t\t * the flow should have the same src port as policy.\n+\t\t\t\t */\n+\t\t\t\tstruct mlx5_priv *policy_port_priv =\n+\t\t\t\t\t\tmtr_policy->dev->data->dev_private;\n+\n+\t\t\t\tif (all_ports || flow_src_port != policy_port_priv->representor_id)\n+\t\t\t\t\treturn rte_flow_error_set(error,\n+\t\t\t\t\t\t\trte_errno,\n+\t\t\t\t\t\t\tRTE_FLOW_ERROR_TYPE_ITEM_SPEC,\n+\t\t\t\t\t\t\tNULL,\n+\t\t\t\t\t\t\t\"Flow and meter policy \"\n+\t\t\t\t\t\t\t\"have different src port.\");\n \t\t\t}\n-\t\t\tif (flow_src_port != policy_port_priv->representor_id)\n-\t\t\t\treturn rte_flow_error_set(error,\n-\t\t\t\t\t\trte_errno,\n-\t\t\t\t\t\tRTE_FLOW_ERROR_TYPE_ITEM_SPEC,\n-\t\t\t\t\t\tNULL,\n-\t\t\t\t\t\t\"Flow and meter policy \"\n-\t\t\t\t\t\t\"have different src port.\");\n+\t\t\t/* When flow matching all src ports, meter should not have drop count. */\n+\t\t\tif (all_ports && (fm->drop_cnt || mtr_policy->hierarchy_drop_cnt))\n+\t\t\t\treturn rte_flow_error_set(error, EINVAL,\n+\t\t\t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ITEM_SPEC, NULL,\n+\t\t\t\t\t\t\t  \"Meter drop count not supported \"\n+\t\t\t\t\t\t\t  \"when matching all ports.\");\n \t\t} else if (mtr_policy->is_rss) {\n \t\t\tstruct mlx5_flow_meter_policy *fp;\n \t\t\tstruct mlx5_meter_policy_action_container *acg;\n@@ -16251,6 +16260,8 @@ __flow_dv_create_domain_policy_acts(struct rte_eth_dev *dev,\n \t\t\t\tmtr_policy->dev = next_policy->dev;\n \t\t\t\tif (next_policy->mark)\n \t\t\t\t\tmtr_policy->mark = 1;\n+\t\t\t\tif (next_fm->drop_cnt || next_policy->hierarchy_drop_cnt)\n+\t\t\t\t\tmtr_policy->hierarchy_drop_cnt = 1;\n \t\t\t\taction_flags |=\n \t\t\t\tMLX5_FLOW_ACTION_METER_WITH_TERMINATED_POLICY;\n \t\t\t\tbreak;\n",
    "prefixes": [
        "v1",
        "2/3"
    ]
}