Subject: Re: [RFC PATCH 1/4] Add a new API to virtio-pci

From: Rusty Russell <[email-masked]>
Date: Thu, 9 Sep 2010 21:44:25 +0930

On Thu, 9 Sep 2010 02:53:52 pm Krishna Kumar2 wrote:
> Rusty Russell <[email-masked]> wrote on 09/09/2010 09:19:39 AM:
> 
> > On Wed, 8 Sep 2010 04:59:05 pm Krishna Kumar wrote:
> > > Add virtio_get_queue_index() to get the queue index of a
> > > vq.  This is needed by the cb handler to locate the queue
> > > that should be processed.
> >
> > This seems a bit weird.  I mean, the driver used vdev->config->find_vqs
> > to find the queues, which returns them (in order).  So, can't you put
> this
> > into your struct send_queue?
> 
> I am saving the vqs in the send_queue, but the cb needs
> to locate the device txq from the svq. The only other way
> I could think of is to iterate through the send_queue's
> and compare svq against sq[i]->svq, but cb's happen quite
> a bit. Is there a better way?

Ah, good point.  Move the queue index into the struct virtqueue?

> > Also, why define VIRTIO_MAX_TXQS?  If the driver can't handle all of
> them,
> > it should simply not use them...
> 
> The main reason was vhost :) Since vhost_net_release
> should not fail (__fput can't handle f_op->release()
> failure), I needed a maximum number of socks to
> clean up:

Ah, then it belongs in the vhost headers.  The guest shouldn't see such
a restriction if it doesn't apply; it's a host thing.

Oh, and I think you could profitably use virtio_config_val(), too.

Thanks!
Rusty.