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
next prev parent reply other threads:[~2010-06-20 10:11 UTC|newest]
Thread overview: 119+ 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` xiaohui.xin
2010-06-05 10:14 ` [RFC PATCH v7 16/19] Manipulate external buffers in " xiaohui.xin
2010-06-05 10:14 ` 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 ` 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 ` 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 ` 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 10:14 ` 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-05 14:56 ` Eric Dumazet
2010-06-09 7:30 ` Xin, Xiaohui
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-05 14:53 ` Eric Dumazet
2010-06-09 7:34 ` Xin, Xiaohui
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-05 14:51 ` 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-06 23:13 ` Stephen Hemminger
2010-06-07 7:51 ` Andi Kleen
2010-06-07 7:51 ` Andi Kleen
2010-06-07 8:17 ` Mitchell Erblich
2010-06-07 8:17 ` Mitchell Erblich
2010-06-09 9:22 ` Xin, Xiaohui
2010-06-09 9:22 ` Xin, Xiaohui
2010-06-09 8:48 ` Xin, Xiaohui
2010-06-09 8:48 ` Xin, Xiaohui
2010-06-08 5:27 ` Herbert Xu
2010-06-08 5:27 ` Herbert Xu
2010-06-09 9:54 ` Xin, Xiaohui
2010-06-09 9:54 ` Xin, Xiaohui
2010-06-11 5:21 ` Herbert Xu
2010-06-11 5:21 ` Herbert Xu
2010-06-12 9:31 ` Xin, Xiaohui
2010-06-12 9:31 ` Xin, Xiaohui
2010-06-13 8:58 ` Xin, Xiaohui
2010-06-13 8:58 ` Xin, Xiaohui
2010-06-17 11:21 ` Herbert Xu
2010-06-17 11:21 ` Herbert Xu
2010-06-18 5:26 ` Xin, Xiaohui
2010-06-18 5:26 ` Xin, Xiaohui
2010-06-18 5:59 ` Herbert Xu
2010-06-18 5:59 ` Herbert Xu
2010-06-18 7:14 ` Xin, Xiaohui
2010-06-18 7:14 ` Xin, Xiaohui
2010-06-18 7:45 ` Herbert Xu
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:32 ` Herbert Xu
2010-06-20 10:39 ` Michael S. Tsirkin
2010-06-20 11:02 ` Herbert Xu
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:36 ` Herbert Xu
2010-06-20 11:47 ` Michael S. Tsirkin
2010-06-20 11:59 ` Herbert Xu
2010-06-20 11:59 ` Herbert Xu
2010-06-20 12:48 ` Michael S. Tsirkin
2010-06-20 15:19 ` Ben Hutchings
2010-06-20 15:19 ` Ben Hutchings
2010-06-23 8:09 ` Dong, Eddie
2010-06-23 8:09 ` Dong, Eddie
2010-06-23 9:52 ` Herbert Xu
2010-06-23 9:52 ` Herbert Xu
2010-06-23 10:05 ` Dong, Eddie
2010-06-23 10:05 ` Dong, Eddie
2010-06-24 10:08 ` Herbert Xu
2010-06-24 10:08 ` Herbert Xu
2010-06-25 1:03 ` Dong, Eddie
2010-06-25 1:03 ` Dong, Eddie
2010-06-25 11:06 ` Michael S. Tsirkin
2010-06-27 6:14 ` Herbert Xu
2010-06-27 6:14 ` Herbert Xu
2010-06-28 9:56 ` Xin, Xiaohui
2010-06-28 9:56 ` Xin, Xiaohui
2010-06-28 10:00 ` Michael S. Tsirkin
2010-07-03 9:12 ` Herbert Xu
2010-07-03 9:12 ` Herbert Xu
2010-06-25 2:07 ` Xin, Xiaohui
2010-06-25 2:07 ` Xin, Xiaohui
2010-06-17 11:20 ` Herbert Xu
2010-06-17 11:20 ` Herbert Xu
2010-06-09 8:29 ` Xin, Xiaohui
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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.