From patchwork Wed Feb 1 07:28:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Vesker X-Patchwork-Id: 122788 X-Patchwork-Delegate: rasland@nvidia.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 244F241B9B; Wed, 1 Feb 2023 08:30:13 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A156342D6C; Wed, 1 Feb 2023 08:29:17 +0100 (CET) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2058.outbound.protection.outlook.com [40.107.223.58]) by mails.dpdk.org (Postfix) with ESMTP id 0CB6642D48 for ; Wed, 1 Feb 2023 08:29:16 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CR/NzcFs4S71Nk5+G8ACpbPBXDD6yjwSN1f6c2kZAeH/+KrKo6vy+IHJIvyXCJbqR6b0LpHTPzsm7bSaA+n2i8Jk4MX3WXcyki3/moOpPMnzbnRUMFKJ/6EwjPjyNxzQUTuJJ174+T1uTQApnupbZiJklV4+FIGy/IbLf9XNPk5L2K5S19gIHqFisLzywJ0xSGXLeUeYuo0XDN4RbKx8uVWOzvftp1rQ9YFY6UY9Vxh1GkqYrJgYkESWwsZPaUh25V7EdGCji2wnCvtjnwXtrEzrs4SrV8n7ZmUyEgOEuEpbSnvVPFiz8AauyxlqnHFifYnLYCyDPt8xUOxiRbLBWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=vPZB4J4RIXEdmv7nEgvDvcunhy8DyC2OnnyVg9rkNpI=; b=niMv9pZy+281ID5LBMznx92fpTVxis+SQoCFGZRqX2KQpBc9WmURYP8T3GSmXeQAEv4IgYrv0eoQGMAISwO5wSShh1PEqsG2NR3M6Vni5WVDMDk9PQp+SoAK0gJ/OJ+97ZG0A5f5aKNobINpGJh+ZFsKtCxM9SuSmgT8+OakkZjE40pjHOL0Dky9r+5wOiJdukPx5RYKoPC4faqZGr+kNRD9LQrno01NoumhUmFcQZcytCUYdTqQtl23BbdVkOCEJauhqQ8BEEJQfWgTQxlnuRA59ZHcvp+a5J+bG0neva+fiEaBL/mVlY78KcyrJY9jLEEtCmKmy/GlW3UBNdu9jA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=monjalon.net smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vPZB4J4RIXEdmv7nEgvDvcunhy8DyC2OnnyVg9rkNpI=; b=e3z7Kevd1XwjyIos2XhvNYhnTFO0Fz/A3KQTNwl3rFfh2Uhi4yXJyM+7gxDtIlRSA+Es1M0Ct9LruJowfss9GuL+3Eo4O/jTatVjf6Sbtt+nb3RGTmVc9N8KM+9S06VLIz5uxV7sYSCfkUnrJ6H1GUeyVa2zztrfX99LQ9M1xpLjTak0lPgavcmj++JMf/PeG1waQzEx0j0yhSZTU8of+0fv7dwZy4rz0yTYyAfnlaY1W0/nw3/hHAIhTqCSr0edUY48TMU3J1v4uZcWaOl9BU5fga9ARjSiww6lL7PwsZb9qbnAQNl1u7Irl/cltzhS1phmS2vqTYTpk/vv7qVJAg== Received: from BN8PR04CA0030.namprd04.prod.outlook.com (2603:10b6:408:70::43) by PH0PR12MB8126.namprd12.prod.outlook.com (2603:10b6:510:299::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.38; Wed, 1 Feb 2023 07:29:14 +0000 Received: from BN8NAM11FT023.eop-nam11.prod.protection.outlook.com (2603:10b6:408:70:cafe::7d) by BN8PR04CA0030.outlook.office365.com (2603:10b6:408:70::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.25 via Frontend Transport; Wed, 1 Feb 2023 07:29:14 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by BN8NAM11FT023.mail.protection.outlook.com (10.13.177.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.22 via Frontend Transport; Wed, 1 Feb 2023 07:29:13 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Tue, 31 Jan 2023 23:28:59 -0800 Received: from nvidia.com (10.126.230.37) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Tue, 31 Jan 2023 23:28:57 -0800 From: Alex Vesker To: , , , "Matan Azrad" CC: , Subject: [v2 09/16] net/mlx5/hws: support range match Date: Wed, 1 Feb 2023 09:28:08 +0200 Message-ID: <20230201072815.1329101-10-valex@nvidia.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230201072815.1329101-1-valex@nvidia.com> References: <20230131093346.1261066-1-valex@nvidia.com> <20230201072815.1329101-1-valex@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.230.37] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT023:EE_|PH0PR12MB8126:EE_ X-MS-Office365-Filtering-Correlation-Id: 7eeed73c-92de-443f-5669-08db042604d4 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: WzZaDO5F8Av2qx9X3ICuiMzs/5DYTVjYNTZW0piBGWSU1FGb4Zng2TxOzxe/NdgdjOlbYeLyXS6/qkKC7XqzJCZFzaKS6fQ+0JdbEj21LOCB+2p/x49ThP487r8q9pO9U2nEXeZGceirBB3xJW6r/rl6W4vd6osrWMGODS9JrGNZ9YWkyho4k0sRZVqe6wFpuNVvG5NHxgqNX9wXLafdeQr4Mf0SWxB2b7H9lG6UtPqbiMh0haJa8IAoAAJ1O8ZhKOV3uLf+0x/zO0sKTYBG/+R3QsB5LhsZPnfN8C+odqhjOhLHgVjhKKTxpY6+cg1X6/F49kpK/xQ3kwzO/5AbnfA+yvn5bS60NtWCwsSh/0Uc3Gftir8D2evUrznBl8DlOQY7ZsZaVvVC9Dh7pdFPoUZtkN5BvkXcG56/thEu19ISi2rJhobvRt/d1XhAav5+qEv87bgBy4GuHKhlP+Q+Dtk+a9YJe3ch/9UAopOap/pn7gn0LbO5qUZVdknh9xnhGUkVkS1C6i1Q0rJix1c58xV8UXiRAUMA57rOvLdMUwOzXU3Bo3llVhjcMfxdtLqAB8npQ6QZnsLH965JP6/oFLD8KRap0s7QwYHz8leVbs+ENFC5oZr31F6vJyqpX1NZCPFTZOF9toTcow3PrNtyOckkWHe1WJBDazEZszAM2oZuAcmhJXqt9FZQHJiVEWFWe5GwY6LU4AlNFea0xs4Zfw== X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230025)(4636009)(39860400002)(396003)(136003)(376002)(346002)(451199018)(46966006)(40470700004)(36840700001)(186003)(16526019)(5660300002)(6636002)(110136005)(26005)(54906003)(2616005)(6286002)(86362001)(40480700001)(55016003)(478600001)(2906002)(40460700003)(7696005)(36756003)(6666004)(107886003)(1076003)(36860700001)(4326008)(356005)(70586007)(7636003)(82740400003)(82310400005)(426003)(336012)(83380400001)(316002)(70206006)(47076005)(8676002)(8936002)(41300700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Feb 2023 07:29:13.7319 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7eeed73c-92de-443f-5669-08db042604d4 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT023.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB8126 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 Support range matching over selected items and range is not supported over all the items. The range match is done using: item->last.field - maximum value item->mask.field - bitmask item->spec.field - minimum value When items are processed if item last and mask fields are non zero range matching will be done over these fields. There are two field setter, field copy (fc) and field copy range (fcr). Signed-off-by: Alex Vesker --- drivers/net/mlx5/hws/mlx5dr_definer.c | 73 +++++++++++++++++++++++++-- drivers/net/mlx5/hws/mlx5dr_definer.h | 5 +- 2 files changed, 72 insertions(+), 6 deletions(-) diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.c b/drivers/net/mlx5/hws/mlx5dr_definer.c index 6b98eb8c96..c268f94ad3 100644 --- a/drivers/net/mlx5/hws/mlx5dr_definer.c +++ b/drivers/net/mlx5/hws/mlx5dr_definer.c @@ -123,6 +123,7 @@ struct mlx5dr_definer_conv_data { X(SET, ipv4_next_proto, v->next_proto_id, rte_ipv4_hdr) \ X(SET, ipv4_version, STE_IPV4, rte_ipv4_hdr) \ X(SET_BE16, ipv4_frag, v->fragment_offset, rte_ipv4_hdr) \ + X(SET_BE16, ipv4_len, v->total_length, rte_ipv4_hdr) \ X(SET_BE16, ipv6_payload_len, v->hdr.payload_len, rte_flow_item_ipv6) \ X(SET, ipv6_proto, v->hdr.proto, rte_flow_item_ipv6) \ X(SET, ipv6_hop_limits, v->hdr.hop_limits, rte_flow_item_ipv6) \ @@ -516,6 +517,7 @@ mlx5dr_definer_conv_item_ipv4(struct mlx5dr_definer_conv_data *cd, int item_idx) { const struct rte_ipv4_hdr *m = item->mask; + const struct rte_ipv4_hdr *l = item->last; struct mlx5dr_definer_fc *fc; bool inner = cd->tunnel; @@ -533,8 +535,8 @@ mlx5dr_definer_conv_item_ipv4(struct mlx5dr_definer_conv_data *cd, if (!m) return 0; - if (m->total_length || m->packet_id || - m->hdr_checksum) { + if (m->packet_id || m->hdr_checksum || + (l && (l->next_proto_id || l->type_of_service))) { rte_errno = ENOTSUP; return rte_errno; } @@ -553,9 +555,18 @@ mlx5dr_definer_conv_item_ipv4(struct mlx5dr_definer_conv_data *cd, DR_CALC_SET(fc, eth_l3, protocol_next_header, inner); } + if (m->total_length) { + fc = &cd->fc[DR_CALC_FNAME(IP_LEN, inner)]; + fc->item_idx = item_idx; + fc->is_range = l && l->total_length; + fc->tag_set = &mlx5dr_definer_ipv4_len_set; + DR_CALC_SET(fc, eth_l3, ipv4_total_length, inner); + } + if (m->dst_addr) { fc = &cd->fc[DR_CALC_FNAME(IPV4_DST, inner)]; fc->item_idx = item_idx; + fc->is_range = l && l->dst_addr; fc->tag_set = &mlx5dr_definer_ipv4_dst_addr_set; DR_CALC_SET(fc, ipv4_src_dest, destination_address, inner); } @@ -563,6 +574,7 @@ mlx5dr_definer_conv_item_ipv4(struct mlx5dr_definer_conv_data *cd, if (m->src_addr) { fc = &cd->fc[DR_CALC_FNAME(IPV4_SRC, inner)]; fc->item_idx = item_idx; + fc->is_range = l && l->src_addr; fc->tag_set = &mlx5dr_definer_ipv4_src_addr_set; DR_CALC_SET(fc, ipv4_src_dest, source_address, inner); } @@ -570,6 +582,7 @@ mlx5dr_definer_conv_item_ipv4(struct mlx5dr_definer_conv_data *cd, if (m->ihl) { fc = &cd->fc[DR_CALC_FNAME(IPV4_IHL, inner)]; fc->item_idx = item_idx; + fc->is_range = l && l->ihl; fc->tag_set = &mlx5dr_definer_ipv4_ihl_set; DR_CALC_SET(fc, eth_l3, ihl, inner); } @@ -577,6 +590,7 @@ mlx5dr_definer_conv_item_ipv4(struct mlx5dr_definer_conv_data *cd, if (m->time_to_live) { fc = &cd->fc[DR_CALC_FNAME(IP_TTL, inner)]; fc->item_idx = item_idx; + fc->is_range = l && l->time_to_live; fc->tag_set = &mlx5dr_definer_ipv4_time_to_live_set; DR_CALC_SET(fc, eth_l3, time_to_live_hop_limit, inner); } @@ -597,6 +611,7 @@ mlx5dr_definer_conv_item_ipv6(struct mlx5dr_definer_conv_data *cd, int item_idx) { const struct rte_flow_item_ipv6 *m = item->mask; + const struct rte_flow_item_ipv6 *l = item->last; struct mlx5dr_definer_fc *fc; bool inner = cd->tunnel; @@ -616,7 +631,10 @@ mlx5dr_definer_conv_item_ipv6(struct mlx5dr_definer_conv_data *cd, if (m->has_hop_ext || m->has_route_ext || m->has_auth_ext || m->has_esp_ext || m->has_dest_ext || m->has_mobil_ext || - m->has_hip_ext || m->has_shim6_ext) { + m->has_hip_ext || m->has_shim6_ext || + (l && (l->has_frag_ext || l->hdr.vtc_flow || l->hdr.proto || + !is_mem_zero(l->hdr.src_addr, 16) || + !is_mem_zero(l->hdr.dst_addr, 16)))) { rte_errno = ENOTSUP; return rte_errno; } @@ -643,8 +661,9 @@ mlx5dr_definer_conv_item_ipv6(struct mlx5dr_definer_conv_data *cd, } if (m->hdr.payload_len) { - fc = &cd->fc[DR_CALC_FNAME(IPV6_PAYLOAD_LEN, inner)]; + fc = &cd->fc[DR_CALC_FNAME(IP_LEN, inner)]; fc->item_idx = item_idx; + fc->is_range = l && l->hdr.payload_len; fc->tag_set = &mlx5dr_definer_ipv6_payload_len_set; DR_CALC_SET(fc, eth_l3, ipv6_payload_length, inner); } @@ -659,6 +678,7 @@ mlx5dr_definer_conv_item_ipv6(struct mlx5dr_definer_conv_data *cd, if (m->hdr.hop_limits) { fc = &cd->fc[DR_CALC_FNAME(IP_TTL, inner)]; fc->item_idx = item_idx; + fc->is_range = l && l->hdr.hop_limits; fc->tag_set = &mlx5dr_definer_ipv6_hop_limits_set; DR_CALC_SET(fc, eth_l3, time_to_live_hop_limit, inner); } @@ -728,6 +748,7 @@ mlx5dr_definer_conv_item_udp(struct mlx5dr_definer_conv_data *cd, int item_idx) { const struct rte_flow_item_udp *m = item->mask; + const struct rte_flow_item_udp *l = item->last; struct mlx5dr_definer_fc *fc; bool inner = cd->tunnel; @@ -751,6 +772,7 @@ mlx5dr_definer_conv_item_udp(struct mlx5dr_definer_conv_data *cd, if (m->hdr.src_port) { fc = &cd->fc[DR_CALC_FNAME(L4_SPORT, inner)]; fc->item_idx = item_idx; + fc->is_range = l && l->hdr.src_port; fc->tag_set = &mlx5dr_definer_udp_src_port_set; DR_CALC_SET(fc, eth_l4, source_port, inner); } @@ -758,6 +780,7 @@ mlx5dr_definer_conv_item_udp(struct mlx5dr_definer_conv_data *cd, if (m->hdr.dst_port) { fc = &cd->fc[DR_CALC_FNAME(L4_DPORT, inner)]; fc->item_idx = item_idx; + fc->is_range = l && l->hdr.dst_port; fc->tag_set = &mlx5dr_definer_udp_dst_port_set; DR_CALC_SET(fc, eth_l4, destination_port, inner); } @@ -771,6 +794,7 @@ mlx5dr_definer_conv_item_tcp(struct mlx5dr_definer_conv_data *cd, int item_idx) { const struct rte_flow_item_tcp *m = item->mask; + const struct rte_flow_item_tcp *l = item->last; struct mlx5dr_definer_fc *fc; bool inner = cd->tunnel; @@ -786,9 +810,16 @@ mlx5dr_definer_conv_item_tcp(struct mlx5dr_definer_conv_data *cd, if (!m) return 0; + if (m->hdr.sent_seq || m->hdr.recv_ack || m->hdr.data_off || + m->hdr.rx_win || m->hdr.cksum || m->hdr.tcp_urp) { + rte_errno = ENOTSUP; + return rte_errno; + } + if (m->hdr.tcp_flags) { fc = &cd->fc[DR_CALC_FNAME(TCP_FLAGS, inner)]; fc->item_idx = item_idx; + fc->is_range = l && l->hdr.tcp_flags; fc->tag_set = &mlx5dr_definer_tcp_flags_set; DR_CALC_SET(fc, eth_l4, tcp_flags, inner); } @@ -796,6 +827,7 @@ mlx5dr_definer_conv_item_tcp(struct mlx5dr_definer_conv_data *cd, if (m->hdr.src_port) { fc = &cd->fc[DR_CALC_FNAME(L4_SPORT, inner)]; fc->item_idx = item_idx; + fc->is_range = l && l->hdr.src_port; fc->tag_set = &mlx5dr_definer_tcp_src_port_set; DR_CALC_SET(fc, eth_l4, source_port, inner); } @@ -803,6 +835,7 @@ mlx5dr_definer_conv_item_tcp(struct mlx5dr_definer_conv_data *cd, if (m->hdr.dst_port) { fc = &cd->fc[DR_CALC_FNAME(L4_DPORT, inner)]; fc->item_idx = item_idx; + fc->is_range = l && l->hdr.dst_port; fc->tag_set = &mlx5dr_definer_tcp_dst_port_set; DR_CALC_SET(fc, eth_l4, destination_port, inner); } @@ -1108,6 +1141,7 @@ mlx5dr_definer_conv_item_tag(struct mlx5dr_definer_conv_data *cd, { const struct rte_flow_item_tag *m = item->mask; const struct rte_flow_item_tag *v = item->spec; + const struct rte_flow_item_tag *l = item->last; struct mlx5dr_definer_fc *fc; int reg; @@ -1130,7 +1164,9 @@ mlx5dr_definer_conv_item_tag(struct mlx5dr_definer_conv_data *cd, return rte_errno; fc->item_idx = item_idx; + fc->is_range = l && l->index; fc->tag_set = &mlx5dr_definer_tag_set; + return 0; } @@ -1140,6 +1176,7 @@ mlx5dr_definer_conv_item_metadata(struct mlx5dr_definer_conv_data *cd, int item_idx) { const struct rte_flow_item_meta *m = item->mask; + const struct rte_flow_item_meta *l = item->last; struct mlx5dr_definer_fc *fc; int reg; @@ -1158,7 +1195,9 @@ mlx5dr_definer_conv_item_metadata(struct mlx5dr_definer_conv_data *cd, return rte_errno; fc->item_idx = item_idx; + fc->is_range = l && l->data; fc->tag_set = &mlx5dr_definer_metadata_set; + return 0; } @@ -1465,6 +1504,28 @@ mlx5dr_definer_conv_item_meter_color(struct mlx5dr_definer_conv_data *cd, return 0; } +static int +mlx5dr_definer_check_item_range_supp(struct rte_flow_item *item) +{ + if (!item->last) + return 0; + + switch ((int)item->type) { + case RTE_FLOW_ITEM_TYPE_IPV4: + case RTE_FLOW_ITEM_TYPE_IPV6: + case RTE_FLOW_ITEM_TYPE_UDP: + case RTE_FLOW_ITEM_TYPE_TCP: + case RTE_FLOW_ITEM_TYPE_TAG: + case RTE_FLOW_ITEM_TYPE_META: + case MLX5_RTE_FLOW_ITEM_TYPE_TAG: + return 0; + default: + DR_LOG(ERR, "Range not supported over item type %d", item->type); + rte_errno = ENOTSUP; + return rte_errno; + } +} + static int mlx5dr_definer_conv_items_to_hl(struct mlx5dr_context *ctx, struct mlx5dr_match_template *mt, @@ -1487,6 +1548,10 @@ mlx5dr_definer_conv_items_to_hl(struct mlx5dr_context *ctx, for (i = 0; items->type != RTE_FLOW_ITEM_TYPE_END; i++, items++) { cd.tunnel = !!(item_flags & MLX5_FLOW_LAYER_TUNNEL); + ret = mlx5dr_definer_check_item_range_supp(items); + if (ret) + return ret; + switch ((int)items->type) { case RTE_FLOW_ITEM_TYPE_ETH: ret = mlx5dr_definer_conv_item_eth(&cd, items, i); diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.h b/drivers/net/mlx5/hws/mlx5dr_definer.h index d52c6b0627..bab4baae4a 100644 --- a/drivers/net/mlx5/hws/mlx5dr_definer.h +++ b/drivers/net/mlx5/hws/mlx5dr_definer.h @@ -38,8 +38,8 @@ enum mlx5dr_definer_fname { MLX5DR_DEFINER_FNAME_IP_VERSION_I, MLX5DR_DEFINER_FNAME_IP_FRAG_O, MLX5DR_DEFINER_FNAME_IP_FRAG_I, - MLX5DR_DEFINER_FNAME_IPV6_PAYLOAD_LEN_O, - MLX5DR_DEFINER_FNAME_IPV6_PAYLOAD_LEN_I, + MLX5DR_DEFINER_FNAME_IP_LEN_O, + MLX5DR_DEFINER_FNAME_IP_LEN_I, MLX5DR_DEFINER_FNAME_IP_TOS_O, MLX5DR_DEFINER_FNAME_IP_TOS_I, MLX5DR_DEFINER_FNAME_IPV6_FLOW_LABEL_O, @@ -116,6 +116,7 @@ enum mlx5dr_definer_type { struct mlx5dr_definer_fc { uint8_t item_idx; + uint8_t is_range; uint32_t byte_off; int bit_off; uint32_t bit_mask;