X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fvhost%2Frte_eth_vhost.c;h=32ad27fe4e09d73edc7c2c3ef7f5c4585c1146cb;hb=30410493759f4bae3f65497737661e27b93c2d0e;hp=e55278af696047359fcef7c7eb182dd2d2f5089f;hpb=3d4cd4be577c335f9f07c78d125686f5b073c5a5;p=dpdk.git diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c index e55278af69..32ad27fe4e 100644 --- a/drivers/net/vhost/rte_eth_vhost.c +++ b/drivers/net/vhost/rte_eth_vhost.c @@ -832,7 +832,7 @@ new_device(int vid) VHOST_LOG(INFO, "Vhost device %d created\n", vid); - _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); + rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); return 0; } @@ -889,7 +889,7 @@ destroy_device(int vid) VHOST_LOG(INFO, "Vhost device %d destroyed\n", vid); eth_vhost_uninstall_intr(eth_dev); - _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); + rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_INTR_LSC, NULL); } static int @@ -968,7 +968,7 @@ vring_state_changed(int vid, uint16_t vring, int enable) VHOST_LOG(INFO, "vring%u is %s\n", vring, enable ? "enabled" : "disabled"); - _rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_QUEUE_STATE, NULL); + rte_eth_dev_callback_process(eth_dev, RTE_ETH_EVENT_QUEUE_STATE, NULL); return 0; } @@ -1164,16 +1164,19 @@ eth_dev_stop(struct rte_eth_dev *dev) update_queuing_status(dev); } -static void +static int eth_dev_close(struct rte_eth_dev *dev) { struct pmd_internal *internal; struct internal_list *list; unsigned int i; + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return 0; + internal = dev->data->dev_private; if (!internal) - return; + return 0; eth_dev_stop(dev); @@ -1201,6 +1204,8 @@ eth_dev_close(struct rte_eth_dev *dev) rte_free(vring_states[dev->data->port_id]); vring_states[dev->data->port_id] = NULL; + + return 0; } static int @@ -1385,7 +1390,6 @@ static const struct eth_dev_ops ops = { .rx_queue_release = eth_queue_release, .tx_queue_release = eth_queue_release, .tx_done_cleanup = eth_tx_done_cleanup, - .rx_queue_count = eth_rx_queue_count, .link_update = eth_link_update, .stats_get = eth_stats_get, .stats_reset = eth_stats_reset, @@ -1442,11 +1446,12 @@ eth_dev_vhost_create(struct rte_vdev_device *dev, char *iface_name, internal->flags = flags; internal->disable_flags = disable_flags; data->dev_link = pmd_link; - data->dev_flags = RTE_ETH_DEV_INTR_LSC | RTE_ETH_DEV_CLOSE_REMOVE; + data->dev_flags = RTE_ETH_DEV_INTR_LSC; data->promiscuous = 1; data->all_multicast = 1; eth_dev->dev_ops = &ops; + eth_dev->rx_queue_count = eth_rx_queue_count; /* finally assign rx and tx ops */ eth_dev->rx_pkt_burst = eth_vhost_rx; @@ -1653,11 +1658,7 @@ rte_pmd_vhost_remove(struct rte_vdev_device *dev) if (eth_dev == NULL) return 0; - if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return rte_eth_dev_release_port(eth_dev); - eth_dev_close(eth_dev); - rte_eth_dev_release_port(eth_dev); return 0;