X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fkni%2Frte_eth_kni.c;h=d88cb1778eae618a822ace63d277d94b789f87e2;hb=422397c56cb573802964469b32e9ae5988621fb2;hp=38a3bd5a05f4cda23b133a5cf7af0d4fef8edf1d;hpb=696fbc7bb4fc8ae7a45c147bac188edbf2057d1f;p=dpdk.git diff --git a/drivers/net/kni/rte_eth_kni.c b/drivers/net/kni/rte_eth_kni.c index 38a3bd5a05..d88cb1778e 100644 --- a/drivers/net/kni/rte_eth_kni.c +++ b/drivers/net/kni/rte_eth_kni.c @@ -156,6 +156,8 @@ eth_kni_dev_start(struct rte_eth_dev *dev) } if (internals->no_request_thread == 0) { + internals->stop_thread = 0; + ret = rte_ctrl_thread_create(&internals->thread, "kni_handle_req", NULL, kni_handle_request, internals); @@ -177,7 +179,7 @@ eth_kni_dev_stop(struct rte_eth_dev *dev) struct pmd_internals *internals = dev->data->dev_private; int ret; - if (internals->no_request_thread == 0) { + if (internals->no_request_thread == 0 && internals->stop_thread == 0) { internals->stop_thread = 1; ret = pthread_cancel(internals->thread); @@ -187,8 +189,6 @@ eth_kni_dev_stop(struct rte_eth_dev *dev) ret = pthread_join(internals->thread, NULL); if (ret) PMD_LOG(ERR, "Can't join the thread"); - - internals->stop_thread = 0; } dev->data->dev_link.link_status = 0; @@ -318,7 +318,7 @@ eth_kni_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) return 0; } -static void +static int eth_kni_stats_reset(struct rte_eth_dev *dev) { struct rte_eth_dev_data *data = dev->data; @@ -335,6 +335,8 @@ eth_kni_stats_reset(struct rte_eth_dev *dev) q->tx.pkts = 0; q->tx.bytes = 0; } + + return 0; } static const struct eth_dev_ops eth_kni_ops = { @@ -375,6 +377,8 @@ eth_kni_create(struct rte_vdev_device *vdev, data->nb_tx_queues = 1; data->dev_link = pmd_link; data->mac_addrs = &internals->eth_addr; + data->promiscuous = 1; + data->all_multicast = 1; data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;