From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 70441A04B1;
	Fri,  4 Sep 2020 10:37:54 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id 970B81C0D8;
	Fri,  4 Sep 2020 10:37:49 +0200 (CEST)
Received: from mail-m973.mail.163.com (mail-m973.mail.163.com [123.126.97.3])
 by dpdk.org (Postfix) with ESMTP id 1E86C1C0CC
 for <dev@dpdk.org>; Fri,  4 Sep 2020 10:37:46 +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=HH1Y3
 YaJ4ytCSoBMgDV6q/b5VN3P9gauW3Fmw4QfZGY=; b=kP1EQiddTb8bmufDGLSOL
 WMeZAxKrlfs6P/teTMIFvNPrehelCPs8SMUmpp7FoSIqPxmQNKEFzkVtvBC+oBv8
 xDYsr8ZuniHgapBK0ScdhjACJXQS4VoACpn49qbf4JqRUqPfzqaQlBha0eK3kB0G
 UYuGFDVe1ruCxiz1BqDRR4=
Received: from yangyi0100.home.langchao.com (unknown [111.207.123.58])
 by smtp3 (Coremail) with SMTP id G9xpCgB3myrU_FFfm6hLAw--.269S2;
 Fri, 04 Sep 2020 16:37:41 +0800 (CST)
From: yang_y_yi@163.com
To: dev@dpdk.org
Cc: jiayu.hu@intel.com, thomas@monjalon.net, yangyi01@inspur.com,
 yang_y_yi@163.com
Date: Fri,  4 Sep 2020 16:37:38 +0800
Message-Id: <20200904083740.71272-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: G9xpCgB3myrU_FFfm6hLAw--.269S2
X-Coremail-Antispam: 1Uf129KBjvJXoW7Ww47uw13AFykJFWDJryDtrb_yoW8ZFy5pF
 Z3Gr4ftr9rJryxXFsxXw40qr95tr18Jr17Ga42gry8Xr4vyw1jqr15KryrGry7Wr97Xr4x
 Xw12yF1rCw1UGrUanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2
 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07U2eHgUUUUU=
X-Originating-IP: [111.207.123.58]
X-CM-SenderInfo: 51dqwsp1b1xqqrwthudrp/xtbB0haVi1UMYmOSnAAAsM
Subject: [dpdk-dev] [PATCH v4 0/2] gro: add UDP GRO and VXLAN UDP GRO support
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

From: Yi Yang <yangyi01@inspur.com>

In case that UFO or GSO is enabled, GRO is very necessary,
especially for UDP, it is more so. Many NICs can't support
VXLAN UDP UFO/USO and VLAN UFO/USO, so UDP performance
improvement depends on GSO and GRO to a great extent.

This patch series added VLAN UDP GRO and VXLAN UDP GRO
support.

I have tested it in OVS DPDK, test scenario is as below:

+-------------------------+   +--------------------------+
|VM1 --- OVS DPDK --- NIC1|---| NIC2 --- OVS-DPDK --- VM2|
+-------------------------+   +--------------------------+
         SERVER1                       SERVER2

If no GSO and GRO, 8k UDP packet can't work in case of UFO or
in case that underlay MTU is 1500, so UDP size must meet MTU
limitation, my VM MTU is 1450 (consider vxlan header), UDP
performance is about 3Gbps, with GSO and GRO enabled, I can
send 8K UDP packet, UDP performance is about 6Gbps (Note: with
small UDP packet loss rate). 

FYI: OVS DPDK patch series
https://patchwork.ozlabs.org/project/openvswitch/list/?series=194621

Changelog
---------
v3 -> v4: split two patches in cleaner way
          remove ip_id which is unnecessary for UDP GRO
          correct hdr_len calculation

v2 -> v3: remove UDP header length check

v1 -> v2: split into two patches

Yi Yang (2):
  gro: add UDP GRO support
  gro: add VXLAN UDP GRO support

 lib/librte_gro/Makefile         |   2 +
 lib/librte_gro/gro_udp4.c       | 430 +++++++++++++++++++++++++++++++
 lib/librte_gro/gro_udp4.h       | 282 +++++++++++++++++++++
 lib/librte_gro/gro_vxlan_udp4.c | 548 ++++++++++++++++++++++++++++++++++++++++
 lib/librte_gro/gro_vxlan_udp4.h | 152 +++++++++++
 lib/librte_gro/meson.build      |   2 +-
 lib/librte_gro/rte_gro.c        | 192 +++++++++++---
 lib/librte_gro/rte_gro.h        |   8 +-
 8 files changed, 1582 insertions(+), 34 deletions(-)
 create mode 100644 lib/librte_gro/gro_udp4.c
 create mode 100644 lib/librte_gro/gro_udp4.h
 create mode 100644 lib/librte_gro/gro_vxlan_udp4.c
 create mode 100644 lib/librte_gro/gro_vxlan_udp4.h

-- 
1.8.3.1