get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 117467,
    "url": "https://patches.dpdk.org/api/patches/117467/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20221006150325.660-7-valex@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": "<20221006150325.660-7-valex@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20221006150325.660-7-valex@nvidia.com",
    "date": "2022-10-06T15:03:12",
    "name": "[v2,06/19] net/mlx5: provide the available tag registers",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "3bc61b3a48cad1db26ca6ecdcc420c4ef2f229d3",
    "submitter": {
        "id": 2858,
        "url": "https://patches.dpdk.org/api/people/2858/?format=api",
        "name": "Alex Vesker",
        "email": "valex@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/20221006150325.660-7-valex@nvidia.com/mbox/",
    "series": [
        {
            "id": 25012,
            "url": "https://patches.dpdk.org/api/series/25012/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=25012",
            "date": "2022-10-06T15:03:06",
            "name": "net/mlx5: Add HW steering low level support",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/25012/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/117467/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/117467/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 3E67CA00C2;\n\tThu,  6 Oct 2022 17:04:48 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id E23E942CA9;\n\tThu,  6 Oct 2022 17:04:17 +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 9C36942C9D\n for <dev@dpdk.org>; Thu,  6 Oct 2022 17:04:16 +0200 (CEST)",
            "from BN9PR03CA0776.namprd03.prod.outlook.com (2603:10b6:408:13a::31)\n by SJ0PR12MB5438.namprd12.prod.outlook.com (2603:10b6:a03:3ba::23)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.24; Thu, 6 Oct\n 2022 15:04:13 +0000",
            "from BN8NAM11FT013.eop-nam11.prod.protection.outlook.com\n (2603:10b6:408:13a:cafe::8) by BN9PR03CA0776.outlook.office365.com\n (2603:10b6:408:13a::31) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.26 via Frontend\n Transport; Thu, 6 Oct 2022 15:04:13 +0000",
            "from mail.nvidia.com (216.228.117.161) by\n BN8NAM11FT013.mail.protection.outlook.com (10.13.176.182) with Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.5709.10 via Frontend Transport; Thu, 6 Oct 2022 15:04:13 +0000",
            "from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com\n (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.26; Thu, 6 Oct 2022\n 08:04:00 -0700",
            "from nvidia.com (10.126.230.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; Thu, 6 Oct 2022\n 08:03:57 -0700"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=E++BiaHRnjUnZyT8rcqGT3q0NjQzb9ewewPY96xWIY/qhuJ8wDN0WVW3U7Uzky+1nfQKJJbuk9t4frD1Nvj4LbC17f1j/zUSrTrLgA8uMIo89tsrHazgl1EDQv28Hs/1gqRinYUT4S/U4BqmacDStVfmxmxvqZFFmVi/i2mIy2C3a+tijB7J3C9Sr8FovxRGhOnlLKR0F0ui5m4HxfZc24/JunYZLkpms9bD9NuDe4ZP3Gy0Q8kdgxkkTM4bvbdTCpyxkInURwqo01ukUb1sxHVmz4DnrzRssNJrrCzXwEI1RHUUu1XZUizCow6ZsiJhP5i9n+cL+rBTsHUs/TkxEA==",
        "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=A6Cc6sNyoLF+VfNqPFgFZCD+26h2eCqUe8QNy76fqu8=;\n b=gQ+2EAadxfLbG9ex/W8NTfpnCEKs7H4yeDiSxTg1C3KpThc3GoaRv1e5RZDfVcsCW9KtBT+oCiTQCWDE4k13B3qJ8ftzcWCpjYBeymRUW6/bcUytmPhrCvAJ1kHeM7SkMn8JR1PQCwvX4RiculluCWExp9MgvzzISttUYDgKJEy0kUKvcYHyg6WdBTC8jzAj+A0/9O4WMmXvdBFTpPGQP1coOLB2vW7akCiGDBvR1a2kCaN2bHgbwl6t+8iUYVKzBhsZqyJxos31LzIX1fjbAxUxPJm78eqUFBxUK68VTkv2hPLRkeCWA3Bc5TivbiPYIdGLYJcWprzBwy8js11WeQ==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.117.161) smtp.rcpttodomain=monjalon.net 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=A6Cc6sNyoLF+VfNqPFgFZCD+26h2eCqUe8QNy76fqu8=;\n b=Hk5tguMdPE7Z9cVjRNbveIb8r/piRmdIdTRxrQri9zFnLEzWIcBFSbQPqVLlgN+oULl57cdQQWpzrzGP/l0cs1LBI1i+P3RULs5lIvcyZ+u/yH5hRCA7nUlePTw9N6DQF4a+ErC9mf78pRoD9UrTmd+VDhSQJJhVVa1Sye2LOEk8CPjqF0+yIEtaxJ8qyt9MWupLab3PpjefynQXAgLubrQBHSBvEXZ0NPE979u61PTHsBJl5EIEUYP5DI1mRqE80fGHEZpcSKxZLsgbG/RrQ9nzjZXn+UPxG0M2q2IK8H4k6Mk7MxNocnPuVxxJl1UgXP7DpLIU4RiOh42QCHTWeA==",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.117.161)\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.161 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C",
        "From": "Alex Vesker <valex@nvidia.com>",
        "To": "<valex@nvidia.com>, <viacheslavo@nvidia.com>, <thomas@monjalon.net>,\n <suanmingm@nvidia.com>, Matan Azrad <matan@nvidia.com>",
        "CC": "<dev@dpdk.org>, <orika@nvidia.com>, Bing Zhao <bingz@nvidia.com>",
        "Subject": "[v2 06/19] net/mlx5: provide the available tag registers",
        "Date": "Thu, 6 Oct 2022 18:03:12 +0300",
        "Message-ID": "<20221006150325.660-7-valex@nvidia.com>",
        "X-Mailer": "git-send-email 2.18.1",
        "In-Reply-To": "<20221006150325.660-1-valex@nvidia.com>",
        "References": "<20220922190345.394-1-valex@nvidia.com>\n <20221006150325.660-1-valex@nvidia.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.126.230.35]",
        "X-ClientProxiedBy": "rnnvmail202.nvidia.com (10.129.68.7) To\n rnnvmail201.nvidia.com (10.129.68.8)",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "BN8NAM11FT013:EE_|SJ0PR12MB5438:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "be002803-d64d-4e55-a8f2-08daa7ac07ca",
        "X-LD-Processed": "43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n mBdBkDP9WJpI4mdwOPu3L7q0iH78q575TEmL3jXntnYJkrYkFvtv1B3RoUMbuZnDlWgS9D1mksxvBxz4WXi5rFJDRkZGQze7b1ng2JD/th2oUauSOvpkdy+jFllZyoDRTRyNDiwgIgua6jRsDz+vKSZ84Z15ghQhKM3S7aFK7vFlWGOzrWNImedVZieeD0szwvOj+dV8V+XXIswLpxiL8QEim/ZxGXDjjUpktuqbOK5vDcw/0NOoWuBgjrqBFVChbo1fktBQ+GDH1BH/DZ8VcW4I6IpQxL6W2xOYTSeU1JbamMif2YZr8178xRn73Fkj/7xIe0s3iaMyqkVMIntecgHm2nK0TgpZnbSl8i5taYnryLIW/0xPHUUk2mSIzzOXhGJJ7aFBEXjxvfid0Avfp8OgJQHO9IInaSTeaoUOgJyYI5AAlgOGmvICwzJ9sRqMyP9mHUdEM2GoqgiuLeDvoGYbOmXoyV8VhmfKNgEHVuPpCeEpCmLOfCeyvdC5NSTi1ZztM0jhWHPeqs0FM7Rw8pWNjjIYES1hOd0nMM518Y6I5Ynv+j8Bo/+zwZoD/GRCT3QrOfezbimTkMszbD+qTL9be8Z8qHss6+mxrHYA8xrQqWnMRL20NrP7dIS2TcE9ywNUgt0X5I/D3vHvTBUTQz5GtCNi+J7ttimIP4rUbAAV4fszVZzrAxdaxbsWy9uvMUxdzS6zJ0MzAOyBF/sajWB7JsGQgBFiI746JVELpD2vdJwZytD+nw7j2tW7fsQezrqbw8+ooC27r06IxRrkXWIq2XP9TgIVKiZ/XWDpNx0=",
        "X-Forefront-Antispam-Report": "CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1;\n SRV:;\n IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE;\n SFS:(13230022)(4636009)(396003)(39860400002)(376002)(136003)(346002)(451199015)(36840700001)(40470700004)(46966006)(36756003)(86362001)(36860700001)(336012)(16526019)(1076003)(186003)(2616005)(83380400001)(316002)(110136005)(356005)(82740400003)(7636003)(47076005)(426003)(107886003)(6286002)(26005)(7696005)(478600001)(6636002)(6666004)(54906003)(70586007)(70206006)(8676002)(4326008)(8936002)(82310400005)(5660300002)(2906002)(41300700001)(40460700003)(40480700001)(55016003)(21314003);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "06 Oct 2022 15:04:13.0938 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n be002803-d64d-4e55-a8f2-08daa7ac07ca",
        "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.161];\n Helo=[mail.nvidia.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n BN8NAM11FT013.eop-nam11.prod.protection.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "SJ0PR12MB5438",
        "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": "From: Bing Zhao <bingz@nvidia.com>\n\nThe available tags that can be used by the application are fixed\nafter startup.\n\nA global array is used to store the information and transfer the TAG\nitem directly from the ID to the REG_C_x.\n\nSigned-off-by: Bing Zhao <bingz@nvidia.com>\n---\n drivers/net/mlx5/linux/mlx5_os.c |  5 ++-\n drivers/net/mlx5/mlx5.c          |  2 +\n drivers/net/mlx5/mlx5.h          |  1 +\n drivers/net/mlx5/mlx5_defs.h     |  2 +\n drivers/net/mlx5/mlx5_flow.c     | 11 +++++\n drivers/net/mlx5/mlx5_flow.h     | 27 ++++++++++++\n drivers/net/mlx5/mlx5_flow_hw.c  | 76 ++++++++++++++++++++++++++++++++\n 7 files changed, 123 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c\nindex 1036b870de..1d77b49aac 100644\n--- a/drivers/net/mlx5/linux/mlx5_os.c\n+++ b/drivers/net/mlx5/linux/mlx5_os.c\n@@ -1543,8 +1543,11 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,\n \trte_rwlock_init(&priv->ind_tbls_lock);\n \tif (priv->vport_meta_mask)\n \t\tflow_hw_set_port_info(eth_dev);\n-\tif (priv->sh->config.dv_flow_en == 2)\n+\tif (priv->sh->config.dv_flow_en == 2) {\n+\t\t/* Only HWS requires this information. */\n+\t\tflow_hw_init_tags_set(eth_dev);\n \t\treturn eth_dev;\n+\t}\n \t/* Port representor shares the same max priority with pf port. */\n \tif (!priv->sh->flow_priority_check_flag) {\n \t\t/* Supported Verbs flow priority number detection. */\ndiff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c\nindex ad561bd86d..cb1a670954 100644\n--- a/drivers/net/mlx5/mlx5.c\n+++ b/drivers/net/mlx5/mlx5.c\n@@ -1946,6 +1946,8 @@ mlx5_dev_close(struct rte_eth_dev *dev)\n \tflow_hw_resource_release(dev);\n #endif\n \tflow_hw_clear_port_info(dev);\n+\tif (priv->sh->config.dv_flow_en == 2)\n+\t\tflow_hw_clear_tags_set(dev);\n \tif (priv->rxq_privs != NULL) {\n \t\t/* XXX race condition if mlx5_rx_burst() is still running. */\n \t\trte_delay_us_sleep(1000);\ndiff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h\nindex 95ecbea39e..ea63c29bf9 100644\n--- a/drivers/net/mlx5/mlx5.h\n+++ b/drivers/net/mlx5/mlx5.h\n@@ -1200,6 +1200,7 @@ struct mlx5_dev_ctx_shared {\n \tuint32_t drop_action_check_flag:1; /* Check Flag for drop action. */\n \tuint32_t flow_priority_check_flag:1; /* Check Flag for flow priority. */\n \tuint32_t metadata_regc_check_flag:1; /* Check Flag for metadata REGC. */\n+\tuint32_t hws_tags:1; /* Check if tags info for HWS initialized. */\n \tuint32_t max_port; /* Maximal IB device port index. */\n \tstruct mlx5_bond_info bond; /* Bonding information. */\n \tstruct mlx5_common_device *cdev; /* Backend mlx5 device. */\ndiff --git a/drivers/net/mlx5/mlx5_defs.h b/drivers/net/mlx5/mlx5_defs.h\nindex 018d3f0f0c..585afb0a98 100644\n--- a/drivers/net/mlx5/mlx5_defs.h\n+++ b/drivers/net/mlx5/mlx5_defs.h\n@@ -139,6 +139,8 @@\n #define MLX5_XMETA_MODE_META32 2\n /* Provide info on patrial hw miss. Implies MLX5_XMETA_MODE_META16 */\n #define MLX5_XMETA_MODE_MISS_INFO 3\n+/* Only valid in HWS, 32bits extended META without MARK support in FDB. */\n+#define MLX5_XMETA_MODE_META32_HWS 4\n \n /* Tx accurate scheduling on timestamps parameters. */\n #define MLX5_TXPP_WAIT_INIT_TS 1000ul /* How long to wait timestamp. */\ndiff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c\nindex acf1467bf6..45109001ca 100644\n--- a/drivers/net/mlx5/mlx5_flow.c\n+++ b/drivers/net/mlx5/mlx5_flow.c\n@@ -39,6 +39,17 @@\n  */\n struct flow_hw_port_info mlx5_flow_hw_port_infos[RTE_MAX_ETHPORTS];\n \n+/*\n+ * A global structure to save the available REG_C_x for tags usage.\n+ * The Meter color REG (ASO) and the last available one will be reserved\n+ * for PMD internal usage.\n+ * Since there is no \"port\" concept in the driver, it is assumed that the\n+ * available tags set will be the minimum intersection.\n+ * 3 - in FDB mode / 5 - in legacy mode\n+ */\n+uint32_t mlx5_flow_hw_avl_tags_init_cnt;\n+enum modify_reg mlx5_flow_hw_avl_tags[MLX5_FLOW_HW_TAGS_MAX] = {REG_NON};\n+\n struct tunnel_default_miss_ctx {\n \tuint16_t *queue;\n \t__extension__\ndiff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h\nindex 2eb2b46060..cae1a64def 100644\n--- a/drivers/net/mlx5/mlx5_flow.h\n+++ b/drivers/net/mlx5/mlx5_flow.h\n@@ -1328,6 +1328,10 @@ struct flow_hw_port_info {\n \n extern struct flow_hw_port_info mlx5_flow_hw_port_infos[RTE_MAX_ETHPORTS];\n \n+#define MLX5_FLOW_HW_TAGS_MAX 8\n+extern uint32_t mlx5_flow_hw_avl_tags_init_cnt;\n+extern enum modify_reg mlx5_flow_hw_avl_tags[];\n+\n /*\n  * Get metadata match tag and mask for given rte_eth_dev port.\n  * Used in HWS rule creation.\n@@ -1367,9 +1371,32 @@ flow_hw_get_wire_port(struct ibv_context *ibctx)\n \treturn NULL;\n }\n \n+/*\n+ * Convert metadata or tag to the actual register.\n+ * META: Can only be used to match in the FDB in this stage, fixed C_1.\n+ * TAG: C_x expect meter color reg and the reserved ones.\n+ * TODO: Per port / device, FDB or NIC for Meta matching.\n+ */\n+static __rte_always_inline int\n+flow_hw_get_reg_id(enum rte_flow_item_type type, uint32_t id)\n+{\n+\tswitch (type) {\n+\tcase RTE_FLOW_ITEM_TYPE_META:\n+\t\treturn REG_C_1;\n+\tcase RTE_FLOW_ITEM_TYPE_TAG:\n+\t\tMLX5_ASSERT(id < MLX5_FLOW_HW_TAGS_MAX);\n+\t\treturn mlx5_flow_hw_avl_tags[id];\n+\tdefault:\n+\t\treturn REG_NON;\n+\t}\n+}\n+\n void flow_hw_set_port_info(struct rte_eth_dev *dev);\n void flow_hw_clear_port_info(struct rte_eth_dev *dev);\n \n+void flow_hw_init_tags_set(struct rte_eth_dev *dev);\n+void flow_hw_clear_tags_set(struct rte_eth_dev *dev);\n+\n typedef int (*mlx5_flow_validate_t)(struct rte_eth_dev *dev,\n \t\t\t\t    const struct rte_flow_attr *attr,\n \t\t\t\t    const struct rte_flow_item items[],\ndiff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c\nindex fe809a83b9..78c741bb91 100644\n--- a/drivers/net/mlx5/mlx5_flow_hw.c\n+++ b/drivers/net/mlx5/mlx5_flow_hw.c\n@@ -2237,6 +2237,82 @@ flow_hw_clear_port_info(struct rte_eth_dev *dev)\n \tinfo->is_wire = 0;\n }\n \n+/*\n+ * Initialize the information of available tag registers and an intersection\n+ * of all the probed devices' REG_C_Xs.\n+ * PS. No port concept in steering part, right now it cannot be per port level.\n+ *\n+ * @param[in] dev\n+ *   Pointer to the rte_eth_dev structure.\n+ */\n+void flow_hw_init_tags_set(struct rte_eth_dev *dev)\n+{\n+\tstruct mlx5_priv *priv = dev->data->dev_private;\n+\tuint32_t meta_mode = priv->sh->config.dv_xmeta_en;\n+\tuint8_t masks = (uint8_t)priv->sh->cdev->config.hca_attr.set_reg_c;\n+\tuint32_t i, j;\n+\tenum modify_reg copy[MLX5_FLOW_HW_TAGS_MAX] = {REG_NON};\n+\tuint8_t unset = 0;\n+\tuint8_t copy_masks = 0;\n+\n+\t/*\n+\t * The CAPA is global for common device but only used in net.\n+\t * It is shared per eswitch domain.\n+\t */\n+\tif (!!priv->sh->hws_tags)\n+\t\treturn;\n+\tunset |= 1 << (priv->mtr_color_reg - REG_C_0);\n+\tunset |= 1 << (REG_C_6 - REG_C_0);\n+\tif (meta_mode == MLX5_XMETA_MODE_META32_HWS) {\n+\t\tunset |= 1 << (REG_C_1 - REG_C_0);\n+\t\tunset |= 1 << (REG_C_0 - REG_C_0);\n+\t}\n+\tmasks &= ~unset;\n+\tif (mlx5_flow_hw_avl_tags_init_cnt) {\n+\t\tfor (i = 0; i < MLX5_FLOW_HW_TAGS_MAX; i++) {\n+\t\t\tif (mlx5_flow_hw_avl_tags[i] != REG_NON && !!((1 << i) & masks)) {\n+\t\t\t\tcopy[mlx5_flow_hw_avl_tags[i] - REG_C_0] =\n+\t\t\t\t\t\tmlx5_flow_hw_avl_tags[i];\n+\t\t\t\tcopy_masks |= (1 << i);\n+\t\t\t}\n+\t\t}\n+\t\tif (copy_masks != masks) {\n+\t\t\tj = 0;\n+\t\t\tfor (i = 0; i < MLX5_FLOW_HW_TAGS_MAX; i++)\n+\t\t\t\tif (!!((1 << i) & copy_masks))\n+\t\t\t\t\tmlx5_flow_hw_avl_tags[j++] = copy[i];\n+\t\t}\n+\t} else {\n+\t\tj = 0;\n+\t\tfor (i = 0; i < MLX5_FLOW_HW_TAGS_MAX; i++) {\n+\t\t\tif (!!((1 << i) & masks))\n+\t\t\t\tmlx5_flow_hw_avl_tags[j++] =\n+\t\t\t\t\t(enum modify_reg)(i + (uint32_t)REG_C_0);\n+\t\t}\n+\t}\n+\tpriv->sh->hws_tags = 1;\n+\tmlx5_flow_hw_avl_tags_init_cnt++;\n+}\n+\n+/*\n+ * Reset the available tag registers information to NONE.\n+ *\n+ * @param[in] dev\n+ *   Pointer to the rte_eth_dev structure.\n+ */\n+void flow_hw_clear_tags_set(struct rte_eth_dev *dev)\n+{\n+\tstruct mlx5_priv *priv = dev->data->dev_private;\n+\n+\tif (!priv->sh->hws_tags)\n+\t\treturn;\n+\tpriv->sh->hws_tags = 0;\n+\tmlx5_flow_hw_avl_tags_init_cnt--;\n+\tif (!mlx5_flow_hw_avl_tags_init_cnt)\n+\t\tmemset(mlx5_flow_hw_avl_tags, REG_NON,\n+\t\t       sizeof(enum modify_reg) * MLX5_FLOW_HW_TAGS_MAX);\n+}\n+\n /**\n  * Create shared action.\n  *\n",
    "prefixes": [
        "v2",
        "06/19"
    ]
}