get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 122735,
    "url": "http://patchwork.dpdk.org/api/patches/122735/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20230131093346.1261066-10-valex@nvidia.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<20230131093346.1261066-10-valex@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230131093346.1261066-10-valex@nvidia.com",
    "date": "2023-01-31T09:33:38",
    "name": "[v1,09/16] net/mlx5/hws: support range match",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "4b49e868de077e55a40adbb60b2e22bf72babf2a",
    "submitter": {
        "id": 2858,
        "url": "http://patchwork.dpdk.org/api/people/2858/?format=api",
        "name": "Alex Vesker",
        "email": "valex@nvidia.com"
    },
    "delegate": {
        "id": 3268,
        "url": "http://patchwork.dpdk.org/api/users/3268/?format=api",
        "username": "rasland",
        "first_name": "Raslan",
        "last_name": "Darawsheh",
        "email": "rasland@nvidia.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20230131093346.1261066-10-valex@nvidia.com/mbox/",
    "series": [
        {
            "id": 26709,
            "url": "http://patchwork.dpdk.org/api/series/26709/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=26709",
            "date": "2023-01-31T09:33:29",
            "name": "net/mlx5/hws: support range and partial hash matching",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/26709/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/122735/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/122735/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 1066641B8D;\n\tTue, 31 Jan 2023 10:36:24 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 8A9C042D86;\n\tTue, 31 Jan 2023 10:35:03 +0100 (CET)",
            "from NAM10-MW2-obe.outbound.protection.outlook.com\n (mail-mw2nam10on2081.outbound.protection.outlook.com [40.107.94.81])\n by mails.dpdk.org (Postfix) with ESMTP id 26F9F42DB5\n for <dev@dpdk.org>; Tue, 31 Jan 2023 10:35:01 +0100 (CET)",
            "from MW4PR03CA0083.namprd03.prod.outlook.com (2603:10b6:303:b6::28)\n by CH0PR12MB8464.namprd12.prod.outlook.com (2603:10b6:610:184::11)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.38; Tue, 31 Jan\n 2023 09:34:49 +0000",
            "from CO1NAM11FT047.eop-nam11.prod.protection.outlook.com\n (2603:10b6:303:b6:cafe::45) by MW4PR03CA0083.outlook.office365.com\n (2603:10b6:303:b6::28) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.36 via Frontend\n Transport; Tue, 31 Jan 2023 09:34:49 +0000",
            "from mail.nvidia.com (216.228.117.161) by\n CO1NAM11FT047.mail.protection.outlook.com (10.13.174.132) with Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.6043.22 via Frontend Transport; Tue, 31 Jan 2023 09:34:49 +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.36; Tue, 31 Jan\n 2023 01:34:26 -0800",
            "from nvidia.com (10.126.231.37) 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.36; Tue, 31 Jan\n 2023 01:34:24 -0800"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=D3G6aq10R7CYpFkxfPsH8kBoteUV9ruuegzw6GsMJGX+3JJIglWlkxYg0GGcNhphbDpI16z6X4ocnRihEfEvBQj83t8C6CS8Xx2Ug0c92AmkkdtZ8s9py8DUctinMfhjHYtvcLmj36niKM8y4v+3tn6qoreTwHHwiWhJ00vp9b4nYDBMsD36//TeTdoN0yQtyZccgErgWvhMXOHCa5Z2UeGzUYGGI8amqqgsNewpnQ1q7e3dkOmRwX1RbX6I3SZSCjp1dHbZi/z2CmnJjvYcgv/FVyb1Jopgps8pA+7yhOpb/DRwY+yZ9zA9hNMlZtCH/mVmZo5Awb92gzQ3nLYXcA==",
        "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=vPZB4J4RIXEdmv7nEgvDvcunhy8DyC2OnnyVg9rkNpI=;\n b=ILN6zCU0IxlAGdDp/XHu/iSnalwDdtrdH2YVXhY8jX48I7feRBVp5ZLdDtIJ2WGE650KKIq+pth6IBJhrqVeY7kUkQsuzptonR1qetmIyqA4x3ZqJcrUbBKvaqD8a5TIbh+NS+LjBmFH9g96iGb6hCzbiRpZMoEdJBgyyvlv5h7KPUncWvZXDmPXAfA46PPIxYcyh6kPOcVgf993Ps0cqIAiWc9+DmlMpTS0oiBagYmbEEt3egWcb4Df25bygrB/k94mn8E7lNYyFLGMXxQFXeKONAjjtC6+XagCRZjNNsURSQkSRMpYxcgYttBWlMYQl8+BdSwTpxvqkF7gOUvZlg==",
        "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=vPZB4J4RIXEdmv7nEgvDvcunhy8DyC2OnnyVg9rkNpI=;\n b=mrvMxIFHgqzFgdh3Gqhu1BiSVBAnq09l6Ge+ZSMV8mq8IoXi+kRfE3S8OgU5u1arODNV8i9EhbVdEwApRxVM9xpkHWCRlhZh8XIt4QzSa70a07zt1GQv7r8m6eRm/nGx61AKEgMXS9KHDnYpjJfkOUdV1GLVTiYefVPFWxGNXoyhwFrl/NRNISfdjvLOacbEIrlAtCl/uoOG4Wk4mjR6HCSL09DvC7+xOx2ZJoak76wsRafjgENLQvVjcxd0I7B/SYninHmUpmk3xu7o7wNG/jkXDrzwYNPZsW02xGsTA6pTz6aVDhBqpbzlFXmvZwjpYnL++8ruClMJDncW8l0z3w==",
        "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 \"Matan Azrad\" <matan@nvidia.com>",
        "CC": "<dev@dpdk.org>, <orika@nvidia.com>",
        "Subject": "[v1 09/16] net/mlx5/hws: support range match",
        "Date": "Tue, 31 Jan 2023 11:33:38 +0200",
        "Message-ID": "<20230131093346.1261066-10-valex@nvidia.com>",
        "X-Mailer": "git-send-email 2.27.0",
        "In-Reply-To": "<20230131093346.1261066-1-valex@nvidia.com>",
        "References": "<20230131093346.1261066-1-valex@nvidia.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.126.231.37]",
        "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": "CO1NAM11FT047:EE_|CH0PR12MB8464:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "d0b2ae6a-545c-4a30-2acc-08db036e65e0",
        "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 HTzKFITDtm/DsesbMNWLWpiVN6syevi+L+/sJD5oZsruGs24GIiM2aYYGk4PCVwx2tG00yoUd1WMdfK+omelhBXbeJUrHvtw+truZbjdEdLeCNhhU6DRKfa4fePTy13gtSl2AETjxJqh9v0+URZO7fnAGELcq81cNaLH4aGASJMoHLmzKJEKzuhgfxhMibmJ/X8d4YsyjjY2oNH78h2KFhNokEDPk5ufzfa0d+yhybHHDttHyrjMqVVVDW6Msb0PFYRDYETYHZ7M787BNNOoAwVQSzbgeQYfc5lSf+ehvVvIfgKNNr6gLrONQjBrZRC501xtI0XrvC5AkLY7moj2j7nbksj3ex0o0gjeItCOJnTgVv5dc6Bzb1c1iouoRuF/hFs4pqmK/n3D34RQ05UbMWcFi0n1iLg3b3dTh2aAe1pWClYt4x7a/HxXQg6qKCTxtVXbnT6vAq1wgw69lTdnt6bY+VnXKxt3KqrljFDvjNBO3fZocPZneNTeRyZruAkIAtWdhEJhliBUOC1xFhK12t0SRR6kMoDPIUTMxpe4b4vT5VUuhsuuWopMFeJJUamE+mfQL4840jrNiodNOCU6us4Mhj13BQOZ999bN6iawoNMTPELWpe0h/91oz+PhS4UNmU+wE+82Fj98yu6LewIYEC7TdsiyXD/Jb+Ha1o/ZZiY19PBQCgddv3NY5OeO1KtdNHWgR01MS3tobbbQ5be/Q==",
        "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:(13230025)(4636009)(376002)(346002)(39860400002)(136003)(396003)(451199018)(40470700004)(36840700001)(46966006)(83380400001)(7696005)(36756003)(40460700003)(356005)(86362001)(55016003)(40480700001)(82740400003)(36860700001)(7636003)(26005)(336012)(186003)(2616005)(16526019)(6286002)(82310400005)(47076005)(426003)(1076003)(478600001)(54906003)(6636002)(316002)(110136005)(107886003)(6666004)(70586007)(70206006)(41300700001)(8936002)(5660300002)(8676002)(4326008)(2906002);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "31 Jan 2023 09:34:49.1814 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n d0b2ae6a-545c-4a30-2acc-08db036e65e0",
        "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 CO1NAM11FT047.eop-nam11.prod.protection.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CH0PR12MB8464",
        "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": "Support range matching over selected items and range\nis not supported over all the items. The range match\nis done using:\nitem->last.field - maximum value\nitem->mask.field - bitmask\nitem->spec.field - minimum value\n\nWhen items are processed if item last and mask fields are\nnon zero range matching will be done over these fields.\nThere are two field setter, field copy (fc) and field copy\nrange (fcr).\n\nSigned-off-by: Alex Vesker <valex@nvidia.com>\n---\n drivers/net/mlx5/hws/mlx5dr_definer.c | 73 +++++++++++++++++++++++++--\n drivers/net/mlx5/hws/mlx5dr_definer.h |  5 +-\n 2 files changed, 72 insertions(+), 6 deletions(-)",
    "diff": "diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.c b/drivers/net/mlx5/hws/mlx5dr_definer.c\nindex 6b98eb8c96..c268f94ad3 100644\n--- a/drivers/net/mlx5/hws/mlx5dr_definer.c\n+++ b/drivers/net/mlx5/hws/mlx5dr_definer.c\n@@ -123,6 +123,7 @@ struct mlx5dr_definer_conv_data {\n \tX(SET,\t\tipv4_next_proto,\tv->next_proto_id,\trte_ipv4_hdr) \\\n \tX(SET,\t\tipv4_version,\t\tSTE_IPV4,\t\trte_ipv4_hdr) \\\n \tX(SET_BE16,\tipv4_frag,\t\tv->fragment_offset,\trte_ipv4_hdr) \\\n+\tX(SET_BE16,\tipv4_len,\t\tv->total_length,\trte_ipv4_hdr) \\\n \tX(SET_BE16,\tipv6_payload_len,\tv->hdr.payload_len,\trte_flow_item_ipv6) \\\n \tX(SET,\t\tipv6_proto,\t\tv->hdr.proto,\t\trte_flow_item_ipv6) \\\n \tX(SET,\t\tipv6_hop_limits,\tv->hdr.hop_limits,\trte_flow_item_ipv6) \\\n@@ -516,6 +517,7 @@ mlx5dr_definer_conv_item_ipv4(struct mlx5dr_definer_conv_data *cd,\n \t\t\t      int item_idx)\n {\n \tconst struct rte_ipv4_hdr *m = item->mask;\n+\tconst struct rte_ipv4_hdr *l = item->last;\n \tstruct mlx5dr_definer_fc *fc;\n \tbool inner = cd->tunnel;\n \n@@ -533,8 +535,8 @@ mlx5dr_definer_conv_item_ipv4(struct mlx5dr_definer_conv_data *cd,\n \tif (!m)\n \t\treturn 0;\n \n-\tif (m->total_length || m->packet_id ||\n-\t    m->hdr_checksum) {\n+\tif (m->packet_id || m->hdr_checksum ||\n+\t    (l && (l->next_proto_id || l->type_of_service))) {\n \t\trte_errno = ENOTSUP;\n \t\treturn rte_errno;\n \t}\n@@ -553,9 +555,18 @@ mlx5dr_definer_conv_item_ipv4(struct mlx5dr_definer_conv_data *cd,\n \t\tDR_CALC_SET(fc, eth_l3, protocol_next_header, inner);\n \t}\n \n+\tif (m->total_length) {\n+\t\tfc = &cd->fc[DR_CALC_FNAME(IP_LEN, inner)];\n+\t\tfc->item_idx = item_idx;\n+\t\tfc->is_range = l && l->total_length;\n+\t\tfc->tag_set = &mlx5dr_definer_ipv4_len_set;\n+\t\tDR_CALC_SET(fc, eth_l3, ipv4_total_length, inner);\n+\t}\n+\n \tif (m->dst_addr) {\n \t\tfc = &cd->fc[DR_CALC_FNAME(IPV4_DST, inner)];\n \t\tfc->item_idx = item_idx;\n+\t\tfc->is_range = l && l->dst_addr;\n \t\tfc->tag_set = &mlx5dr_definer_ipv4_dst_addr_set;\n \t\tDR_CALC_SET(fc, ipv4_src_dest, destination_address, inner);\n \t}\n@@ -563,6 +574,7 @@ mlx5dr_definer_conv_item_ipv4(struct mlx5dr_definer_conv_data *cd,\n \tif (m->src_addr) {\n \t\tfc = &cd->fc[DR_CALC_FNAME(IPV4_SRC, inner)];\n \t\tfc->item_idx = item_idx;\n+\t\tfc->is_range = l && l->src_addr;\n \t\tfc->tag_set = &mlx5dr_definer_ipv4_src_addr_set;\n \t\tDR_CALC_SET(fc, ipv4_src_dest, source_address, inner);\n \t}\n@@ -570,6 +582,7 @@ mlx5dr_definer_conv_item_ipv4(struct mlx5dr_definer_conv_data *cd,\n \tif (m->ihl) {\n \t\tfc = &cd->fc[DR_CALC_FNAME(IPV4_IHL, inner)];\n \t\tfc->item_idx = item_idx;\n+\t\tfc->is_range = l && l->ihl;\n \t\tfc->tag_set = &mlx5dr_definer_ipv4_ihl_set;\n \t\tDR_CALC_SET(fc, eth_l3, ihl, inner);\n \t}\n@@ -577,6 +590,7 @@ mlx5dr_definer_conv_item_ipv4(struct mlx5dr_definer_conv_data *cd,\n \tif (m->time_to_live) {\n \t\tfc = &cd->fc[DR_CALC_FNAME(IP_TTL, inner)];\n \t\tfc->item_idx = item_idx;\n+\t\tfc->is_range = l && l->time_to_live;\n \t\tfc->tag_set = &mlx5dr_definer_ipv4_time_to_live_set;\n \t\tDR_CALC_SET(fc, eth_l3, time_to_live_hop_limit, inner);\n \t}\n@@ -597,6 +611,7 @@ mlx5dr_definer_conv_item_ipv6(struct mlx5dr_definer_conv_data *cd,\n \t\t\t      int item_idx)\n {\n \tconst struct rte_flow_item_ipv6 *m = item->mask;\n+\tconst struct rte_flow_item_ipv6 *l = item->last;\n \tstruct mlx5dr_definer_fc *fc;\n \tbool inner = cd->tunnel;\n \n@@ -616,7 +631,10 @@ mlx5dr_definer_conv_item_ipv6(struct mlx5dr_definer_conv_data *cd,\n \n \tif (m->has_hop_ext || m->has_route_ext || m->has_auth_ext ||\n \t    m->has_esp_ext || m->has_dest_ext || m->has_mobil_ext ||\n-\t    m->has_hip_ext || m->has_shim6_ext) {\n+\t    m->has_hip_ext || m->has_shim6_ext ||\n+\t    (l && (l->has_frag_ext || l->hdr.vtc_flow || l->hdr.proto ||\n+\t\t   !is_mem_zero(l->hdr.src_addr, 16) ||\n+\t\t   !is_mem_zero(l->hdr.dst_addr, 16)))) {\n \t\trte_errno = ENOTSUP;\n \t\treturn rte_errno;\n \t}\n@@ -643,8 +661,9 @@ mlx5dr_definer_conv_item_ipv6(struct mlx5dr_definer_conv_data *cd,\n \t}\n \n \tif (m->hdr.payload_len) {\n-\t\tfc = &cd->fc[DR_CALC_FNAME(IPV6_PAYLOAD_LEN, inner)];\n+\t\tfc = &cd->fc[DR_CALC_FNAME(IP_LEN, inner)];\n \t\tfc->item_idx = item_idx;\n+\t\tfc->is_range = l && l->hdr.payload_len;\n \t\tfc->tag_set = &mlx5dr_definer_ipv6_payload_len_set;\n \t\tDR_CALC_SET(fc, eth_l3, ipv6_payload_length, inner);\n \t}\n@@ -659,6 +678,7 @@ mlx5dr_definer_conv_item_ipv6(struct mlx5dr_definer_conv_data *cd,\n \tif (m->hdr.hop_limits) {\n \t\tfc = &cd->fc[DR_CALC_FNAME(IP_TTL, inner)];\n \t\tfc->item_idx = item_idx;\n+\t\tfc->is_range = l && l->hdr.hop_limits;\n \t\tfc->tag_set = &mlx5dr_definer_ipv6_hop_limits_set;\n \t\tDR_CALC_SET(fc, eth_l3, time_to_live_hop_limit, inner);\n \t}\n@@ -728,6 +748,7 @@ mlx5dr_definer_conv_item_udp(struct mlx5dr_definer_conv_data *cd,\n \t\t\t     int item_idx)\n {\n \tconst struct rte_flow_item_udp *m = item->mask;\n+\tconst struct rte_flow_item_udp *l = item->last;\n \tstruct mlx5dr_definer_fc *fc;\n \tbool inner = cd->tunnel;\n \n@@ -751,6 +772,7 @@ mlx5dr_definer_conv_item_udp(struct mlx5dr_definer_conv_data *cd,\n \tif (m->hdr.src_port) {\n \t\tfc = &cd->fc[DR_CALC_FNAME(L4_SPORT, inner)];\n \t\tfc->item_idx = item_idx;\n+\t\tfc->is_range = l && l->hdr.src_port;\n \t\tfc->tag_set = &mlx5dr_definer_udp_src_port_set;\n \t\tDR_CALC_SET(fc, eth_l4, source_port, inner);\n \t}\n@@ -758,6 +780,7 @@ mlx5dr_definer_conv_item_udp(struct mlx5dr_definer_conv_data *cd,\n \tif (m->hdr.dst_port) {\n \t\tfc = &cd->fc[DR_CALC_FNAME(L4_DPORT, inner)];\n \t\tfc->item_idx = item_idx;\n+\t\tfc->is_range = l && l->hdr.dst_port;\n \t\tfc->tag_set = &mlx5dr_definer_udp_dst_port_set;\n \t\tDR_CALC_SET(fc, eth_l4, destination_port, inner);\n \t}\n@@ -771,6 +794,7 @@ mlx5dr_definer_conv_item_tcp(struct mlx5dr_definer_conv_data *cd,\n \t\t\t     int item_idx)\n {\n \tconst struct rte_flow_item_tcp *m = item->mask;\n+\tconst struct rte_flow_item_tcp *l = item->last;\n \tstruct mlx5dr_definer_fc *fc;\n \tbool inner = cd->tunnel;\n \n@@ -786,9 +810,16 @@ mlx5dr_definer_conv_item_tcp(struct mlx5dr_definer_conv_data *cd,\n \tif (!m)\n \t\treturn 0;\n \n+\tif (m->hdr.sent_seq || m->hdr.recv_ack || m->hdr.data_off ||\n+\t    m->hdr.rx_win || m->hdr.cksum || m->hdr.tcp_urp) {\n+\t\trte_errno = ENOTSUP;\n+\t\treturn rte_errno;\n+\t}\n+\n \tif (m->hdr.tcp_flags) {\n \t\tfc = &cd->fc[DR_CALC_FNAME(TCP_FLAGS, inner)];\n \t\tfc->item_idx = item_idx;\n+\t\tfc->is_range = l && l->hdr.tcp_flags;\n \t\tfc->tag_set = &mlx5dr_definer_tcp_flags_set;\n \t\tDR_CALC_SET(fc, eth_l4, tcp_flags, inner);\n \t}\n@@ -796,6 +827,7 @@ mlx5dr_definer_conv_item_tcp(struct mlx5dr_definer_conv_data *cd,\n \tif (m->hdr.src_port) {\n \t\tfc = &cd->fc[DR_CALC_FNAME(L4_SPORT, inner)];\n \t\tfc->item_idx = item_idx;\n+\t\tfc->is_range = l && l->hdr.src_port;\n \t\tfc->tag_set = &mlx5dr_definer_tcp_src_port_set;\n \t\tDR_CALC_SET(fc, eth_l4, source_port, inner);\n \t}\n@@ -803,6 +835,7 @@ mlx5dr_definer_conv_item_tcp(struct mlx5dr_definer_conv_data *cd,\n \tif (m->hdr.dst_port) {\n \t\tfc = &cd->fc[DR_CALC_FNAME(L4_DPORT, inner)];\n \t\tfc->item_idx = item_idx;\n+\t\tfc->is_range = l && l->hdr.dst_port;\n \t\tfc->tag_set = &mlx5dr_definer_tcp_dst_port_set;\n \t\tDR_CALC_SET(fc, eth_l4, destination_port, inner);\n \t}\n@@ -1108,6 +1141,7 @@ mlx5dr_definer_conv_item_tag(struct mlx5dr_definer_conv_data *cd,\n {\n \tconst struct rte_flow_item_tag *m = item->mask;\n \tconst struct rte_flow_item_tag *v = item->spec;\n+\tconst struct rte_flow_item_tag *l = item->last;\n \tstruct mlx5dr_definer_fc *fc;\n \tint reg;\n \n@@ -1130,7 +1164,9 @@ mlx5dr_definer_conv_item_tag(struct mlx5dr_definer_conv_data *cd,\n \t\treturn rte_errno;\n \n \tfc->item_idx = item_idx;\n+\tfc->is_range = l && l->index;\n \tfc->tag_set = &mlx5dr_definer_tag_set;\n+\n \treturn 0;\n }\n \n@@ -1140,6 +1176,7 @@ mlx5dr_definer_conv_item_metadata(struct mlx5dr_definer_conv_data *cd,\n \t\t\t\t  int item_idx)\n {\n \tconst struct rte_flow_item_meta *m = item->mask;\n+\tconst struct rte_flow_item_meta *l = item->last;\n \tstruct mlx5dr_definer_fc *fc;\n \tint reg;\n \n@@ -1158,7 +1195,9 @@ mlx5dr_definer_conv_item_metadata(struct mlx5dr_definer_conv_data *cd,\n \t\treturn rte_errno;\n \n \tfc->item_idx = item_idx;\n+\tfc->is_range = l && l->data;\n \tfc->tag_set = &mlx5dr_definer_metadata_set;\n+\n \treturn 0;\n }\n \n@@ -1465,6 +1504,28 @@ mlx5dr_definer_conv_item_meter_color(struct mlx5dr_definer_conv_data *cd,\n \treturn 0;\n }\n \n+static int\n+mlx5dr_definer_check_item_range_supp(struct rte_flow_item *item)\n+{\n+\tif (!item->last)\n+\t\treturn 0;\n+\n+\tswitch ((int)item->type) {\n+\tcase RTE_FLOW_ITEM_TYPE_IPV4:\n+\tcase RTE_FLOW_ITEM_TYPE_IPV6:\n+\tcase RTE_FLOW_ITEM_TYPE_UDP:\n+\tcase RTE_FLOW_ITEM_TYPE_TCP:\n+\tcase RTE_FLOW_ITEM_TYPE_TAG:\n+\tcase RTE_FLOW_ITEM_TYPE_META:\n+\tcase MLX5_RTE_FLOW_ITEM_TYPE_TAG:\n+\t\treturn 0;\n+\tdefault:\n+\t\tDR_LOG(ERR, \"Range not supported over item type %d\", item->type);\n+\t\trte_errno = ENOTSUP;\n+\t\treturn rte_errno;\n+\t}\n+}\n+\n static int\n mlx5dr_definer_conv_items_to_hl(struct mlx5dr_context *ctx,\n \t\t\t\tstruct mlx5dr_match_template *mt,\n@@ -1487,6 +1548,10 @@ mlx5dr_definer_conv_items_to_hl(struct mlx5dr_context *ctx,\n \tfor (i = 0; items->type != RTE_FLOW_ITEM_TYPE_END; i++, items++) {\n \t\tcd.tunnel = !!(item_flags & MLX5_FLOW_LAYER_TUNNEL);\n \n+\t\tret = mlx5dr_definer_check_item_range_supp(items);\n+\t\tif (ret)\n+\t\t\treturn ret;\n+\n \t\tswitch ((int)items->type) {\n \t\tcase RTE_FLOW_ITEM_TYPE_ETH:\n \t\t\tret = mlx5dr_definer_conv_item_eth(&cd, items, i);\ndiff --git a/drivers/net/mlx5/hws/mlx5dr_definer.h b/drivers/net/mlx5/hws/mlx5dr_definer.h\nindex d52c6b0627..bab4baae4a 100644\n--- a/drivers/net/mlx5/hws/mlx5dr_definer.h\n+++ b/drivers/net/mlx5/hws/mlx5dr_definer.h\n@@ -38,8 +38,8 @@ enum mlx5dr_definer_fname {\n \tMLX5DR_DEFINER_FNAME_IP_VERSION_I,\n \tMLX5DR_DEFINER_FNAME_IP_FRAG_O,\n \tMLX5DR_DEFINER_FNAME_IP_FRAG_I,\n-\tMLX5DR_DEFINER_FNAME_IPV6_PAYLOAD_LEN_O,\n-\tMLX5DR_DEFINER_FNAME_IPV6_PAYLOAD_LEN_I,\n+\tMLX5DR_DEFINER_FNAME_IP_LEN_O,\n+\tMLX5DR_DEFINER_FNAME_IP_LEN_I,\n \tMLX5DR_DEFINER_FNAME_IP_TOS_O,\n \tMLX5DR_DEFINER_FNAME_IP_TOS_I,\n \tMLX5DR_DEFINER_FNAME_IPV6_FLOW_LABEL_O,\n@@ -116,6 +116,7 @@ enum mlx5dr_definer_type {\n \n struct mlx5dr_definer_fc {\n \tuint8_t item_idx;\n+\tuint8_t is_range;\n \tuint32_t byte_off;\n \tint bit_off;\n \tuint32_t bit_mask;\n",
    "prefixes": [
        "v1",
        "09/16"
    ]
}