From: Yi Yang <yangy...@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