On Thu, Oct 15, 2015 at 02:08:39PM +0300, Marcel Apfelbaum wrote:
> Make vhost-user virtio 1.0 compatible by adding it to the
> supported features and keeping the header length
> the same as for mergeable RX buffers.
> 
> Signed-off-by: Marcel Apfelbaum <marcel at redhat.com>

Looks good to me

Acked-by: Michael S. Tsirkin <mst at redhat.com>

Just one question: dpdk is only supported on little-endian
platforms at the moment, right?
virtio 1 spec requires little endian.

> ---
> 
> To be applied on top of:
>    [dpdk-dev] [PATCH v6 00/13] vhost-user multiple queues enabling
> 
> Thanks,
> Marcel
>     
>  lib/librte_vhost/virtio-net.c | 15 ++++++++-------
>  1 file changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/lib/librte_vhost/virtio-net.c b/lib/librte_vhost/virtio-net.c
> index a51327d..ee4650e 100644
> --- a/lib/librte_vhost/virtio-net.c
> +++ b/lib/librte_vhost/virtio-net.c
> @@ -75,6 +75,7 @@ static struct virtio_net_config_ll *ll_root;
>                               (1ULL << VIRTIO_NET_F_CTRL_VQ) | \
>                               (1ULL << VIRTIO_NET_F_CTRL_RX) | \
>                               (1ULL << VIRTIO_NET_F_MQ)      | \
> +                             (1ULL << VIRTIO_F_VERSION_1)   | \
>                               (1ULL << VHOST_F_LOG_ALL)      | \
>                               (1ULL << VHOST_USER_F_PROTOCOL_FEATURES))
>  static uint64_t VHOST_FEATURES = VHOST_SUPPORTED_FEATURES;
> @@ -477,17 +478,17 @@ set_features(struct vhost_device_ctx ctx, uint64_t *pu)
>               return -1;
>  
>       dev->features = *pu;
> -     if (dev->features & (1 << VIRTIO_NET_F_MRG_RXBUF)) {
> -             LOG_DEBUG(VHOST_CONFIG,
> -                     "(%"PRIu64") Mergeable RX buffers enabled\n",
> -                     dev->device_fh);
> +     if (dev->features &
> +         ((1 << VIRTIO_NET_F_MRG_RXBUF) | (1ULL << VIRTIO_F_VERSION_1))) {
>               vhost_hlen = sizeof(struct virtio_net_hdr_mrg_rxbuf);
>       } else {
> -             LOG_DEBUG(VHOST_CONFIG,
> -                     "(%"PRIu64") Mergeable RX buffers disabled\n",
> -                     dev->device_fh);
>               vhost_hlen = sizeof(struct virtio_net_hdr);
>       }
> +     LOG_DEBUG(VHOST_CONFIG,
> +              "(%"PRIu64") Mergeable RX buffers %s, virtio 1 %s\n",
> +               dev->device_fh,
> +              (dev->features & (1 << VIRTIO_NET_F_MRG_RXBUF)) ? "on" : "off",
> +              (dev->features & (1ULL << VIRTIO_F_VERSION_1)) ? "on" : "off");
>  
>       for (i = 0; i < dev->virt_qp_nb; i++) {
>               uint16_t base_idx = i * VIRTIO_QNUM;
> -- 
> 2.1.0

Reply via email to