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

Message ID 1467390672-80701-1-git-send-email-rich.lane@bigswitch.com (mailing list archive)
State Accepted, archived
Delegated to: Yuanhan Liu
Headers

Commit Message

Rich Lane July 1, 2016, 4:31 p.m. UTC
  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@bigswitch.com>
---
 drivers/net/vhost/rte_eth_vhost.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
  

Comments

Yuanhan Liu July 4, 2016, 2:24 a.m. UTC | #1
On Fri, Jul 01, 2016 at 09:31:12AM -0700, Rich Lane wrote:
> 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@bigswitch.com>

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

Just some minor comments about the title (nothing big deal; it's just
some DPDK preferences):

- a bug fix patch need be titled as "fix ..."

- it's better to hide specific function in the title. If you run
  "scripts/check-git-log.sh", you will find a warning.

- the prefix should be "net/vhost".

So, I'd like to reword the title a bit, to something like:

    "net/vhost: fix queue state not reset on destroy"

If have no objection, I could fix it while apply.

	--yliu
  
Yuanhan Liu July 11, 2016, 2:06 a.m. UTC | #2
On Mon, Jul 04, 2016 at 10:24:41AM +0800, Yuanhan Liu wrote:
> On Fri, Jul 01, 2016 at 09:31:12AM -0700, Rich Lane wrote:
> > 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@bigswitch.com>
> 
> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
> 
> Just some minor comments about the title (nothing big deal; it's just
> some DPDK preferences):
> 
> - a bug fix patch need be titled as "fix ..."
> 
> - it's better to hide specific function in the title. If you run
>   "scripts/check-git-log.sh", you will find a warning.
> 
> - the prefix should be "net/vhost".
> 
> So, I'd like to reword the title a bit, to something like:
> 
>     "net/vhost: fix queue state not reset on destroy"
> 
> If have no objection, I could fix it while apply.

Applied to dpdk-next-virtio, with above minor fixes included.

Thanks.

	--yliu
  

Patch

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);