From: Jason Wang <jasowang@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: krkumar2@in.ibm.com, kvm@vger.kernel.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org,
bhutchings@solarflare.com, jwhan@filewood.snu.ac.kr,
shiyer@redhat.com
Subject: Re: [net-next rfc v7 2/3] virtio_net: multiqueue support
Date: Tue, 04 Dec 2012 17:24:54 +0800 [thread overview]
Message-ID: <1836549.oV9l61gUO6@jason-thinkpad-t430s> (raw)
In-Reply-To: <20121203111118.GC26167@redhat.com>
On Monday, December 03, 2012 01:11:18 PM Michael S. Tsirkin wrote:
> On Mon, Dec 03, 2012 at 06:01:58PM +0800, Jason Wang wrote:
> > On 12/03/2012 05:47 PM, Michael S. Tsirkin wrote:
> > > On Mon, Dec 03, 2012 at 02:05:27PM +0800, Jason Wang wrote:
> > >> On Monday, December 03, 2012 12:34:08 PM Rusty Russell wrote:
> > >>> Jason Wang <jasowang@redhat.com> writes:
> > >>>> +static const struct ethtool_ops virtnet_ethtool_ops;
> > >>>> +
> > >>>> +/*
> > >>>> + * Converting between virtqueue no. and kernel tx/rx queue no.
> > >>>> + * 0:rx0 1:tx0 2:cvq 3:rx1 4:tx1 ... 2N+1:rxN 2N+2:txN
> > >>>> + */
> > >>>> +static int vq2txq(struct virtqueue *vq)
> > >>>> +{
> > >>>> + int index = virtqueue_get_queue_index(vq);
> > >>>> + return index == 1 ? 0 : (index - 2) / 2;
> > >>>> +}
> > >>>> +
> > >>>> +static int txq2vq(int txq)
> > >>>> +{
> > >>>> + return txq ? 2 * txq + 2 : 1;
> > >>>> +}
> > >>>> +
> > >>>> +static int vq2rxq(struct virtqueue *vq)
> > >>>> +{
> > >>>> + int index = virtqueue_get_queue_index(vq);
> > >>>> + return index ? (index - 1) / 2 : 0;
> > >>>> +}
> > >>>> +
> > >>>> +static int rxq2vq(int rxq)
> > >>>> +{
> > >>>> + return rxq ? 2 * rxq + 1 : 0;
> > >>>> +}
> > >>>> +
> > >>>
> > >>> I thought MST changed the proposed spec to make the control queue
> > >>> always
> > >>> the last one, so this logic becomes trivial.
> > >>
> > >> But it may break the support of legacy guest. If we boot a legacy
> > >> single queue guest on a 2 queue virtio-net device. It may think vq 2
> > >> is cvq which is indeed rx1.
> > >
> > > Legacy guyest support should be handled by host using feature
> > > bits in the usual way: host should detect legacy guest
> > > by checking the VIRTIO_NET_F_RFS feature.
> > >
> > > If VIRTIO_NET_F_RFS is acked, cvq is vq max_virtqueue_pairs * 2.
> > > If it's not acked, cvq is vq 2.
> >
> > We could, but we didn't gain much from this.
>
> It just seems cleaner and easier to understand.
>
> > Furthermore, we need also
> > do the dynamic creation/destroying of virtqueues during feature
> > negotiation which seems not supported in qemu now.
>
> It's not *done* in qemu now, but it seems easy: just call
> virtio_add_queue for vq2 and on from virtio_net_set_features.
> As features can be modified multiple times, we
> should add virtio_del_queue and call that beforehand
> to get to the known state (two vqs).
And also need some work after migration like what we need in setting features.
I'm ok with this method, will change to follow spec v5.
Thanks
next prev parent reply other threads:[~2012-12-04 9:24 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-27 10:15 [net-next rfc v7 0/3] Multiqueue virtio-net Jason Wang
2012-11-27 10:15 ` [net-next rfc v7 1/3] virtio-net: separate fields of sending/receiving queue from virtnet_info Jason Wang
2012-12-03 1:55 ` Rusty Russell
2012-12-03 5:15 ` Jason Wang
2012-12-03 11:18 ` Michael S. Tsirkin
2012-12-04 9:22 ` Jason Wang
2012-12-04 3:43 ` Rusty Russell
2012-12-04 9:23 ` Jason Wang
2012-11-27 10:15 ` [net-next rfc v7 2/3] virtio_net: multiqueue support Jason Wang
2012-12-02 16:06 ` Michael S. Tsirkin
2012-12-03 5:47 ` Jason Wang
2012-12-03 2:04 ` Rusty Russell
2012-12-03 6:05 ` Jason Wang
2012-12-03 9:47 ` Michael S. Tsirkin
2012-12-03 10:01 ` Jason Wang
2012-12-03 11:11 ` Michael S. Tsirkin
2012-12-04 9:24 ` Jason Wang [this message]
2012-12-03 10:14 ` Michael S. Tsirkin
2012-12-03 10:30 ` Jason Wang
2012-12-03 11:00 ` Michael S. Tsirkin
2012-12-04 7:35 ` Michael S. Tsirkin
2012-12-04 9:27 ` Jason Wang
2012-11-27 10:16 ` [net-next rfc v7 3/3] virtio-net: change the number of queues through ethtool Jason Wang
2012-12-02 16:09 ` Michael S. Tsirkin
2012-12-03 6:09 ` Jason Wang
2012-12-03 11:25 ` Michael S. Tsirkin
2012-12-04 0:22 ` Ben Hutchings
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=1836549.oV9l61gUO6@jason-thinkpad-t430s \
--to=jasowang@redhat.com \
--cc=bhutchings@solarflare.com \
--cc=jwhan@filewood.snu.ac.kr \
--cc=krkumar2@in.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mst@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=shiyer@redhat.com \
--cc=virtualization@lists.linux-foundation.org \
/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