From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4C8074285E for ; Wed, 29 Mar 2023 09:36:35 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2CEAB40F18; Wed, 29 Mar 2023 09:36:35 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2059.outbound.protection.outlook.com [40.107.223.59]) by mails.dpdk.org (Postfix) with ESMTP id 00C0140EE7 for ; Wed, 29 Mar 2023 09:36:33 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MDpjjXpyAS6xhF4sH2ODs0tBMifed92SShXjyUjQ986s0fRMxn+BKZEdas+AX0pwrUKPHy7O8FFdZWjYVnNr33mn0Pa9ObQ/q4EpybqLhOCyM10GRMYbj4MzqS++Vh2fKGNORODxcPfts/j8Q1XH8HtbGbfSIrXzZc9fnW1SczBi1tbjQ4twGaQkZeDWXdrEkZWYKyBgMilcr3txkizxhjJQJ2sWHnudZ53YbA5XKsVXBt2ME9JIUIuOvc8LQFyNc5o3J2pTafJkU7U9Qof2aZy8oQ6+3QxM1PDxWjb6hIfI6xs7n3b094ZvJs9PDQpv7Lxv5Kq3RligWsPr78hKwA== 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=j/CvRhFK4tpGc/KLXlyt3dYG6yJHr+I9MDZfbpJ6aMw=; b=aGxX0AN8huDWL+HoJ9Yo5bbXAVlSQ0hylZnplRv7JT5U4Mf4JKqWyfu4svDLve8e/CV4Jg2w7t3QdhMcJbmyupL5T5intwU4bSaAYVJ0YbkJpxVUhZZ7mHTSdf9UCgbJdvBC4GINqqpJPIKZpAGq+/WUcVnJiqA7V9iFbhMj/WAl+qd9QKGBxEgYUttn78udYlNqNdDtvNZEhq7CsPJRU6JHUxJLfuce2l1KoGVecweA41Km57trtnZyqPFmwA2dFtWF2CL5zghaZNsMCLZTKSF1TNU4zNACTBPbMd4dz8cZHczY2wbl/x2S5i05+7mweJPZrJgl1R0lhHtZCQxKmQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=dpdk.org 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=j/CvRhFK4tpGc/KLXlyt3dYG6yJHr+I9MDZfbpJ6aMw=; b=EICZk/vGqVA9/6VlCFH9NMFvkzS+VAAiKgjhhPFlKpLo78dB8IRaCqPJymD2EVf7BTGXZS9wP4CFYMKBk5V1pJ1ueh76ovYyjCsHC4p4HydjyOx6ZK8MeaSM7UYHGTg+h/Rm7khAGWba5qh552+bqpeYAbWMTaRI23LTPDrEVzgNpZQeotHUmVFslmC5mRElCegzHrsm/V4O19YRCTgVvSsLJEmJG7UKvMsC/j8UFP87+l5HEgJjl/z2TEdKCzCahFkcxlvBr59L4TFtzuJ0acUevrEzsnO7hg3qWpXh0E1hZFhqq21UXUX1y3jM/ZTuVXUxZOMn0xUWsszXMbyFuw== Received: from MN2PR19CA0038.namprd19.prod.outlook.com (2603:10b6:208:19b::15) by CY8PR12MB8214.namprd12.prod.outlook.com (2603:10b6:930:76::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.32; Wed, 29 Mar 2023 07:36:31 +0000 Received: from BL02EPF0000C409.namprd05.prod.outlook.com (2603:10b6:208:19b:cafe::f3) by MN2PR19CA0038.outlook.office365.com (2603:10b6:208:19b::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.20 via Frontend Transport; Wed, 29 Mar 2023 07:36:31 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) 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.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.232) by BL02EPF0000C409.mail.protection.outlook.com (10.167.241.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.26 via Frontend Transport; Wed, 29 Mar 2023 07:36:31 +0000 Received: from drhqmail203.nvidia.com (10.126.190.182) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Wed, 29 Mar 2023 00:36:16 -0700 Received: from drhqmail203.nvidia.com (10.126.190.182) by drhqmail203.nvidia.com (10.126.190.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Wed, 29 Mar 2023 00:36:16 -0700 Received: from nvidia.com (10.127.8.13) by mail.nvidia.com (10.126.190.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5 via Frontend Transport; Wed, 29 Mar 2023 00:36:14 -0700 From: Michael Baum To: CC: Aman Singh , Yuying Zhang , Luca Boccassi , Ori Kam , Ferruh Yigit Subject: [PATCH 20.11] app/testpmd: fix encap/decap size calculation Date: Wed, 29 Mar 2023 10:36:11 +0300 Message-ID: <20230329073611.2988740-1-michaelba@nvidia.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF0000C409:EE_|CY8PR12MB8214:EE_ X-MS-Office365-Filtering-Correlation-Id: 1d88c74f-0d2f-44e3-2765-08db302850b9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tsrQzdvyWB5g4TKYpJ54Lhx5Jq1Ptzg90w09mVx9xd5r0oWxJfn04zmsxQIp94V5zftkXNdTzc+8/uxH8YdS7SyGdqy82/OivjpKxWEh9Oy8gOXNvqAnbCKRN2RY5/0CbSvJ2YcmHg9JtxNL8Jpp6JrvTjD6nXhqCcHDAco6sQvX/Xxp5ziLuHFS7eZkdwRQPVnbGjXfejEYoxJx9lLu3KiMur3Q7aWQlt3zk5ufyz41aLaScG5EUGbLYJoXfrIcOgJUmmM1iFf18npbcY9cWZm0cyHk7b3Q0lw8L+XipaSoBKarckf0g3ByAX9K082meNPDUfWF32LGwnNN7z7x40WU3g0L7rOL1WOWJdTd3/mJWSPkYUn0n9jvi2OILwSVDWqXiK2yVO7CY2UAxirtlt+lZFMSjRkrfHpdOj8TT66pDwbkO1lkIwbWso1MfRzfYOixxMggnA9SgBdqkEC8+opPuXwdcMlFYV71oKHKnusg1YGMFY4SuZJn/SJO7uZmMBuNaZlDCsA1QzTiFLADevCetA/sQLw/b9FbJU1DXRa9nSrR4wbTHrT6uxuJrc8IsdCA/8fx89BQEFWgYQ5+zAcBW5JQGkczMh7XDO6QQtXb1iLcWiLtiEXTUTdrkb3oitcEVG33wdMPkYtCYyLbwdFk8H2ybzhp8uZgWerQ+cenfzPV3ZhWOwtJNKU4sGAMyNtg9aEZVH+7DjbnqCDF1l14uZebNXqJYyLzoz8gwBtqLDmEsMTnXoTJOns5gHk9 X-Forefront-Antispam-Report: CIP:216.228.118.232; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc7edge1.nvidia.com; CAT:NONE; SFS:(13230028)(4636009)(396003)(136003)(376002)(346002)(39860400002)(451199021)(46966006)(36840700001)(40470700004)(356005)(426003)(82310400005)(7696005)(55016003)(7636003)(8936002)(5660300002)(1076003)(36756003)(6286002)(186003)(2906002)(26005)(47076005)(6666004)(86362001)(40480700001)(36860700001)(2616005)(83380400001)(336012)(40460700003)(82740400003)(41300700001)(70206006)(316002)(70586007)(478600001)(6916009)(4326008)(8676002)(54906003); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2023 07:36:31.2318 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1d88c74f-0d2f-44e3-2765-08db302850b9 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.118.232]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BL02EPF0000C409.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8214 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org [ upstream commit 7bdf7a13ae34dd9c5d8a6aeef7019003dade6f83 ] Testpmd app has some functions to create either encap or decap buffer for some special cases: - "l2_encap" and "l2_decap" - "mplsogre_encap" and "mplsogre_decap" - "mplsoudp_encap" and "mplsoudp_decap" The functions use both "rte_flow_item_eth" and "rte_flow_item_vlan" structures to represent the headers and copy them into "raw_encap" action. The size of either "raw_encap" or "raw_decap" is calculated as sum of headers size. However, the both "rte_flow_item_eth" and "rte_flow_item_vlan" contain more fields than original headers, so using them cause bad size calculation. This patch uses "rte_ether_hdr" and "rte_vlan_hdr" structures for header size calculation. Fixes: 3e77031be855 ("app/testpmd: add MPLSoGRE encapsulation") Fixes: a1191d39cb57 ("app/testpmd: add MPLSoUDP encapsulation") Signed-off-by: Michael Baum Acked-by: Ori Kam Acked-by: Ferruh Yigit --- app/test-pmd/cmdline_flow.c | 48 ++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index de0db3994b..a56a760748 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -5281,15 +5281,15 @@ parse_vc_action_l2_encap(struct context *ctx, const struct token *token, l2_encap_conf.eth_dst, RTE_ETHER_ADDR_LEN); memcpy(eth.src.addr_bytes, l2_encap_conf.eth_src, RTE_ETHER_ADDR_LEN); - memcpy(header, ð, sizeof(eth)); - header += sizeof(eth); + memcpy(header, ð, sizeof(struct rte_ether_hdr)); + header += sizeof(struct rte_ether_hdr); if (l2_encap_conf.select_vlan) { if (l2_encap_conf.select_ipv4) vlan.inner_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV4); else vlan.inner_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV6); - memcpy(header, &vlan, sizeof(vlan)); - header += sizeof(vlan); + memcpy(header, &vlan, sizeof(struct rte_vlan_hdr)); + header += sizeof(struct rte_vlan_hdr); } action_encap_data->conf.size = header - action_encap_data->data; @@ -5337,11 +5337,11 @@ parse_vc_action_l2_decap(struct context *ctx, const struct token *token, header = action_decap_data->data; if (l2_decap_conf.select_vlan) eth.type = rte_cpu_to_be_16(RTE_ETHER_TYPE_VLAN); - memcpy(header, ð, sizeof(eth)); - header += sizeof(eth); + memcpy(header, ð, sizeof(struct rte_ether_hdr)); + header += sizeof(struct rte_ether_hdr); if (l2_decap_conf.select_vlan) { - memcpy(header, &vlan, sizeof(vlan)); - header += sizeof(vlan); + memcpy(header, &vlan, sizeof(struct rte_vlan_hdr)); + header += sizeof(struct rte_vlan_hdr); } action_decap_data->conf.size = header - action_decap_data->data; @@ -5421,15 +5421,15 @@ parse_vc_action_mplsogre_encap(struct context *ctx, const struct token *token, mplsogre_encap_conf.eth_dst, RTE_ETHER_ADDR_LEN); memcpy(eth.src.addr_bytes, mplsogre_encap_conf.eth_src, RTE_ETHER_ADDR_LEN); - memcpy(header, ð, sizeof(eth)); - header += sizeof(eth); + memcpy(header, ð, sizeof(struct rte_ether_hdr)); + header += sizeof(struct rte_ether_hdr); if (mplsogre_encap_conf.select_vlan) { if (mplsogre_encap_conf.select_ipv4) vlan.inner_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV4); else vlan.inner_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV6); - memcpy(header, &vlan, sizeof(vlan)); - header += sizeof(vlan); + memcpy(header, &vlan, sizeof(struct rte_vlan_hdr)); + header += sizeof(struct rte_vlan_hdr); } if (mplsogre_encap_conf.select_ipv4) { memcpy(header, &ipv4, sizeof(ipv4)); @@ -5516,15 +5516,15 @@ parse_vc_action_mplsogre_decap(struct context *ctx, const struct token *token, mplsogre_encap_conf.eth_dst, RTE_ETHER_ADDR_LEN); memcpy(eth.src.addr_bytes, mplsogre_encap_conf.eth_src, RTE_ETHER_ADDR_LEN); - memcpy(header, ð, sizeof(eth)); - header += sizeof(eth); + memcpy(header, ð, sizeof(struct rte_ether_hdr)); + header += sizeof(struct rte_ether_hdr); if (mplsogre_encap_conf.select_vlan) { if (mplsogre_encap_conf.select_ipv4) vlan.inner_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV4); else vlan.inner_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV6); - memcpy(header, &vlan, sizeof(vlan)); - header += sizeof(vlan); + memcpy(header, &vlan, sizeof(struct rte_vlan_hdr)); + header += sizeof(struct rte_vlan_hdr); } if (mplsogre_encap_conf.select_ipv4) { memcpy(header, &ipv4, sizeof(ipv4)); @@ -5615,15 +5615,15 @@ parse_vc_action_mplsoudp_encap(struct context *ctx, const struct token *token, mplsoudp_encap_conf.eth_dst, RTE_ETHER_ADDR_LEN); memcpy(eth.src.addr_bytes, mplsoudp_encap_conf.eth_src, RTE_ETHER_ADDR_LEN); - memcpy(header, ð, sizeof(eth)); - header += sizeof(eth); + memcpy(header, ð, sizeof(struct rte_ether_hdr)); + header += sizeof(struct rte_ether_hdr); if (mplsoudp_encap_conf.select_vlan) { if (mplsoudp_encap_conf.select_ipv4) vlan.inner_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV4); else vlan.inner_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV6); - memcpy(header, &vlan, sizeof(vlan)); - header += sizeof(vlan); + memcpy(header, &vlan, sizeof(struct rte_vlan_hdr)); + header += sizeof(struct rte_vlan_hdr); } if (mplsoudp_encap_conf.select_ipv4) { memcpy(header, &ipv4, sizeof(ipv4)); @@ -5712,15 +5712,15 @@ parse_vc_action_mplsoudp_decap(struct context *ctx, const struct token *token, mplsoudp_encap_conf.eth_dst, RTE_ETHER_ADDR_LEN); memcpy(eth.src.addr_bytes, mplsoudp_encap_conf.eth_src, RTE_ETHER_ADDR_LEN); - memcpy(header, ð, sizeof(eth)); - header += sizeof(eth); + memcpy(header, ð, sizeof(struct rte_ether_hdr)); + header += sizeof(struct rte_ether_hdr); if (mplsoudp_encap_conf.select_vlan) { if (mplsoudp_encap_conf.select_ipv4) vlan.inner_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV4); else vlan.inner_type = rte_cpu_to_be_16(RTE_ETHER_TYPE_IPV6); - memcpy(header, &vlan, sizeof(vlan)); - header += sizeof(vlan); + memcpy(header, &vlan, sizeof(struct rte_vlan_hdr)); + header += sizeof(struct rte_vlan_hdr); } if (mplsoudp_encap_conf.select_ipv4) { memcpy(header, &ipv4, sizeof(ipv4)); -- 2.25.1