From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9ED74A04DD for ; Wed, 28 Oct 2020 11:50:51 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 96BD7C9F0; Wed, 28 Oct 2020 11:50:50 +0100 (CET) Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) by dpdk.org (Postfix) with ESMTP id E251E4C90 for ; Wed, 28 Oct 2020 11:50:47 +0100 (CET) Received: by mail-wr1-f42.google.com with SMTP id y12so5145852wrp.6 for ; Wed, 28 Oct 2020 03:50:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YgGddr9uurkXC5+SpsaAonUCDHO78mkragUGMb4wh4A=; b=nT7sQvbyjAwrqMqG/RZdwX6TObabI5WX941IseKV3/gM478f8PgfCGOsDVYL6kJHT3 Yrux1QfGh1sLoKOl5ybnevMFnLSbBYFKkg3usTCv1cbFOSgnfwqDUFaLjPvcqjEx1xNa 0qis2/aX9cWIWnlgez+5OWo/ihUVVaLtr90JVbQfi1JiA3MvkqgAFg3TP+12ZY6zhXrQ jozcQk//ak9cxeYO8GWdtsv87iN9cudJNsJR3vC2o+b9x5fjMVuDXIiVPrrdUSjJmS+5 xEtcNheGftG+y2UeHTxEU+pY44iQyJMHLHl2jGTVDUZOdn+7vqlRIlByks1XRqY2e1Vf DESg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=YgGddr9uurkXC5+SpsaAonUCDHO78mkragUGMb4wh4A=; b=a7ZVdlAmvLlJ42TuiZzQnmOIzK6qTUsR831h+QOqD/GxVrOWXnYjfQIB9Sqof/0rSU nrwlQVzW+y61L1MkgSynNujMKCF96cxzdGjWF5KOmmMT7hO4b/dwXq6sOuBYtVFJztTK hk5kRVKLR0vUu/JGKJul/LtYDeV2E6dKIQzAUJzwzZm/C0n3TnTf3RNMO89g9moHmRPB uCuAHD5ir8zrfHtDKyL9ATJV6Us8IRejd0aLl5pS4W89m29xVRaT4qaxF2DDQdfAc3uB xKoaTOFkgR4XRJIa+C8Vz6OXyHwveJIE3ENI3izfPoE4F8DHPiwa2OeDT6he7eq+AOi3 cskg== X-Gm-Message-State: AOAM530WUEFePBj9qrM/EpPpAI040fK1FJO3pThsHLUwFbG5+zMlVlno 9vSQDZ6SmdSmWvLsOddF5rw= X-Google-Smtp-Source: ABdhPJy+uewVuJcowTd8Z2aHS77ZX/ooqOfmc4v8FEczInNSTA9gennG98fVV9jYL8Vii5Y2nB/j3w== X-Received: by 2002:adf:f043:: with SMTP id t3mr7774566wro.234.1603882247666; Wed, 28 Oct 2020 03:50:47 -0700 (PDT) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id k18sm6117630wrx.96.2020.10.28.03.50.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2020 03:50:47 -0700 (PDT) From: luca.boccassi@gmail.com To: Chengchang Tang Cc: Wei Hu , Ferruh Yigit , dpdk stable Date: Wed, 28 Oct 2020 10:44:07 +0000 Message-Id: <20201028104606.3504127-88-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201028104606.3504127-1-luca.boccassi@gmail.com> References: <20201028104606.3504127-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'app/testpmd: fix packet header in txonly mode' has been queued to stable release 19.11.6 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 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 Sender: "stable" Hi, FYI, your patch has been queued to stable release 19.11.6 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 10/30/20. 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. Thanks. Luca Boccassi --- >From 844575e05eba2fc821a550ca0b05bd834082e2f9 Mon Sep 17 00:00:00 2001 From: Chengchang Tang Date: Fri, 25 Sep 2020 20:47:17 +0800 Subject: [PATCH] app/testpmd: fix packet header in txonly mode [ upstream commit b253a6bbf144c8e6505dd76fe0051967eddc6903 ] In txonly forward mode, the packet header is fixed by the initial setting, including the packet length and checksum. So when the packets varies, this may cause a packet header error. Currently, there are two methods in txonly mode to randomly change the packets. 1. Set txsplit random and txpkts (x[,y]*), the number of segments each packets will be a random value between 1 and total number of segments determined by txpkts settings. The step as follows: a) ./testpmd -w xxx -l xx -n 4 -- -i --disable-device-start b) port config 0 tx_offload multi_segs on c) set fwd txonly d) set txsplit rand e) set txpkts 2048,2048,2048,2048 f) start The nb_segs of the packets sent by testpmd will be 1~4. The real packet length will be 2048, 4096, 6144 and 8192. But in fact the packet length in ip header and udp header will be fixed by 8178 and 8158. 2. Set txonly-multi-flow. the ip address will be varied to generate multiple flow. The step as follows: a) ./testpmd -w xxx -l xx -n 4 -- -i --txonly-multi-flow b) set fwd txonly c) start The ip address of each pkts will change randomly, but since the header is fixed, the checksum may be a error value. Therefore, this patch adds a function to update the packet length and check sum in the pkts header when the txsplit mode is set to rand or multi-flow is set. Fixes: 82010ef55e7c ("app/testpmd: make txonly mode generate multiple flows") Fixes: 79bec05b32b7 ("app/testpmd: add ability to split outgoing packets") Signed-off-by: Chengchang Tang Signed-off-by: Wei Hu (Xavier) Reviewed-by: Ferruh Yigit --- app/test-pmd/txonly.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/app/test-pmd/txonly.c b/app/test-pmd/txonly.c index 8ed436def5..a1822c631d 100644 --- a/app/test-pmd/txonly.c +++ b/app/test-pmd/txonly.c @@ -147,6 +147,34 @@ setup_pkt_udp_ip_headers(struct rte_ipv4_hdr *ip_hdr, ip_hdr->hdr_checksum = (uint16_t) ip_cksum; } +static inline void +update_pkt_header(struct rte_mbuf *pkt, uint32_t total_pkt_len) +{ + struct rte_ipv4_hdr *ip_hdr; + struct rte_udp_hdr *udp_hdr; + uint16_t pkt_data_len; + uint16_t pkt_len; + + pkt_data_len = (uint16_t) (total_pkt_len - ( + sizeof(struct rte_ether_hdr) + + sizeof(struct rte_ipv4_hdr) + + sizeof(struct rte_udp_hdr))); + /* updata udp pkt length */ + udp_hdr = rte_pktmbuf_mtod_offset(pkt, struct rte_udp_hdr *, + sizeof(struct rte_ether_hdr) + + sizeof(struct rte_ipv4_hdr)); + pkt_len = (uint16_t) (pkt_data_len + sizeof(struct rte_udp_hdr)); + udp_hdr->dgram_len = RTE_CPU_TO_BE_16(pkt_len); + + /* updata ip pkt length and csum */ + ip_hdr = rte_pktmbuf_mtod_offset(pkt, struct rte_ipv4_hdr *, + sizeof(struct rte_ether_hdr)); + ip_hdr->hdr_checksum = 0; + pkt_len = (uint16_t) (pkt_len + sizeof(struct rte_ipv4_hdr)); + ip_hdr->total_length = RTE_CPU_TO_BE_16(pkt_len); + ip_hdr->hdr_checksum = rte_ipv4_cksum(ip_hdr); +} + static inline bool pkt_burst_prepare(struct rte_mbuf *pkt, struct rte_mempool *mbp, struct rte_ether_hdr *eth_hdr, const uint16_t vlan_tci, @@ -212,6 +240,10 @@ pkt_burst_prepare(struct rte_mbuf *pkt, struct rte_mempool *mbp, copy_buf_to_pkt(&pkt_udp_hdr, sizeof(pkt_udp_hdr), pkt, sizeof(struct rte_ether_hdr) + sizeof(struct rte_ipv4_hdr)); + + if (unlikely(tx_pkt_split == TX_PKT_SPLIT_RND) || txonly_multi_flow) + update_pkt_header(pkt, pkt_len); + /* * Complete first mbuf of packet and append it to the * burst of packets to be transmitted. -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-10-28 10:35:14.517914177 +0000 +++ 0088-app-testpmd-fix-packet-header-in-txonly-mode.patch 2020-10-28 10:35:11.628831849 +0000 @@ -1,8 +1,10 @@ -From b253a6bbf144c8e6505dd76fe0051967eddc6903 Mon Sep 17 00:00:00 2001 +From 844575e05eba2fc821a550ca0b05bd834082e2f9 Mon Sep 17 00:00:00 2001 From: Chengchang Tang Date: Fri, 25 Sep 2020 20:47:17 +0800 Subject: [PATCH] app/testpmd: fix packet header in txonly mode +[ upstream commit b253a6bbf144c8e6505dd76fe0051967eddc6903 ] + In txonly forward mode, the packet header is fixed by the initial setting, including the packet length and checksum. So when the packets varies, this may cause a packet header error. Currently, there are two @@ -36,7 +38,6 @@ Fixes: 82010ef55e7c ("app/testpmd: make txonly mode generate multiple flows") Fixes: 79bec05b32b7 ("app/testpmd: add ability to split outgoing packets") -Cc: stable@dpdk.org Signed-off-by: Chengchang Tang Signed-off-by: Wei Hu (Xavier) @@ -46,10 +47,10 @@ 1 file changed, 32 insertions(+) diff --git a/app/test-pmd/txonly.c b/app/test-pmd/txonly.c -index 45def72a33..d55ee7ca00 100644 +index 8ed436def5..a1822c631d 100644 --- a/app/test-pmd/txonly.c +++ b/app/test-pmd/txonly.c -@@ -156,6 +156,34 @@ setup_pkt_udp_ip_headers(struct rte_ipv4_hdr *ip_hdr, +@@ -147,6 +147,34 @@ setup_pkt_udp_ip_headers(struct rte_ipv4_hdr *ip_hdr, ip_hdr->hdr_checksum = (uint16_t) ip_cksum; } @@ -84,7 +85,7 @@ static inline bool pkt_burst_prepare(struct rte_mbuf *pkt, struct rte_mempool *mbp, struct rte_ether_hdr *eth_hdr, const uint16_t vlan_tci, -@@ -223,6 +251,10 @@ pkt_burst_prepare(struct rte_mbuf *pkt, struct rte_mempool *mbp, +@@ -212,6 +240,10 @@ pkt_burst_prepare(struct rte_mbuf *pkt, struct rte_mempool *mbp, copy_buf_to_pkt(&pkt_udp_hdr, sizeof(pkt_udp_hdr), pkt, sizeof(struct rte_ether_hdr) + sizeof(struct rte_ipv4_hdr)); @@ -92,9 +93,9 @@ + if (unlikely(tx_pkt_split == TX_PKT_SPLIT_RND) || txonly_multi_flow) + update_pkt_header(pkt, pkt_len); + - if (unlikely(timestamp_enable)) { - uint64_t skew = RTE_PER_LCORE(timestamp_qskew); - struct { + /* + * Complete first mbuf of packet and append it to the + * burst of packets to be transmitted. -- 2.20.1