netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: "Xin, Xiaohui" <xiaohui.xin@intel.com>
Cc: Herbert Xu <herbert@gondor.hengli.com.au>,
	Stephen Hemminger <shemminger@vyatta.com>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"mingo@elte.hu" <mingo@elte.hu>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"jdike@linux.intel.com" <jdike@linux.intel.com>,
	Rusty Russell <rusty@rustcorp.com.au>
Subject: Re: [RFC PATCH v7 01/19] Add a new structure for skb buffer from external.
Date: Sun, 20 Jun 2010 13:06:32 +0300	[thread overview]
Message-ID: <20100620100631.GB4578@redhat.com> (raw)
In-Reply-To: <F2E9EB7348B8264F86B6AB8151CE2D7915089FE573@shsmsx502.ccr.corp.intel.com>

On Fri, Jun 18, 2010 at 03:14:18PM +0800, Xin, Xiaohui wrote:
> >-----Original Message-----
> >From: Herbert Xu [mailto:herbert@gondor.apana.org.au]
> >Sent: Friday, June 18, 2010 1:59 PM
> >To: Xin, Xiaohui
> >Cc: Stephen Hemminger; netdev@vger.kernel.org; kvm@vger.kernel.org;
> >linux-kernel@vger.kernel.org; mst@redhat.com; mingo@elte.hu; davem@davemloft.net;
> >jdike@linux.intel.com; Rusty Russell
> >Subject: Re: [RFC PATCH v7 01/19] Add a new structure for skb buffer from external.
> >
> >On Fri, Jun 18, 2010 at 01:26:49PM +0800, Xin, Xiaohui wrote:
> >>
> >> Herbert,
> >> I have questions about the idea above:
> >> 1) Since netdev_alloc_skb() is still there, and we only modify alloc_page(),
> >> then we don't need napi_gro_frags() any more, the driver's original receiving
> >> function is ok. Right?
> >
> >Well I was actually thinking about converting all drivers that
> >need this to napi_gro_frags.  But now that you mention it, yes
> >we could still keep the old interface to minimise the work.
> >
> >> 2) Is napi_gro_frags() only suitable for TCP protocol packet?
> >> I have done a small test for ixgbe driver to let it only allocate paged buffers
> >> and found kernel hangs when napi_gro_frags() receives an ARP packet.
> >
> >It should work with any packet.  In fact, I'm pretty sure the
> >other drivers (e.g., cxgb3) use that interface for all packets.
> >
> Thanks for the verification. By the way, does that mean that nearly all drivers can use the 
> same napi_gro_frags() to receive buffers though currently each driver has it's own receiving 
> function?
> 
> >> 3) As I have mentioned above, with this idea, netdev_alloc_skb() will allocate
> >> as usual, the data pointed by skb->data will be copied into the first guest buffer.
> >> That means we should reserve sufficient room in guest buffer. For PS mode
> >> supported driver (for example ixgbe), the room will be more than 128. After 128bytes,
> >> we will put the first frag data. Look into virtio-net.c the function page_to_skb()
> >> and receive_mergeable(), that means we should modify guest virtio-net driver to
> >> compute the offset as the parameter for skb_set_frag().
> >>
> >> How do you think about this? Attached is a patch to how to modify the guest driver.
> >> I reserve 512 bytes as an example, and transfer the header len of the skb in hdr->hdr_len.
> >
> >Expanding the buffer size to 512 bytes to accomodate PS mode
> >looks reasonable to me.
> >
> >However, I don't think we should increase the copy threshold to
> >512 bytes at the same time.  I don't have any figures myself but
> >I think if we are to make such a change it should be a separate
> >one and come with supporting numbers.
> >
> Let me have a look to see if I can retain the copy threshold as 128 bytes 
> and copy the header data safely.

Changing the guest virtio to match the backend is a problem,
this breaks migration etc.


> >Cheers,
> >--
> >Visit Openswan at http://www.openswan.org/
> >Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
> >Home Page: http://gondor.apana.org.au/~herbert/
> >PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

  parent reply	other threads:[~2010-06-20 10:06 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-05 10:14 [RFC PATCH v7 01/19] Add a new structure for skb buffer from external xiaohui.xin
2010-06-05 10:14 ` [RFC PATCH v7 02/19] Add a new struct for device to manipulate external buffer xiaohui.xin
2010-06-05 10:14   ` [RFC PATCH v7 03/19] Export 2 func for device to assign/deassign new strucure xiaohui.xin
2010-06-05 10:14     ` [RFC PATCH v7 04/19] Add a ndo_mp_port_prep pointer to net_device_ops xiaohui.xin
2010-06-05 10:14       ` [RFC PATCH v7 05/19] Add a function make external buffer owner to query capability xiaohui.xin
2010-06-05 10:14         ` [RFC PATCH v7 06/19] Add a function to indicate if device use external buffer xiaohui.xin
2010-06-05 10:14           ` [RFC PATCH v7 07/19] Add interface to get external buffers xiaohui.xin
2010-06-05 10:14             ` [RFC PATCH v7 08/19] Make __alloc_skb() to get external buffer xiaohui.xin
2010-06-05 10:14               ` [RFC PATCH v7 09/19] Ignore room skb_reserve() when device is using " xiaohui.xin
2010-06-05 10:14                 ` [RFC PATCH v7 10/19] Don't do skb recycle, if device use " xiaohui.xin
2010-06-05 10:14                   ` [RFC PATCH v7 11/19] Use callback to deal with skb_release_data() specially xiaohui.xin
2010-06-05 10:14                     ` [RFC PATCH v7 12/19] Add a hook to intercept external buffers from NIC driver xiaohui.xin
2010-06-05 10:14                       ` [RFC PATCH v7 13/19] To skip GRO if buffer is external currently xiaohui.xin
2010-06-05 10:14                         ` [RFC PATCH v7 14/19] Add header file for mp device xiaohui.xin
2010-06-05 10:14                           ` [RFC PATCH v7 15/19] Add basic funcs and ioctl to " xiaohui.xin
2010-06-05 10:14                             ` [RFC PATCH v7 16/19] Manipulate external buffers in " xiaohui.xin
2010-06-05 10:14                               ` [RFC PATCH v7 17/19] Export proto_ops to vhost-net driver xiaohui.xin
2010-06-05 10:14                                 ` [RFC PATCH v7 18/19] Add a kconfig entry and make entry for mp device xiaohui.xin
2010-06-05 10:14                                   ` [RFC PATCH v7 19/19] Provides multiple submits and asynchronous notifications xiaohui.xin
2010-06-05 10:14                                     ` [RFC PATCH v7 00/19] Provide a zero-copy method on KVM virtio-net xiaohui.xin
2010-06-05 14:56                     ` [RFC PATCH v7 11/19] Use callback to deal with skb_release_data() specially Eric Dumazet
2010-06-09  7:30                       ` Xin, Xiaohui
2010-06-05 14:53               ` [RFC PATCH v7 08/19] Make __alloc_skb() to get external buffer Eric Dumazet
2010-06-09  7:34                 ` Xin, Xiaohui
2010-06-05 14:51     ` [RFC PATCH v7 03/19] Export 2 func for device to assign/deassign new strucure Eric Dumazet
2010-06-06 23:13 ` [RFC PATCH v7 01/19] Add a new structure for skb buffer from external Stephen Hemminger
2010-06-07  7:51   ` Andi Kleen
2010-06-07  8:17     ` Mitchell Erblich
2010-06-09  9:22       ` Xin, Xiaohui
2010-06-09  8:48     ` Xin, Xiaohui
2010-06-08  5:27   ` Herbert Xu
2010-06-09  9:54     ` Xin, Xiaohui
2010-06-11  5:21       ` Herbert Xu
2010-06-12  9:31         ` Xin, Xiaohui
2010-06-13  8:58           ` Xin, Xiaohui
2010-06-17 11:21             ` Herbert Xu
2010-06-18  5:26               ` Xin, Xiaohui
2010-06-18  5:59                 ` Herbert Xu
2010-06-18  7:14                   ` Xin, Xiaohui
2010-06-18  7:45                     ` Herbert Xu
2010-06-20 10:06                     ` Michael S. Tsirkin [this message]
2010-06-20 10:32                       ` Herbert Xu
2010-06-20 10:39                         ` Michael S. Tsirkin
2010-06-20 11:02                           ` Herbert Xu
2010-06-20 11:11                             ` Michael S. Tsirkin
2010-06-20 11:36                               ` Herbert Xu
2010-06-20 11:47                                 ` Michael S. Tsirkin
2010-06-20 11:59                                   ` Herbert Xu
2010-06-20 12:48                                     ` Michael S. Tsirkin
2010-06-20 15:19                                     ` Ben Hutchings
2010-06-23  8:09                 ` Dong, Eddie
2010-06-23  9:52                   ` Herbert Xu
2010-06-23 10:05                     ` Dong, Eddie
2010-06-24 10:08                       ` Herbert Xu
2010-06-25  1:03                         ` Dong, Eddie
2010-06-25 11:06                           ` Michael S. Tsirkin
2010-06-27  6:14                           ` Herbert Xu
2010-06-28  9:56                             ` Xin, Xiaohui
2010-06-28 10:00                               ` Michael S. Tsirkin
2010-07-03  9:12                               ` Herbert Xu
2010-06-25  2:07                         ` Xin, Xiaohui
2010-06-17 11:20           ` Herbert Xu
2010-06-09  8:29   ` Xin, Xiaohui

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100620100631.GB4578@redhat.com \
    --to=mst@redhat.com \
    --cc=davem@davemloft.net \
    --cc=herbert@gondor.hengli.com.au \
    --cc=jdike@linux.intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=netdev@vger.kernel.org \
    --cc=rusty@rustcorp.com.au \
    --cc=shemminger@vyatta.com \
    --cc=xiaohui.xin@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).