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 25604A04B1; Wed, 26 Aug 2020 05:06:08 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1317D4C99; Wed, 26 Aug 2020 05:06:07 +0200 (CEST) Received: from mail-m974.mail.163.com (mail-m974.mail.163.com [123.126.97.4]) by dpdk.org (Postfix) with ESMTP id 504DC4C89 for ; Wed, 26 Aug 2020 05:06:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=jjg8P iq+OrLJD2FuZ67E24XBURs7OREeCX2gLfPlcpg=; b=EXqeWqunHdEJupNm0ipI+ 3gdztr2h7F16akbUwrPOaUqNBm7c7ZSgjJoWYrDVEHLXiJQ9gzswmD6q7Od/VySK /zBW/5051pNRbe5t29heRwhUXm1qX4IHJA+BX7GaJgSgMfSOXYAaT0bCIbEAFa6z onl1a+xTPjyZUGn+hnKSYA= Received: from yangyi0100.home.langchao.com (unknown [111.207.123.58]) by smtp4 (Coremail) with SMTP id HNxpCgAHOgyY0UVfiYjdMg--.6097S2; Wed, 26 Aug 2020 11:06:02 +0800 (CST) From: yang_y_yi@163.com To: dev@dpdk.org Cc: jiayu.hu@intel.com, xiao.w.wang@intel.com, thomas@monjalon.net, yangyi01@inspur.com, yang_y_yi@163.com Date: Wed, 26 Aug 2020 11:06:00 +0800 Message-Id: <20200826030600.254708-1-yang_y_yi@163.com> X-Mailer: git-send-email 2.19.2.windows.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID: HNxpCgAHOgyY0UVfiYjdMg--.6097S2 X-Coremail-Antispam: 1Uf129KBjvdXoWrKFy7XFWruF48Jw4xuF47XFb_yoWDAFc_Xa 93CFs8GayUJF4xAw43Jw4YgF4kA3y8ZF13W397Jr1DWa15Krs8WryDZF1vqFs8Xa43GF4U Wa1vyFyfGF48KjkaLaAFLSUrUUUUUb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUvcSsGvfC2KfnxnUUI43ZEXa7IUUqg4PUUUUU== X-Originating-IP: [111.207.123.58] X-CM-SenderInfo: 51dqwsp1b1xqqrwthudrp/xtbB0hqMi1UMYeyy9AAAsd Subject: [dpdk-dev] [PATCH] gso: fix pyld_unit_size issue for udp gso X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Yi Yang IP fragment offset in IP header must be multiple of 8, if pyld_unit_size isn't multiple of 8, IP total length will be wrong after reassemble, IP payload also will be wrong because some data is lost on reassembling. This has been verified in OVS DPDK by VLAN TSO iperf3 UDP case. Fixes: b166d4f30b66 ("gso: support UDP/IPv4 fragmentation") Signed-off-by: Yi Yang --- lib/librte_gso/gso_udp4.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/librte_gso/gso_udp4.c b/lib/librte_gso/gso_udp4.c index 21fea09..6fa68f2 100644 --- a/lib/librte_gso/gso_udp4.c +++ b/lib/librte_gso/gso_udp4.c @@ -69,7 +69,10 @@ return 1; } - pyld_unit_size = gso_size - hdr_offset; + /* pyld_unit_size must be a multiple of 8 because frag_off + * uses 8 bytes as unit. + */ + pyld_unit_size = (gso_size - hdr_offset) & ~7U; /* Segment the payload */ ret = gso_do_segment(pkt, hdr_offset, pyld_unit_size, direct_pool, -- 1.8.3.1