From patchwork Mon Nov 28 23:26:53 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Fastabend X-Patchwork-Id: 700219 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3tSNBG1cmWz9vDr for ; Tue, 29 Nov 2016 10:27:18 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="z3a/db+h"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755974AbcK1X1O (ORCPT ); Mon, 28 Nov 2016 18:27:14 -0500 Received: from mail-pf0-f193.google.com ([209.85.192.193]:33508 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755967AbcK1X1K (ORCPT ); Mon, 28 Nov 2016 18:27:10 -0500 Received: by mail-pf0-f193.google.com with SMTP id 144so7095934pfv.0 for ; Mon, 28 Nov 2016 15:27:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=PKzXIbOZ6CK0JxbmxFycR3o3+JM9RiPWbscei5GDPG0=; b=z3a/db+hh2Fm3uY2OynlSuQUOxwk9nZRjknW0z73zkuC858235KKCZTsV+emkVlDed snk/7m3i/hLB00D+uUV1+26bX5WdhCoXRwyVzPKOz8M9bFiZQMnkdXtRxeorY2LnXhDs 1UHS7PBncu3jlvS1i48vGfJi44XRi8FV6eKTPl2waPcD9KU/JjzlkeZEkwoZpQv4UsqR DO32Mn7QZo685gQF/SbYVfYgAKZS7eljAwNyab5EhU6X98kUKQIH2evDHA6KrXK61U3X hhhUtHzLwNDKWW8mFnWcBeiaEzwhhJrRJV/wpkiBw9aNjA+QOvhiCqafjVPV8vuwiMYR wKUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=PKzXIbOZ6CK0JxbmxFycR3o3+JM9RiPWbscei5GDPG0=; b=eA5SMW0J2T79CW48RCm9YdY8rrSAtZ/r8OvOLeAIGVqHsnkKlFtCeE6it3G4/pu0ns Ll2qv05yzVgWO9gClrOinutQykAqi15DU8/m5CuuvbcY3kfb8K4DbmRVcJbZzRXdcjL1 YHKX/h0cVEoCsAm9fqIuX2etyfx2RyZ28CPSU4beSTUnuobizFN1jnbmBi1POymL3xBR IxeZ120aGdaGz95HaCKM8zIq306xEDC7conhlEAJb6DedDyfsIfJtc4VHWGoxX9YV3dU vQH+ba8AZOZS8E4z0ShpwuvVv1msgiVwBDPTIcWpw1O902nYgDGpa5e+d11RTixVoeKX 2tAw== X-Gm-Message-State: AKaTC03MgiqcyGtC9GgeA32snAjIW0CYAKeYh684ry1S2N0DalVNIdMpshvMP1H3ADzzpg== X-Received: by 10.98.66.214 with SMTP id h83mr24359688pfd.67.1480375630189; Mon, 28 Nov 2016 15:27:10 -0800 (PST) Received: from [192.168.1.4] ([72.168.145.122]) by smtp.googlemail.com with ESMTPSA id w17sm71852078pgm.18.2016.11.28.15.26.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Nov 2016 15:27:09 -0800 (PST) Subject: Re: [net-next PATCH v2 3/5] virtio_net: Add XDP support To: "Michael S. Tsirkin" References: <20161120024710.19187.31037.stgit@john-Precision-Tower-5810> <20161120025033.19187.11082.stgit@john-Precision-Tower-5810> <20161122011638-mutt-send-email-mst@kernel.org> <58340157.8060103@gmail.com> <20161122165400-mutt-send-email-mst@kernel.org> <5838ABF3.8060308@gmail.com> <20161128052211-mutt-send-email-mst@kernel.org> <583BAAD9.4080408@gmail.com> <20161128060446-mutt-send-email-mst@kernel.org> Cc: daniel@iogearbox.net, eric.dumazet@gmail.com, kubakici@wp.pl, shm@cumulusnetworks.com, davem@davemloft.net, alexei.starovoitov@gmail.com, netdev@vger.kernel.org, bblanco@plumgrid.com, john.r.fastabend@intel.com, brouer@redhat.com, tgraf@suug.ch From: John Fastabend Message-ID: <583CBD3D.1080808@gmail.com> Date: Mon, 28 Nov 2016 15:26:53 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <20161128060446-mutt-send-email-mst@kernel.org> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org [...] >> Perfect! hacking qemu for testing is no problem this helps a lot thanks >> and saves me time trying to figure out how to get qemu to do this. > > Pls note I didn't try this at all, so might not work, but should > give you the idea. > >>> >>> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c >>> index b68c69d..4866144 100644 >>> --- a/hw/net/virtio-net.c >>> +++ b/hw/net/virtio-net.c >>> @@ -1164,6 +1164,7 @@ static ssize_t virtio_net_receive(NetClientState *nc, const uint8_t *buf, size_t >>> offset = n->host_hdr_len; >>> total += n->guest_hdr_len; >>> guest_offset = n->guest_hdr_len; >>> + continue; >>> } else { >>> guest_offset = 0; >>> } >>> >>> >>> >>> here's one that should cap the 1st s/g to 100 bytes: >>> >>> >>> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c >>> index b68c69d..7943004 100644 >>> --- a/hw/net/virtio-net.c >>> +++ b/hw/net/virtio-net.c >>> @@ -1164,6 +1164,7 @@ static ssize_t virtio_net_receive(NetClientState *nc, const uint8_t *buf, size_t >>> offset = n->host_hdr_len; >>> total += n->guest_hdr_len; >>> guest_offset = n->guest_hdr_len; >>> + sg.iov_len = MIN(sg.iov_len, 100); >>> } else { >>> guest_offset = 0; >>> } >>> Here is the patch I went with, I'm using vhost=on: s += size; This seems to do the trick and with 100 I can use 'ping -s' to generate as many bufs is needed up to MTU. The patch I have seems to be working fine I'll let it run a bit and test it with some real traffic (not just ping) then push out a v3 assuming I don't find any issues. Thanks, John --- a/drivers/vhost/vhost.c +++ b/drivers/vhost/vhost.c @@ -1777,7 +1777,8 @@ static int translate_desc(struct vhost_virtqueue *vq, u64 _iov = iov + ret; size = node->size - addr + node->start; - _iov->iov_len = min((u64)len - s, size); + printk("%s: build 100 length headers!\n", __func__); + _iov->iov_len = min((u64)len - s, (u64)100);//size); _iov->iov_base = (void __user *)(unsigned long) (node->userspace_addr + addr - node->start);