From: Rusty Russell <rusty@rustcorp.com.au>
To: Jason Wang <jasowang@redhat.com>,
mst@redhat.com, krkumar2@in.ibm.com,
virtualization@lists.linux-foundation.org,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: bhutchings@solarflare.com, jwhan@filewood.snu.ac.kr,
shiyer@redhat.com, kvm@vger.kernel.org
Subject: Re: [net-next rfc v7 2/3] virtio_net: multiqueue support
Date: Mon, 03 Dec 2012 12:34:08 +1030 [thread overview]
Message-ID: <87vccjj3hj.fsf@rustcorp.com.au> (raw)
In-Reply-To: <1354011360-39479-3-git-send-email-jasowang@redhat.com>
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.
> +static int virtnet_set_queues(struct virtnet_info *vi)
> +{
> + struct scatterlist sg;
> + struct virtio_net_ctrl_rfs s;
> + struct net_device *dev = vi->dev;
> +
> + s.virtqueue_pairs = vi->curr_queue_pairs;
> + sg_init_one(&sg, &s, sizeof(s));
> +
> + if (!vi->has_cvq)
> + return -EINVAL;
> +
> + if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_RFS,
> + VIRTIO_NET_CTRL_RFS_VQ_PAIRS_SET, &sg, 1, 0)){
> + dev_warn(&dev->dev, "Fail to set the number of queue pairs to"
> + " %d\n", vi->curr_queue_pairs);
> + return -EINVAL;
> + }
Where do we check the VIRTIO_NET_F_RFS bit?
> static int virtnet_probe(struct virtio_device *vdev)
> {
> - int err;
> + int i, err;
> struct net_device *dev;
> struct virtnet_info *vi;
> + u16 curr_queue_pairs;
> +
> + /* Find if host supports multiqueue virtio_net device */
> + err = virtio_config_val(vdev, VIRTIO_NET_F_RFS,
> + offsetof(struct virtio_net_config,
> + max_virtqueue_pairs), &curr_queue_pairs);
> +
> + /* We need at least 2 queue's */
> + if (err)
> + curr_queue_pairs = 1;
Huh? Just call this queue_pairs. It's not curr_ at all...
> + if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ))
> + vi->has_cvq = true;
> +
> + /* Use single tx/rx queue pair as default */
> + vi->curr_queue_pairs = 1;
> + vi->max_queue_pairs = curr_queue_pairs;
See...
Cheers,
Rusty.
WARNING: multiple messages have this Message-ID (diff)
From: Rusty Russell <rusty@rustcorp.com.au>
To: Jason Wang <jasowang@redhat.com>,
mst@redhat.com, krkumar2@in.ibm.com,
virtualization@lists.linux-foundation.org,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: kvm@vger.kernel.org, bhutchings@solarflare.com,
jwhan@filewood.snu.ac.kr, shiyer@redhat.com,
Jason Wang <jasowang@redhat.com>
Subject: Re: [net-next rfc v7 2/3] virtio_net: multiqueue support
Date: Mon, 03 Dec 2012 12:34:08 +1030 [thread overview]
Message-ID: <87vccjj3hj.fsf@rustcorp.com.au> (raw)
In-Reply-To: <1354011360-39479-3-git-send-email-jasowang@redhat.com>
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.
> +static int virtnet_set_queues(struct virtnet_info *vi)
> +{
> + struct scatterlist sg;
> + struct virtio_net_ctrl_rfs s;
> + struct net_device *dev = vi->dev;
> +
> + s.virtqueue_pairs = vi->curr_queue_pairs;
> + sg_init_one(&sg, &s, sizeof(s));
> +
> + if (!vi->has_cvq)
> + return -EINVAL;
> +
> + if (!virtnet_send_command(vi, VIRTIO_NET_CTRL_RFS,
> + VIRTIO_NET_CTRL_RFS_VQ_PAIRS_SET, &sg, 1, 0)){
> + dev_warn(&dev->dev, "Fail to set the number of queue pairs to"
> + " %d\n", vi->curr_queue_pairs);
> + return -EINVAL;
> + }
Where do we check the VIRTIO_NET_F_RFS bit?
> static int virtnet_probe(struct virtio_device *vdev)
> {
> - int err;
> + int i, err;
> struct net_device *dev;
> struct virtnet_info *vi;
> + u16 curr_queue_pairs;
> +
> + /* Find if host supports multiqueue virtio_net device */
> + err = virtio_config_val(vdev, VIRTIO_NET_F_RFS,
> + offsetof(struct virtio_net_config,
> + max_virtqueue_pairs), &curr_queue_pairs);
> +
> + /* We need at least 2 queue's */
> + if (err)
> + curr_queue_pairs = 1;
Huh? Just call this queue_pairs. It's not curr_ at all...
> + if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ))
> + vi->has_cvq = true;
> +
> + /* Use single tx/rx queue pair as default */
> + vi->curr_queue_pairs = 1;
> + vi->max_queue_pairs = curr_queue_pairs;
See...
Cheers,
Rusty.
next prev parent reply other threads:[~2012-12-03 2:04 UTC|newest]
Thread overview: 53+ 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 ` 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-11-27 10:15 ` Jason Wang
2012-12-03 1:55 ` Rusty Russell
2012-12-03 1:55 ` Rusty Russell
2012-12-03 5:15 ` Jason Wang
2012-12-03 11:18 ` Michael S. Tsirkin
2012-12-03 11:18 ` Michael S. Tsirkin
2012-12-04 9:22 ` Jason Wang
2012-12-04 9:22 ` Jason Wang
2012-12-04 3:43 ` Rusty Russell
2012-12-04 3:43 ` Rusty Russell
2012-12-04 9:23 ` Jason Wang
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-11-27 10:15 ` Jason Wang
2012-12-02 16:06 ` Michael S. Tsirkin
2012-12-03 5:47 ` Jason Wang
2012-12-03 5:47 ` Jason Wang
2012-12-02 16:06 ` Michael S. Tsirkin
2012-12-03 2:04 ` Rusty Russell [this message]
2012-12-03 2:04 ` Rusty Russell
2012-12-03 6:05 ` Jason Wang
2012-12-03 6:05 ` Jason Wang
2012-12-03 9:47 ` Michael S. Tsirkin
2012-12-03 9:47 ` Michael S. Tsirkin
2012-12-03 10:01 ` Jason Wang
2012-12-03 10:01 ` Jason Wang
2012-12-03 11:11 ` Michael S. Tsirkin
2012-12-04 9:24 ` Jason Wang
2012-12-04 9:24 ` Jason Wang
2012-12-03 11:11 ` Michael S. Tsirkin
2012-12-03 10:14 ` Michael S. Tsirkin
2012-12-03 10:14 ` Michael S. Tsirkin
2012-12-03 10:30 ` Jason Wang
2012-12-03 10:30 ` Jason Wang
2012-12-03 11:00 ` Michael S. Tsirkin
2012-12-03 11:00 ` Michael S. Tsirkin
2012-12-04 7:35 ` Michael S. Tsirkin
2012-12-04 7:35 ` Michael S. Tsirkin
2012-12-04 9:27 ` Jason Wang
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-11-27 10:16 ` Jason Wang
2012-12-02 16:09 ` Michael S. Tsirkin
2012-12-02 16:09 ` Michael S. Tsirkin
2012-12-03 6:09 ` Jason Wang
2012-12-03 6:09 ` Jason Wang
2012-12-03 11:25 ` Michael S. Tsirkin
2012-12-03 11:25 ` Michael S. Tsirkin
2012-12-04 0:22 ` Ben Hutchings
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=87vccjj3hj.fsf@rustcorp.com.au \
--to=rusty@rustcorp.com.au \
--cc=bhutchings@solarflare.com \
--cc=jasowang@redhat.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 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.