|
From: | Maxime Coquelin |
Subject: | Re: [Qemu-devel] [PATCH 1/4] vhost-user: fix multiple queue specification |
Date: | Tue, 16 Jan 2018 13:35:24 +0100 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 |
On 01/16/2018 04:00 AM, Michael S. Tsirkin wrote:
On Fri, Jan 12, 2018 at 03:56:55PM +0100, Maxime Coquelin wrote:The number of queues supported by the slave is queried with message VHOST_USER_GET_QUEUE_NUM, not with message VHOST_USER_GET_PROTOCOL_FEATURES. Also, looking at master and slave implemntations, the payload returned by the slave is the number of queue pairs supported by the slave, not the number of queues.virtio doesn't have a concept of queue pairs. virtio net does have a concept of a tx/rx pair for purposes of steering.
Ok, thanks for the clarification. I will have a look at how vhost-user SCSI implements it.
Would this be a slave bug then?
If I'm not mistaken, the bug is in QEMU: VHOST_USER_GET_QUEUE_NUM is stored in (struct vhost_dev).max_queues. vhost_net_get_max_queues() returns (struct vhost_dev).max_queues. And vhost_user_start() from net/vhost-user.c calls vhost_net_get_max_queues() to get the max number of tx/rx pairs. If we want to fix QEMU, I think we will need a new flag for compatibility with older/current backends that assume it represent a queue pair.
I've applied the 1st chunk for now.
Thanks.
Signed-off-by: Maxime Coquelin <address@hidden> --- docs/interop/vhost-user.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/interop/vhost-user.txt b/docs/interop/vhost-user.txt index d49444e037..8a14191a1e 100644 --- a/docs/interop/vhost-user.txt +++ b/docs/interop/vhost-user.txt @@ -214,8 +214,8 @@ Multiple queue is treated as a protocol extension, hence the slave has to implement protocol features first. The multiple queues feature is supported only when the protocol feature VHOST_USER_PROTOCOL_F_MQ (bit 0) is set.-The max number of queues the slave supports can be queried with message-VHOST_USER_GET_PROTOCOL_FEATURES. Master should stop when the number of +The max number of queue pairs the slave supports can be queried with message +VHOST_USER_GET_QUEUE_NUM. Master should stop when the number of requested queues is bigger than that.As all queues share one connection, the master uses a unique index for each@@ -537,7 +537,7 @@ Master message types Master payload: N/A Slave payload: u64- Query how many queues the backend supports. This request should be+ Query how many queue pairs the backend supports. This request should be sent only when VHOST_USER_PROTOCOL_F_MQ is set in queried protocol features by VHOST_USER_GET_PROTOCOL_FEATURES.--2.14.3
[Prev in Thread] | Current Thread | [Next in Thread] |