All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yuanhan Liu <yuanhan.liu@linux.intel.com>
To: dev@dpdk.org
Cc: Maxime Coquelin <maxime.coquelin@redhat.com>,
	Harris James R <james.r.harris@intel.com>,
	Liu Changpeng <changpeng.liu@intel.com>,
	Yuanhan Liu <yuanhan.liu@linux.intel.com>
Subject: [PATCH v3 03/22] vhost: use new APIs to handle features
Date: Tue, 28 Mar 2017 20:45:23 +0800	[thread overview]
Message-ID: <1490705142-893-4-git-send-email-yuanhan.liu@linux.intel.com> (raw)
In-Reply-To: <1490705142-893-1-git-send-email-yuanhan.liu@linux.intel.com>

Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
---

v3: fix comment typo
---
 examples/tep_termination/main.c        |  4 +++-
 examples/vhost/main.c                  | 43 +++++++++++++++++++++-------------
 lib/librte_vhost/rte_vhost_version.map |  3 ---
 lib/librte_vhost/rte_virtio_net.h      | 13 ----------
 lib/librte_vhost/socket.c              | 23 +++++++++++++++++-
 lib/librte_vhost/vhost.c               | 42 ---------------------------------
 lib/librte_vhost/vhost.h               | 21 +++++++++++++++++
 lib/librte_vhost/vhost_user.c          |  8 +++----
 8 files changed, 77 insertions(+), 80 deletions(-)

diff --git a/examples/tep_termination/main.c b/examples/tep_termination/main.c
index 20dafdb..8097dcd 100644
--- a/examples/tep_termination/main.c
+++ b/examples/tep_termination/main.c
@@ -1248,12 +1248,14 @@ static inline void __attribute__((always_inline))
 		rte_eal_remote_launch(switch_worker,
 			mbuf_pool, lcore_id);
 	}
-	rte_vhost_feature_disable(1ULL << VIRTIO_NET_F_MRG_RXBUF);
 
 	ret = rte_vhost_driver_register((char *)&dev_basename, 0);
 	if (ret != 0)
 		rte_exit(EXIT_FAILURE, "failed to register vhost driver.\n");
 
+	rte_vhost_driver_disable_features(dev_basename,
+		1ULL << VIRTIO_NET_F_MRG_RXBUF);
+
 	rte_vhost_driver_callback_register(&virtio_net_device_ops);
 
 	rte_vhost_driver_session_start();
diff --git a/examples/vhost/main.c b/examples/vhost/main.c
index 4789947..972a6a8 100644
--- a/examples/vhost/main.c
+++ b/examples/vhost/main.c
@@ -328,16 +328,6 @@ struct mbuf_table {
 
 	if (port >= rte_eth_dev_count()) return -1;
 
-	if (enable_tx_csum == 0)
-		rte_vhost_feature_disable(1ULL << VIRTIO_NET_F_CSUM);
-
-	if (enable_tso == 0) {
-		rte_vhost_feature_disable(1ULL << VIRTIO_NET_F_HOST_TSO4);
-		rte_vhost_feature_disable(1ULL << VIRTIO_NET_F_HOST_TSO6);
-		rte_vhost_feature_disable(1ULL << VIRTIO_NET_F_GUEST_TSO4);
-		rte_vhost_feature_disable(1ULL << VIRTIO_NET_F_GUEST_TSO6);
-	}
-
 	rx_rings = (uint16_t)dev_info.max_rx_queues;
 	/* Configure ethernet device. */
 	retval = rte_eth_dev_configure(port, rx_rings, tx_rings, &port_conf);
@@ -531,7 +521,6 @@ struct mbuf_table {
 			vmdq_conf_default.rx_adv_conf.vmdq_rx_conf.rx_mode =
 				ETH_VMDQ_ACCEPT_BROADCAST |
 				ETH_VMDQ_ACCEPT_MULTICAST;
-			rte_vhost_feature_enable(1ULL << VIRTIO_NET_F_CTRL_RX);
 
 			break;
 
@@ -1509,9 +1498,6 @@ static inline void __attribute__((always_inline))
 	RTE_LCORE_FOREACH_SLAVE(lcore_id)
 		rte_eal_remote_launch(switch_worker, NULL, lcore_id);
 
-	if (mergeable == 0)
-		rte_vhost_feature_disable(1ULL << VIRTIO_NET_F_MRG_RXBUF);
-
 	if (client_mode)
 		flags |= RTE_VHOST_USER_CLIENT;
 
@@ -1520,13 +1506,38 @@ static inline void __attribute__((always_inline))
 
 	/* Register vhost user driver to handle vhost messages. */
 	for (i = 0; i < nb_sockets; i++) {
-		ret = rte_vhost_driver_register
-				(socket_files + i * PATH_MAX, flags);
+		char *file = socket_files + i * PATH_MAX;
+		ret = rte_vhost_driver_register(file, flags);
 		if (ret != 0) {
 			unregister_drivers(i);
 			rte_exit(EXIT_FAILURE,
 				"vhost driver register failure.\n");
 		}
+		if (mergeable == 0) {
+			rte_vhost_driver_disable_features(file,
+				1ULL << VIRTIO_NET_F_MRG_RXBUF);
+		}
+
+		if (enable_tx_csum == 0) {
+			rte_vhost_driver_disable_features(file,
+				1ULL << VIRTIO_NET_F_CSUM);
+		}
+
+		if (enable_tso == 0) {
+			rte_vhost_driver_disable_features(file,
+				1ULL << VIRTIO_NET_F_HOST_TSO4);
+			rte_vhost_driver_disable_features(file,
+				1ULL << VIRTIO_NET_F_HOST_TSO6);
+			rte_vhost_driver_disable_features(file,
+				1ULL << VIRTIO_NET_F_GUEST_TSO4);
+			rte_vhost_driver_disable_features(file,
+				1ULL << VIRTIO_NET_F_GUEST_TSO6);
+		}
+
+		if (promiscuous) {
+			rte_vhost_driver_enable_features(file,
+				1ULL << VIRTIO_NET_F_CTRL_RX);
+		}
 	}
 
 	rte_vhost_driver_callback_register(&virtio_net_device_ops);
diff --git a/lib/librte_vhost/rte_vhost_version.map b/lib/librte_vhost/rte_vhost_version.map
index ca6259c..1150017 100644
--- a/lib/librte_vhost/rte_vhost_version.map
+++ b/lib/librte_vhost/rte_vhost_version.map
@@ -7,9 +7,6 @@ DPDK_2.0 {
 	rte_vhost_driver_session_start;
 	rte_vhost_enable_guest_notification;
 	rte_vhost_enqueue_burst;
-	rte_vhost_feature_disable;
-	rte_vhost_feature_enable;
-	rte_vhost_feature_get;
 
 	local: *;
 };
diff --git a/lib/librte_vhost/rte_virtio_net.h b/lib/librte_vhost/rte_virtio_net.h
index 3daf35c..5dadd3d 100644
--- a/lib/librte_vhost/rte_virtio_net.h
+++ b/lib/librte_vhost/rte_virtio_net.h
@@ -70,19 +70,6 @@ struct virtio_net_device_ops {
 	void *reserved[5]; /**< Reserved for future extension */
 };
 
-/**
- *  Disable features in feature_mask. Returns 0 on success.
- */
-int rte_vhost_feature_disable(uint64_t feature_mask);
-
-/**
- *  Enable features in feature_mask. Returns 0 on success.
- */
-int rte_vhost_feature_enable(uint64_t feature_mask);
-
-/* Returns currently supported vhost features */
-uint64_t rte_vhost_feature_get(void);
-
 int rte_vhost_enable_guest_notification(int vid, uint16_t queue_id, int enable);
 
 /**
diff --git a/lib/librte_vhost/socket.c b/lib/librte_vhost/socket.c
index e3f3450..87801c0 100644
--- a/lib/librte_vhost/socket.c
+++ b/lib/librte_vhost/socket.c
@@ -577,7 +577,13 @@ struct vhost_user_reconnect_list {
 	vsocket = find_vhost_user_socket(path);
 	pthread_mutex_unlock(&vhost_user.mutex);
 
-	return vsocket ? vsocket->features : (uint64_t)-1;
+	if (!vsocket) {
+		RTE_LOG(ERR, VHOST_CONFIG,
+			"socket file %s is not registered yet.\n", path);
+		return 0;
+	} else {
+		return vsocket->features;
+	}
 }
 
 /*
@@ -611,6 +617,21 @@ struct vhost_user_reconnect_list {
 	pthread_mutex_init(&vsocket->conn_mutex, NULL);
 	vsocket->dequeue_zero_copy = flags & RTE_VHOST_USER_DEQUEUE_ZERO_COPY;
 
+	/*
+	 * Set the supported features correctly for the builtin vhost-user
+	 * net driver.
+	 *
+	 * Applications know nothing about features the builtin virtio net
+	 * driver (virtio_net.c) supports, thus it's not possible for them
+	 * to invoke rte_vhost_driver_set_features(). To workaround it, here
+	 * we set it unconditionally. If the application want to implement
+	 * another vhost-user driver (say SCSI), it should call the
+	 * rte_vhost_driver_set_features(), which will overwrite following
+	 * two values.
+	 */
+	vsocket->supported_features = VIRTIO_NET_SUPPORTED_FEATURES;
+	vsocket->features           = VIRTIO_NET_SUPPORTED_FEATURES;
+
 	if ((flags & RTE_VHOST_USER_CLIENT) != 0) {
 		vsocket->reconnect = !(flags & RTE_VHOST_USER_NO_RECONNECT);
 		if (vsocket->reconnect && reconn_tid == 0) {
diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c
index dfb08db..7b40a92 100644
--- a/lib/librte_vhost/vhost.c
+++ b/lib/librte_vhost/vhost.c
@@ -49,28 +49,6 @@
 
 #include "vhost.h"
 
-#define VHOST_USER_F_PROTOCOL_FEATURES	30
-
-/* Features supported by this lib. */
-#define VHOST_SUPPORTED_FEATURES ((1ULL << VIRTIO_NET_F_MRG_RXBUF) | \
-				(1ULL << VIRTIO_NET_F_CTRL_VQ) | \
-				(1ULL << VIRTIO_NET_F_CTRL_RX) | \
-				(1ULL << VIRTIO_NET_F_GUEST_ANNOUNCE) | \
-				(1ULL << VIRTIO_NET_F_MQ)      | \
-				(1ULL << VIRTIO_F_VERSION_1)   | \
-				(1ULL << VHOST_F_LOG_ALL)      | \
-				(1ULL << VHOST_USER_F_PROTOCOL_FEATURES) | \
-				(1ULL << VIRTIO_NET_F_HOST_TSO4) | \
-				(1ULL << VIRTIO_NET_F_HOST_TSO6) | \
-				(1ULL << VIRTIO_NET_F_CSUM)    | \
-				(1ULL << VIRTIO_NET_F_GUEST_CSUM) | \
-				(1ULL << VIRTIO_NET_F_GUEST_TSO4) | \
-				(1ULL << VIRTIO_NET_F_GUEST_TSO6) | \
-				(1ULL << VIRTIO_RING_F_INDIRECT_DESC) | \
-				(1ULL << VIRTIO_NET_F_MTU))
-
-uint64_t VHOST_FEATURES = VHOST_SUPPORTED_FEATURES;
-
 struct virtio_net *vhost_devices[MAX_VHOST_DEVICE];
 
 /* device ops to add/remove device to/from data core. */
@@ -419,26 +397,6 @@ struct virtio_net *
 	return 0;
 }
 
-uint64_t rte_vhost_feature_get(void)
-{
-	return VHOST_FEATURES;
-}
-
-int rte_vhost_feature_disable(uint64_t feature_mask)
-{
-	VHOST_FEATURES = VHOST_FEATURES & ~feature_mask;
-	return 0;
-}
-
-int rte_vhost_feature_enable(uint64_t feature_mask)
-{
-	if ((feature_mask & VHOST_SUPPORTED_FEATURES) == feature_mask) {
-		VHOST_FEATURES = VHOST_FEATURES | feature_mask;
-		return 0;
-	}
-	return -1;
-}
-
 /*
  * Register ops so that we can add/remove device to data core.
  */
diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h
index daa9328..692691b 100644
--- a/lib/librte_vhost/vhost.h
+++ b/lib/librte_vhost/vhost.h
@@ -133,6 +133,27 @@ struct vhost_virtqueue {
  #define VIRTIO_F_VERSION_1 32
 #endif
 
+#define VHOST_USER_F_PROTOCOL_FEATURES	30
+
+/* Features supported by this builtin vhost-user net driver. */
+#define VIRTIO_NET_SUPPORTED_FEATURES ((1ULL << VIRTIO_NET_F_MRG_RXBUF) | \
+				(1ULL << VIRTIO_NET_F_CTRL_VQ) | \
+				(1ULL << VIRTIO_NET_F_CTRL_RX) | \
+				(1ULL << VIRTIO_NET_F_GUEST_ANNOUNCE) | \
+				(1ULL << VIRTIO_NET_F_MQ)      | \
+				(1ULL << VIRTIO_F_VERSION_1)   | \
+				(1ULL << VHOST_F_LOG_ALL)      | \
+				(1ULL << VHOST_USER_F_PROTOCOL_FEATURES) | \
+				(1ULL << VIRTIO_NET_F_HOST_TSO4) | \
+				(1ULL << VIRTIO_NET_F_HOST_TSO6) | \
+				(1ULL << VIRTIO_NET_F_CSUM)    | \
+				(1ULL << VIRTIO_NET_F_GUEST_CSUM) | \
+				(1ULL << VIRTIO_NET_F_GUEST_TSO4) | \
+				(1ULL << VIRTIO_NET_F_GUEST_TSO6) | \
+				(1ULL << VIRTIO_RING_F_INDIRECT_DESC) | \
+				(1ULL << VIRTIO_NET_F_MTU))
+
+
 struct guest_page {
 	uint64_t guest_phys_addr;
 	uint64_t host_phys_addr;
diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index 7c6a5f7..d630098 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -147,9 +147,9 @@
  * The features that we support are requested.
  */
 static uint64_t
-vhost_user_get_features(void)
+vhost_user_get_features(struct virtio_net *dev)
 {
-	return VHOST_FEATURES;
+	return rte_vhost_driver_get_features(dev->ifname);
 }
 
 /*
@@ -158,7 +158,7 @@
 static int
 vhost_user_set_features(struct virtio_net *dev, uint64_t features)
 {
-	if (features & ~VHOST_FEATURES)
+	if (features & ~rte_vhost_driver_get_features(dev->ifname))
 		return -1;
 
 	dev->features = features;
@@ -1006,7 +1006,7 @@
 
 	switch (msg.request) {
 	case VHOST_USER_GET_FEATURES:
-		msg.payload.u64 = vhost_user_get_features();
+		msg.payload.u64 = vhost_user_get_features(dev);
 		msg.size = sizeof(msg.payload.u64);
 		send_vhost_message(fd, &msg);
 		break;
-- 
1.9.0

  parent reply	other threads:[~2017-03-28 12:48 UTC|newest]

Thread overview: 135+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-03  9:51 [PATCH 00/17] vhost: generic vhost API Yuanhan Liu
2017-03-03  9:51 ` [PATCH 01/17] vhost: introduce driver features related APIs Yuanhan Liu
2017-03-14  9:46   ` Maxime Coquelin
2017-03-14  9:53     ` Maxime Coquelin
2017-03-16  7:08       ` Yuanhan Liu
2017-03-16  9:18         ` Maxime Coquelin
2017-03-17  5:50           ` Yuanhan Liu
2017-03-03  9:51 ` [PATCH 02/17] net/vhost: remove feature " Yuanhan Liu
2017-03-14 10:15   ` Maxime Coquelin
2017-03-03  9:51 ` [PATCH 03/17] vhost: use new APIs to handle features Yuanhan Liu
2017-03-14 10:43   ` Maxime Coquelin
2017-03-16  7:43     ` Yuanhan Liu
2017-03-16  9:39       ` Maxime Coquelin
2017-03-17  5:48         ` Yuanhan Liu
2017-03-03  9:51 ` [PATCH 04/17] vhost: make notify ops per vhost driver Yuanhan Liu
2017-03-14 10:55   ` Maxime Coquelin
2017-03-16  7:50     ` Yuanhan Liu
2017-03-03  9:51 ` [PATCH 05/17] vhost: export guest memory regions Yuanhan Liu
2017-03-14 11:00   ` Maxime Coquelin
2017-03-03  9:51 ` [PATCH 06/17] vhost: introduce API to fetch negotiated features Yuanhan Liu
2017-03-14 11:02   ` Maxime Coquelin
2017-03-16  7:35     ` Yuanhan Liu
2017-03-16  9:22       ` Maxime Coquelin
2017-03-17  5:49         ` Yuanhan Liu
2017-03-03  9:51 ` [PATCH 07/17] vhost: export vhost vring info Yuanhan Liu
2017-03-14 12:11   ` Maxime Coquelin
2017-03-16  7:24     ` Yuanhan Liu
2017-03-16  9:20       ` Maxime Coquelin
2017-03-03  9:51 ` [PATCH 08/17] vhost: export API to translate gpa to vva Yuanhan Liu
2017-03-14 12:24   ` Maxime Coquelin
2017-03-03  9:51 ` [PATCH 09/17] vhost: turn queue pair to vring Yuanhan Liu
2017-03-14 12:31   ` Maxime Coquelin
2017-03-03  9:51 ` [PATCH 10/17] vhost: export the number of vrings Yuanhan Liu
2017-03-14 12:33   ` Maxime Coquelin
2017-03-03  9:51 ` [PATCH 11/17] vhost: move the device ready check at proper place Yuanhan Liu
2017-03-14 12:37   ` Maxime Coquelin
2017-03-03  9:51 ` [PATCH 12/17] vhost: drop the Rx and Tx queue macro Yuanhan Liu
2017-03-14 12:42   ` Maxime Coquelin
2017-03-03  9:51 ` [PATCH 13/17] vhost: do not include net specific headers Yuanhan Liu
2017-03-14 12:46   ` Maxime Coquelin
2017-03-20  7:32   ` Liu, Changpeng
2017-03-22  6:21     ` Yuanhan Liu
2017-03-03  9:51 ` [PATCH 14/17] vhost: rename device ops struct Yuanhan Liu
2017-03-14 12:48   ` Maxime Coquelin
2017-03-03  9:51 ` [PATCH 15/17] vhost: rename virtio-net to vhost Yuanhan Liu
2017-03-14 12:50   ` Maxime Coquelin
2017-03-03  9:51 ` [PATCH 16/17] vhost: rename header file Yuanhan Liu
2017-03-14 12:59   ` Maxime Coquelin
2017-03-20  5:35     ` Yuanhan Liu
2017-03-03  9:51 ` [PATCH 17/17] examples/vhost: demonstrate the new generic vhost APIs Yuanhan Liu
2017-03-23  7:10 ` [PATCH v2 00/22] vhost: generic vhost API Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 01/22] vhost: introduce driver features related APIs Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 02/22] net/vhost: remove feature " Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 03/22] vhost: use new APIs to handle features Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 04/22] vhost: make notify ops per vhost driver Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 05/22] vhost: export guest memory regions Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 06/22] vhost: introduce API to fetch negotiated features Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 07/22] vhost: export vhost vring info Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 08/22] vhost: export API to translate gpa to vva Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 09/22] vhost: turn queue pair to vring Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 10/22] vhost: export the number of vrings Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 11/22] vhost: move the device ready check at proper place Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 12/22] vhost: drop the Rx and Tx queue macro Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 13/22] vhost: do not include net specific headers Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 14/22] vhost: rename device ops struct Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 15/22] vhost: rename virtio-net to vhost Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 16/22] vhost: add features changed callback Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 17/22] vhost: export APIs for live migration support Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 18/22] vhost: introduce API to start a specific driver Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 19/22] vhost: rename header file Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 20/22] vhost: workaround the build dependency on mbuf header Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 21/22] vhost: do not destroy device on repeat mem table message Yuanhan Liu
2017-03-23  7:10   ` [PATCH v2 22/22] examples/vhost: demonstrate the new generic vhost APIs Yuanhan Liu
2017-03-28 12:45   ` [PATCH v3 00/22] vhost: generic vhost API Yuanhan Liu
2017-03-28 12:45     ` [PATCH v3 01/22] vhost: introduce driver features related APIs Yuanhan Liu
2017-03-28 12:45     ` [PATCH v3 02/22] net/vhost: remove feature " Yuanhan Liu
2017-03-28 12:45     ` Yuanhan Liu [this message]
2017-03-29 14:57       ` [PATCH v3 03/22] vhost: use new APIs to handle features Maxime Coquelin
2017-03-28 12:45     ` [PATCH v3 04/22] vhost: make notify ops per vhost driver Yuanhan Liu
2017-03-29 15:03       ` Maxime Coquelin
2017-03-28 12:45     ` [PATCH v3 05/22] vhost: export guest memory regions Yuanhan Liu
2017-03-28 12:45     ` [PATCH v3 06/22] vhost: introduce API to fetch negotiated features Yuanhan Liu
2017-03-31  7:45       ` Maxime Coquelin
2017-03-31  8:51         ` Yuanhan Liu
2017-03-28 12:45     ` [PATCH v3 07/22] vhost: export vhost vring info Yuanhan Liu
2017-03-31  7:48       ` Maxime Coquelin
2017-03-28 12:45     ` [PATCH v3 08/22] vhost: export API to translate gpa to vva Yuanhan Liu
2017-03-28 12:45     ` [PATCH v3 09/22] vhost: turn queue pair to vring Yuanhan Liu
2017-03-28 12:45     ` [PATCH v3 10/22] vhost: export the number of vrings Yuanhan Liu
2017-03-28 12:45     ` [PATCH v3 11/22] vhost: move the device ready check at proper place Yuanhan Liu
2017-03-28 12:45     ` [PATCH v3 12/22] vhost: drop the Rx and Tx queue macro Yuanhan Liu
2017-03-28 12:45     ` [PATCH v3 13/22] vhost: do not include net specific headers Yuanhan Liu
2017-03-28 12:45     ` [PATCH v3 14/22] vhost: rename device ops struct Yuanhan Liu
2017-03-28 12:45     ` [PATCH v3 15/22] vhost: rename virtio-net to vhost Yuanhan Liu
2017-03-28 12:45     ` [PATCH v3 16/22] vhost: add features changed callback Yuanhan Liu
2017-03-31  7:50       ` Maxime Coquelin
2017-03-28 12:45     ` [PATCH v3 17/22] vhost: export APIs for live migration support Yuanhan Liu
2017-03-31  8:05       ` Maxime Coquelin
2017-03-28 12:45     ` [PATCH v3 18/22] vhost: introduce API to start a specific driver Yuanhan Liu
2017-03-31  9:11       ` Maxime Coquelin
2017-03-28 12:45     ` [PATCH v3 19/22] vhost: rename header file Yuanhan Liu
2017-03-28 12:45     ` [PATCH v3 20/22] vhost: workaround the build dependency on mbuf header Yuanhan Liu
2017-03-31  9:13       ` Maxime Coquelin
2017-03-28 12:45     ` [PATCH v3 21/22] vhost: do not destroy device on repeat mem table message Yuanhan Liu
2017-03-31  9:26       ` Maxime Coquelin
2017-03-28 12:45     ` [PATCH v3 22/22] examples/vhost: demonstrate the new generic vhost APIs Yuanhan Liu
2017-04-01  7:22     ` [PATCH v4 00/22] vhost: generic vhost API Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 01/22] vhost: introduce driver features related APIs Yuanhan Liu
2017-04-05  0:01         ` Thomas Monjalon
2017-04-01  7:22       ` [PATCH v4 02/22] net/vhost: remove feature " Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 03/22] vhost: use new APIs to handle features Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 04/22] vhost: make notify ops per vhost driver Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 05/22] vhost: export guest memory regions Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 06/22] vhost: introduce API to fetch negotiated features Yuanhan Liu
2017-04-01  8:28         ` Maxime Coquelin
2017-04-01  7:22       ` [PATCH v4 07/22] vhost: export vhost vring info Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 08/22] vhost: export API to translate gpa to vva Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 09/22] vhost: turn queue pair to vring Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 10/22] vhost: export the number of vrings Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 11/22] vhost: move the device ready check at proper place Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 12/22] vhost: drop the Rx and Tx queue macro Yuanhan Liu
2017-04-05  0:17         ` Thomas Monjalon
2017-04-01  7:22       ` [PATCH v4 13/22] vhost: do not include net specific headers Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 14/22] vhost: rename device ops struct Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 15/22] vhost: rename virtio-net to vhost Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 16/22] vhost: add features changed callback Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 17/22] vhost: export APIs for live migration support Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 18/22] vhost: introduce API to start a specific driver Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 19/22] vhost: rename header file Yuanhan Liu
2017-04-05  0:26         ` Thomas Monjalon
2017-04-05  5:16           ` Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 20/22] vhost: workaround the build dependency on mbuf header Yuanhan Liu
2017-04-01  7:22       ` [PATCH v4 21/22] vhost: do not destroy device on repeat mem table message Yuanhan Liu
2017-04-01  7:23       ` [PATCH v4 22/22] examples/vhost: demonstrate the new generic vhost APIs Yuanhan Liu
2017-04-01  8:44       ` [PATCH v4 00/22] vhost: generic vhost API Yuanhan Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1490705142-893-4-git-send-email-yuanhan.liu@linux.intel.com \
    --to=yuanhan.liu@linux.intel.com \
    --cc=changpeng.liu@intel.com \
    --cc=dev@dpdk.org \
    --cc=james.r.harris@intel.com \
    --cc=maxime.coquelin@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.