Dear Maxime and Yuanhan,

Do you have any more question on this patch? According to the text in the spec, 
the vring/queue is supposed to be disable until a kick is received. This is to 
ensure that the kickfd is working properly prior to the operation and I think 
it makes sense. The only exception to this rule is when the driver opts out for 
the interrupt support (no kickfd) in VHOST_USER_SET_VRING_KICK message.

Steven

On 8/3/17, 7:12 AM, "dev on behalf of Steven Luong (sluong)" 
<dev-boun...@dpdk.org on behalf of slu...@cisco.com> wrote:

    Maxime,
    
    Thank you so much for the reply.
    
    1. It’s about conforming to the spec. Please read the text as I quoted in 
the email. A non-conforming implementation does not communicate with a 
conforming implementation such as VPP.
    2. QEMU’s implementation is conforming and it is sending kick for both TX 
and RX queues upon initialization.
    
    Steven
    
    On 8/3/17, 2:37 AM, "dev on behalf of Maxime Coquelin" 
<dev-boun...@dpdk.org on behalf of maxime.coque...@redhat.com> wrote:
    
        Hi Steven,
        
        On 08/01/2017 06:17 PM, Steven wrote:
        > Acccording to the spec, 
https://fossies.org/linux/qemu/docs/specs/vhost-user.txt
        > 
        > client must start ring upon receiving a kick (that is, detecting that 
file
        > descriptor is reachable) on the descriptor specified by
        > VHOST_USER_SET_VRING_KICK.
        > 
        > The code sends a kick to the rx queue. It is missing sending a kick 
for the
        > tx queue. This patch is to add the missing code to comply with the 
spec.
        > 
        > Signed-off-by: Steven <slu...@cisco.com>
        > ---
        >   drivers/net/virtio/virtio_ethdev.c | 5 +++++
        >   1 file changed, 5 insertions(+)
        > 
        > diff --git a/drivers/net/virtio/virtio_ethdev.c 
b/drivers/net/virtio/virtio_ethdev.c
        > index 00a3122..6362e14 100644
        > --- a/drivers/net/virtio/virtio_ethdev.c
        > +++ b/drivers/net/virtio/virtio_ethdev.c
        > @@ -1747,6 +1747,11 @@ virtio_dev_start(struct rte_eth_dev *dev)
        >               virtqueue_notify(rxvq->vq);
        >       }
        >   
        > +     for (i = 0; i < dev->data->nb_tx_queues; i++) {
        > +             txvq = dev->data->tx_queues[i];
        > +             virtqueue_notify(txvq->vq);
        > +     }
        > +
        
        I'm not sure to get why we would need to send Txq notification whereas
        no packet have been enqueued. That said, I don't think it hurts.
        
        Steven, does it solve a real problem you are facing with virtio-user?
        
        Yuanhan, what's your opinion on this?
        
        Cheers,
        Maxime
        
    
    

Reply via email to