@@ -442,8 +442,10 @@ struct dp_netdev_pmd_thread {
pthread_t thread;
unsigned core_id; /* CPU core id of this pmd thread. */
int numa_id; /* numa node id of this pmd thread. */
- atomic_int tx_qid; /* Queue id used by this pmd thread to
- * send packets on all netdevs */
+
+ /* Queue id used by this pmd thread to send packets on all netdevs.
+ * All tx_qid's are unique and less than 'ovs_numa_get_n_cores() + 1'. */
+ atomic_int tx_qid;
struct ovs_mutex port_mutex; /* Mutex for 'poll_list' and 'tx_ports'. */
/* List of rx queues to poll. */
@@ -2296,15 +2296,15 @@ destroy_device(volatile struct virtio_net *virtio_dev)
ovs_mutex_lock(&dev->mutex);
virtio_dev->flags &= ~VIRTIO_DEV_RUNNING;
ovsrcu_set(&dev->virtio_dev, NULL);
- /* Clear txq settings. */
+ /* Clear tx/rx queue settings. */
netdev_dpdk_txq_map_clear(dev);
- dev->up.n_rxq = NR_QUEUE;
- dev->up.n_txq = NR_QUEUE;
- dev->requested_n_rxq = dev->up.n_rxq;
- dev->requested_n_txq = dev->up.n_txq;
- exists = true;
+ dev->requested_n_rxq = NR_QUEUE;
+ dev->requested_n_txq = NR_QUEUE;
+ netdev_request_reconfigure(&dev->up);
+
netdev_change_seq_changed(&dev->up);
ovs_mutex_unlock(&dev->mutex);
+ exists = true;
break;
}
}