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 117DEA00C4 for ; Fri, 18 Nov 2022 00:09:10 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0B5B94067B; Fri, 18 Nov 2022 00:09:10 +0100 (CET) Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) by mails.dpdk.org (Postfix) with ESMTP id 6008E4021F for ; Fri, 18 Nov 2022 00:09:07 +0100 (CET) Received: by mail-wm1-f51.google.com with SMTP id ay14-20020a05600c1e0e00b003cf6ab34b61so6244838wmb.2 for ; Thu, 17 Nov 2022 15:09:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=69qsUdw3ShIBrtt0ZhDRIApTKo+Csh7W+VxM6EuVafY=; b=BlE4ihpD2QLtTvmWVKT013fNjXIw+r8NroJiL8+jAf+wLgUu5xsSPosQ7XlpkHL5gk UiTWEjoHQdDTv5vBU81Obrysm+doinXxuvTquoI/IgGECiA9L7JgLAX4a330EwmleM4q xuefPEhqFKTTgUt90KzTmQXnFbyvb34rT8Hl09feuECs0VoW5pU8MzqIkJVc8qskgabj N4g7aNq2kl9267tT+xAbH6BfIXbq0dpfXJ9O5sWRxGUNLzxM87GN1+BN7Q0wPQJpJfSc +2Y8uDaFDMDd4PxQPRAN32/5GYE8+9DuQeErBlgd/9RS4hZwkBS+TVZ6aoHRDgMku8tJ qaxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=69qsUdw3ShIBrtt0ZhDRIApTKo+Csh7W+VxM6EuVafY=; b=Og3VaP2k2f5vPMquQL9/hyFVcTYc8+6KiLXJ8Skz4Zc9Tctq+catlIcvsLG70uvYF9 7NJSrOeH/W2Tg5RM/roVhKZFapooHu/iEe2Nv1bZDHYoPJ/RoyEBKcVzV0Z4F50vX8Ex yGcXD9UbydRiFYvJQ1aXawn/vem1Xzf2+82Ug3rDtJJ/lg7m6fQTMXHHkk7soYBtaQZS VZZ7vmC9J/XDX0zmwMyhM87OS3A11i45xvrE+KDotRKtTBB04eovTxcA/uP7jn3gGW6L 1+7w5s4/J6oX8OAi1ie+7/Xm+Zawy4egLOqWCBz3ciaY4ngKLXUK6zcdY/nC4cAnohS1 akLQ== X-Gm-Message-State: ANoB5plSYSHnEtEFX0g5GGlv6qVQsKut8vu0li+oVLUu7h2Frl6oW9Sy 5v1XKFAzdSWCgEeL3iNOHlc= X-Google-Smtp-Source: AA0mqf674xpfGdGWKFz50oItVXkMz39v5FMacgEfhMLCqiEzSjvOJX3rleohL3J5CLazF/ReQExmgA== X-Received: by 2002:a05:600c:4148:b0:3cf:5657:3791 with SMTP id h8-20020a05600c414800b003cf56573791mr6772187wmm.34.1668726546973; Thu, 17 Nov 2022 15:09:06 -0800 (PST) Received: from localhost ([2a01:4b00:d307:1000:f1d3:eb5e:11f4:a7d9]) by smtp.gmail.com with ESMTPSA id q3-20020adfcd83000000b0022eafed36ebsm2058459wrj.73.2022.11.17.15.09.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Nov 2022 15:09:06 -0800 (PST) From: luca.boccassi@gmail.com To: Gregory Etelson Cc: Huisong Li , dpdk stable Subject: patch 'app/testpmd: fix MAC header in checksum forward engine' has been queued to stable release 20.11.7 Date: Thu, 17 Nov 2022 23:08:27 +0000 Message-Id: <20221117230859.611465-3-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221117230859.611465-1-luca.boccassi@gmail.com> References: <20221105171146.1520039-47-luca.boccassi@gmail.com> <20221117230859.611465-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 Hi, FYI, your patch has been queued to stable release 20.11.7 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/19/22. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable/commit/827c2ba4facb66c180365f123e76a4ff3f400b13 Thanks. Luca Boccassi --- >From 827c2ba4facb66c180365f123e76a4ff3f400b13 Mon Sep 17 00:00:00 2001 From: Gregory Etelson Date: Wed, 26 Oct 2022 14:07:20 +0300 Subject: [PATCH] app/testpmd: fix MAC header in checksum forward engine [ upstream commit 236bc417e2dad4034e4b9b7ea4fc10e71a07c1f8 ] MLX5 SR-IOV Tx engine will not transmit Ethernet frame if destination MAC address matched local port address. The frame ether looped-back to Rx or dropped, depending on the port configuration. Application running over MLX5 SR-IOV port cannot transmit packet polled from Rx queue as is. The packet Ethernet destination address must be changed. Add new run-time configuration parameter to the `csum` forwarding engine to control MAC addresses configuration: testpmd> csum mac-swap on|off `mac-swap on` replace MAC addresses. `mac-swap off` keep Ethernet header unchanged. Fixes: 9b4ea7ae77fa ("app/testpmd: revert MAC update in checksum forwarding") Signed-off-by: Gregory Etelson Acked-by: Huisong Li --- app/test-pmd/cmdline.c | 50 +++++++++++++++++++++++++++++++++++++++++ app/test-pmd/csumonly.c | 6 +++++ app/test-pmd/testpmd.c | 4 +++- app/test-pmd/testpmd.h | 3 ++- 4 files changed, 61 insertions(+), 2 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 83bb041484..9f46570cc4 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -4778,6 +4778,55 @@ cmdline_parse_inst_t cmd_csum_tunnel = { }, }; +struct cmd_csum_mac_swap_result { + cmdline_fixed_string_t csum; + cmdline_fixed_string_t parse; + cmdline_fixed_string_t onoff; + portid_t port_id; +}; + +static void +cmd_csum_mac_swap_parsed(void *parsed_result, + __rte_unused struct cmdline *cl, + __rte_unused void *data) +{ + struct cmd_csum_mac_swap_result *res = parsed_result; + + if (port_id_is_invalid(res->port_id, ENABLED_WARN)) + return; + if (strcmp(res->onoff, "on") == 0) + ports[res->port_id].fwd_mac_swap = 1; + else + ports[res->port_id].fwd_mac_swap = 0; +} + +static cmdline_parse_token_string_t cmd_csum_mac_swap_csum = + TOKEN_STRING_INITIALIZER(struct cmd_csum_mac_swap_result, + csum, "csum"); +static cmdline_parse_token_string_t cmd_csum_mac_swap_parse = + TOKEN_STRING_INITIALIZER(struct cmd_csum_mac_swap_result, + parse, "mac-swap"); +static cmdline_parse_token_string_t cmd_csum_mac_swap_onoff = + TOKEN_STRING_INITIALIZER(struct cmd_csum_mac_swap_result, + onoff, "on#off"); +static cmdline_parse_token_num_t cmd_csum_mac_swap_portid = + TOKEN_NUM_INITIALIZER(struct cmd_csum_mac_swap_result, + port_id, RTE_UINT16); + +static cmdline_parse_inst_t cmd_csum_mac_swap = { + .f = cmd_csum_mac_swap_parsed, + .data = NULL, + .help_str = "csum mac-swap on|off : " + "Enable/Disable forward mac address swap", + .tokens = { + (void *)&cmd_csum_mac_swap_csum, + (void *)&cmd_csum_mac_swap_parse, + (void *)&cmd_csum_mac_swap_onoff, + (void *)&cmd_csum_mac_swap_portid, + NULL, + }, +}; + /* *** ENABLE HARDWARE SEGMENTATION IN TX NON-TUNNELED PACKETS *** */ struct cmd_tso_set_result { cmdline_fixed_string_t tso; @@ -16913,6 +16962,7 @@ cmdline_parse_ctx_t main_ctx[] = { (cmdline_parse_inst_t *)&cmd_csum_set, (cmdline_parse_inst_t *)&cmd_csum_show, (cmdline_parse_inst_t *)&cmd_csum_tunnel, + (cmdline_parse_inst_t *)&cmd_csum_mac_swap, (cmdline_parse_inst_t *)&cmd_tso_set, (cmdline_parse_inst_t *)&cmd_tso_show, (cmdline_parse_inst_t *)&cmd_tunnel_tso_set, diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index ffec25f308..aa1c60e7b3 100644 --- a/app/test-pmd/csumonly.c +++ b/app/test-pmd/csumonly.c @@ -888,6 +888,12 @@ pkt_burst_checksum_forward(struct fwd_stream *fs) * and inner headers */ eth_hdr = rte_pktmbuf_mtod(m, struct rte_ether_hdr *); + if (ports[fs->tx_port].fwd_mac_swap) { + rte_ether_addr_copy(&peer_eth_addrs[fs->peer_addr], + ð_hdr->d_addr); + rte_ether_addr_copy(&ports[fs->tx_port].eth_addr, + ð_hdr->s_addr); + } parse_ethernet(eth_hdr, &info); l3_hdr = (char *)eth_hdr + info.l2_len; diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index c29f1f153c..d0cd11fe4e 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -3813,8 +3813,10 @@ init_port(void) "rte_zmalloc(%d struct rte_port) failed\n", RTE_MAX_ETHPORTS); } - for (i = 0; i < RTE_MAX_ETHPORTS; i++) + for (i = 0; i < RTE_MAX_ETHPORTS; i++) { + ports[i].fwd_mac_swap = 1; LIST_INIT(&ports[i].flow_tunnel_list); + } /* Initialize ports NUMA structures */ memset(port_numa, NUMA_NO_CONFIG, RTE_MAX_ETHPORTS); memset(rxring_numa, NUMA_NO_CONFIG, RTE_MAX_ETHPORTS); diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index d21d8501d5..76c2c55981 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -237,7 +237,8 @@ struct rte_port { struct rte_ether_addr *mc_addr_pool; /**< pool of multicast addrs */ uint32_t mc_addr_nb; /**< nb. of addr. in mc_addr_pool */ uint8_t slave_flag : 1, /**< bonding slave port */ - bond_flag : 1; /**< port is bond device */ + bond_flag : 1, /**< port is bond device */ + fwd_mac_swap : 1; /**< swap packet MAC before forward */ struct port_flow *flow_list; /**< Associated flows. */ struct port_shared_action *actions_list; /**< Associated shared actions. */ -- 2.34.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-11-17 23:07:55.659959543 +0000 +++ 0003-app-testpmd-fix-MAC-header-in-checksum-forward-engin.patch 2022-11-17 23:07:55.428328925 +0000 @@ -1 +1 @@ -From 236bc417e2dad4034e4b9b7ea4fc10e71a07c1f8 Mon Sep 17 00:00:00 2001 +From 827c2ba4facb66c180365f123e76a4ff3f400b13 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 236bc417e2dad4034e4b9b7ea4fc10e71a07c1f8 ] + @@ -23 +24,0 @@ -Cc: stable@dpdk.org @@ -30 +31 @@ - app/test-pmd/testpmd.c | 5 +++-- + app/test-pmd/testpmd.c | 4 +++- @@ -32 +33 @@ - 4 files changed, 61 insertions(+), 3 deletions(-) + 4 files changed, 61 insertions(+), 2 deletions(-) @@ -35 +36 @@ -index 8dc60e9388..3fbcb6ca8f 100644 +index 83bb041484..9f46570cc4 100644 @@ -38 +39 @@ -@@ -4793,6 +4793,55 @@ static cmdline_parse_inst_t cmd_csum_tunnel = { +@@ -4778,6 +4778,55 @@ cmdline_parse_inst_t cmd_csum_tunnel = { @@ -94 +95 @@ -@@ -12628,6 +12677,7 @@ static cmdline_parse_ctx_t builtin_ctx[] = { +@@ -16913,6 +16962,7 @@ cmdline_parse_ctx_t main_ctx[] = { @@ -103 +104 @@ -index 144f28819c..1c24598515 100644 +index ffec25f308..aa1c60e7b3 100644 @@ -106 +107 @@ -@@ -915,6 +915,12 @@ pkt_burst_checksum_forward(struct fwd_stream *fs) +@@ -888,6 +888,12 @@ pkt_burst_checksum_forward(struct fwd_stream *fs) @@ -112 +113 @@ -+ ð_hdr->dst_addr); ++ ð_hdr->d_addr); @@ -114 +115 @@ -+ ð_hdr->src_addr); ++ ð_hdr->s_addr); @@ -120 +121 @@ -index aa7ea29f15..bf589c4e8d 100644 +index c29f1f153c..d0cd11fe4e 100644 @@ -123 +124 @@ -@@ -4214,10 +4214,11 @@ init_port(void) +@@ -3813,8 +3813,10 @@ init_port(void) @@ -130,2 +130,0 @@ - ports[i].xstats_info.allocated = false; -- for (i = 0; i < RTE_MAX_ETHPORTS; i++) @@ -138 +137 @@ -index 349f02e18a..93fdb9d331 100644 +index d21d8501d5..76c2c55981 100644 @@ -141,3 +140,3 @@ -@@ -316,7 +316,8 @@ struct rte_port { - queueid_t queue_nb; /**< nb. of queues for flow rules */ - uint32_t queue_sz; /**< size of a queue for flow rules */ +@@ -237,7 +237,8 @@ struct rte_port { + struct rte_ether_addr *mc_addr_pool; /**< pool of multicast addrs */ + uint32_t mc_addr_nb; /**< nb. of addr. in mc_addr_pool */ @@ -148,3 +147,3 @@ - struct port_template *pattern_templ_list; /**< Pattern templates. */ - struct port_template *actions_templ_list; /**< Actions templates. */ - struct port_table *table_list; /**< Flow tables. */ + struct port_flow *flow_list; /**< Associated flows. */ + struct port_shared_action *actions_list; + /**< Associated shared actions. */