[dpdk-dev] [PATCH] vhost: reset queue state in destroy_device

Rich Lane rich.lane at bigswitch.com
Fri Jul 1 18:31:12 CEST 2016


Fixes a bug where rte_eth_vhost_get_queue_event would not return enabled queues
after a guest application restart.

Fixes: ee584e9710b9 ("vhost: add driver on top of the library")
Signed-off-by: Rich Lane <rich.lane at bigswitch.com>
---
 drivers/net/vhost/rte_eth_vhost.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c
index c5bbb87..33e9728 100644
--- a/drivers/net/vhost/rte_eth_vhost.c
+++ b/drivers/net/vhost/rte_eth_vhost.c
@@ -303,6 +303,7 @@ destroy_device(int vid)
 	struct internal_list *list;
 	char ifname[PATH_MAX];
 	unsigned i;
+	struct rte_vhost_vring_state *state;
 
 	rte_vhost_get_ifname(vid, ifname, sizeof(ifname));
 	list = find_internal_resource(ifname);
@@ -345,6 +346,15 @@ destroy_device(int vid)
 		vq->vid = -1;
 	}
 
+	state = vring_states[eth_dev->data->port_id];
+	rte_spinlock_lock(&state->lock);
+	for (i = 0; i <= state->max_vring; i++) {
+		state->cur[i] = false;
+		state->seen[i] = false;
+	}
+	state->max_vring = 0;
+	rte_spinlock_unlock(&state->lock);
+
 	RTE_LOG(INFO, PMD, "Connection closed\n");
 
 	_rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC);
-- 
1.9.1



More information about the dev mailing list