[dpdk-dev] [PATCH v3 06/22] vhost: introduce API to fetch negotiated features

Maxime Coquelin maxime.coquelin at redhat.com
Fri Mar 31 09:45:11 CEST 2017



On 03/28/2017 02:45 PM, Yuanhan Liu wrote:
> Signed-off-by: Yuanhan Liu <yuanhan.liu at linux.intel.com>
> ---
>  lib/librte_vhost/rte_vhost_version.map |  1 +
>  lib/librte_vhost/rte_virtio_net.h      | 10 ++++++++++
>  lib/librte_vhost/vhost.c               | 12 ++++++++++++
>  3 files changed, 23 insertions(+)
>
> diff --git a/lib/librte_vhost/rte_vhost_version.map b/lib/librte_vhost/rte_vhost_version.map
> index 664a5f3..cec1e9e 100644
> --- a/lib/librte_vhost/rte_vhost_version.map
> +++ b/lib/librte_vhost/rte_vhost_version.map
> @@ -37,5 +37,6 @@ DPDK_17.05 {
>  	rte_vhost_driver_set_features;
>  	rte_vhost_get_mem_table;
>  	rte_vhost_get_mtu;
> +	rte_vhost_get_negotiated_features;
>
>  } DPDK_16.07;
> diff --git a/lib/librte_vhost/rte_virtio_net.h b/lib/librte_vhost/rte_virtio_net.h
> index 5a91f97..57e57e3 100644
> --- a/lib/librte_vhost/rte_virtio_net.h
> +++ b/lib/librte_vhost/rte_virtio_net.h
> @@ -154,6 +154,16 @@ struct virtio_net_device_ops {
>   */
>  uint64_t rte_vhost_driver_get_features(const char *path);
>
> +/**
> + * Get the feature bits after negotiation
> + *
> + * @param vid
> + *  Vhost device ID
> + * @return
> + *  Negotiated feature bits on success, 0 on failure
> + */
> +uint64_t rte_vhost_get_negotiated_features(int vid);
> +
>  /* Register callbacks. */
>  int rte_vhost_driver_callback_register(const char *path,
>  	struct virtio_net_device_ops const * const ops);
> diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c
> index 2b41652..08dccfb 100644
> --- a/lib/librte_vhost/vhost.c
> +++ b/lib/librte_vhost/vhost.c
> @@ -359,6 +359,18 @@ struct virtio_net *
>  	return 0;
>  }
>
> +uint64_t
> +rte_vhost_get_negotiated_features(int vid)
> +{
> +	struct virtio_net *dev;
> +
> +	dev = get_device(vid);
> +	if (!dev)
> +		return 0;
It's unlikely to happen with net devices, but as this series is about
generalizing the use of this lib, couldn't we have cases where the
negotiated features is 0?

If so, shouldn't be preferable the caller passes features pointer as
argument?

> +
> +	return dev->features;
> +}
> +
>  int
>  rte_vhost_get_mem_table(int vid, struct rte_vhost_memory **mem)
>  {
>

Thanks,
Maxime


More information about the dev mailing list