On 03/03/2017 10:51 AM, Yuanhan Liu wrote:
Signed-off-by: Yuanhan Liu <yuanhan....@linux.intel.com>
---
 lib/librte_vhost/rte_vhost_version.map |  1 +
 lib/librte_vhost/rte_virtio_net.h      |  1 +
 lib/librte_vhost/vhost.c               | 12 ++++++++++++
 3 files changed, 14 insertions(+)

diff --git a/lib/librte_vhost/rte_vhost_version.map 
b/lib/librte_vhost/rte_vhost_version.map
index b890da6..85a2796 100644
--- a/lib/librte_vhost/rte_vhost_version.map
+++ b/lib/librte_vhost/rte_vhost_version.map
@@ -35,6 +35,7 @@ DPDK_17.05 {
        rte_vhost_driver_enable_features;
        rte_vhost_driver_get_features;
        rte_vhost_driver_set_features;
+       rte_vhost_get_negotiated_features
        rte_vhost_get_vhost_memory;

 } DPDK_16.07;
diff --git a/lib/librte_vhost/rte_virtio_net.h 
b/lib/librte_vhost/rte_virtio_net.h
index eddf0f4..e7b1599 100644
--- a/lib/librte_vhost/rte_virtio_net.h
+++ b/lib/librte_vhost/rte_virtio_net.h
@@ -210,5 +210,6 @@ uint16_t rte_vhost_dequeue_burst(int vid, uint16_t queue_id,
        struct rte_mempool *mbuf_pool, struct rte_mbuf **pkts, uint16_t count);

 int rte_vhost_get_vhost_memory(int vid, struct rte_vhost_memory **mem);
+uint64_t rte_vhost_get_negotiated_features(int vid);

 #endif /* _VIRTIO_NET_H_ */
diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c
index eee229a..8046aef 100644
--- a/lib/librte_vhost/vhost.c
+++ b/lib/librte_vhost/vhost.c
@@ -340,6 +340,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 -1;
+
+       return dev->features;
+}
Are we sure the negotiation is done when we can get the device?

Maxime

Reply via email to