net/vhost: fix queue state not reset on destroy
Fixes a bug where rte_eth_vhost_get_queue_event would not return enabled
queues after a guest application restart.
Fixes: ee584e9710
("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>
This commit is contained in:
parent
bb7085b46a
commit
f4e4b1f1f8
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user