From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36613) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aPwVL-0001lu-E7 for qemu-devel@nongnu.org; Sun, 31 Jan 2016 13:13:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aPwVG-00067Q-Eg for qemu-devel@nongnu.org; Sun, 31 Jan 2016 13:13:43 -0500 Received: from mx1.redhat.com ([209.132.183.28]:60571) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aPwVG-00067M-9Y for qemu-devel@nongnu.org; Sun, 31 Jan 2016 13:13:38 -0500 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (Postfix) with ESMTPS id 544C777323 for ; Sun, 31 Jan 2016 18:13:37 +0000 (UTC) From: wexu@redhat.com Date: Mon, 1 Feb 2016 02:13:19 +0800 Message-Id: <1454264009-24094-1-git-send-email-wexu@redhat.com> Subject: [Qemu-devel] [RFC v2 0/10] Support Receive-Segment-Offload(RSC) for WHQL test of Window guest List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: victork@redhat.com, mst@redhat.com, jasowang@redhat.com, yvugenfi@redhat.com, Wei Xu , marcel@redhat.com, dfleytma@redhat.com From: Wei Xu Patch v2 add detailed commit log. This patch is to support WHQL test for Windows guest, while this feature also benifits other guest works as a kernel 'gro' like feature with userspace implementation. Feature information: http://msdn.microsoft.com/en-us/library/windows/hardware/jj853324 Both IPv4 and IPv6 are supported, though performance with userspace virtio is slow than vhost-net, there is about 30-40 percent performance improvement to userspace virtio, this is done by turning this feature on and disable 'tso' on corresponding tap interface. Test steps: Although this feature is mainly used for window guest, i used linux guest to help test the feature, to make things simple, i used 3 steps to test the patch as i moved on. 1. With a tcp socket client/server pair runnig on 2 linux guest, thus i can control the traffic and debugging the code as i want. 2. Netperf on linux guest test the throughput. 3. WHQL test with 2 Windows guest. Current status: IPv4 pass all the above tests. IPv6 just passed test step 1 and 2 as described ahead, the virtio nic cannot receive any packet in WHQL test, debugging on the host side shows all the packets have been pushed to th vring, by replacing it with a linux guest, i add 10 extra packets before sending out the real packet, tcpdump running on guest only capture 6 packets, don't find out the root cause yet, will continue working on this. Note: A 'MessageDevice' nic chose as 'Realtek' will panic the system sometimes during setup, this can be figured out by replacing it with an 'e1000' nic. Pending issues & Todo list: 1. Dup ack count not added in the virtio_net_hdr, but WHQL test case passes, looks like a bug in test case. 2. Missing a Feature Bit 3. Missing a few tcp/ip handling ECN change. TCP window scale. Wei Xu (10): virtio-net rsc: Data structure, 'Segment', 'Chain' and 'Status' virtio-net rsc: Initilize & Cleanup virtio-net rsc: Chain Lookup, Packet Caching and Framework of IPv4 virtio-net rsc: Detailed IPv4 and General TCP data coalescing virtio-net rsc: Create timer to drain the packets from the cache pool virtio-net rsc: IPv4 checksum virtio-net rsc: Checking TCP flag and drain specific connection packets virtio-net rsc: Sanity check & More bypass cases check virtio-net rsc: Add IPv6 support virtio-net rsc: Add Receive Segment Coalesce statistics hw/net/virtio-net.c | 626 ++++++++++++++++++++++++++++++++++++++++- include/hw/virtio/virtio-net.h | 1 + include/hw/virtio/virtio.h | 65 +++++ 3 files changed, 691 insertions(+), 1 deletion(-) -- 2.4.0