X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_eal%2Flinuxapp%2Fkni%2Fkni_misc.c;h=a69477c7163435764dc835e5b260d836f2ab755b;hb=e9d48c0072d36eb6423b45fba4ec49d0def6c36f;hp=79ab1f9b9233b2f5b21796f98c9dc52f1f4ce66b;hpb=9c61145ff6f977dd55ccf6c293f842eb768f45c2;p=dpdk.git diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c b/lib/librte_eal/linuxapp/kni/kni_misc.c index 79ab1f9b92..a69477c716 100644 --- a/lib/librte_eal/linuxapp/kni/kni_misc.c +++ b/lib/librte_eal/linuxapp/kni/kni_misc.c @@ -1,7 +1,7 @@ /*- * GPL LICENSE SUMMARY * - * Copyright(c) 2010-2013 Intel Corporation. All rights reserved. + * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License as @@ -193,6 +193,9 @@ kni_release(struct inode *inode, struct file *file) dev->pthread = NULL; } +#ifdef RTE_KNI_VHOST + kni_vhost_backend_release(dev); +#endif kni_dev_remove(dev); list_del(&dev->list); } @@ -217,7 +220,11 @@ kni_thread_single(void *unused) for (j = 0; j < KNI_RX_LOOP_NUM; j++) { list_for_each_entry_safe(dev, n, &kni_list_head, list) { +#ifdef RTE_KNI_VHOST + kni_chk_vhost_rx(dev); +#else kni_net_rx(dev); +#endif kni_net_poll_resp(dev); } } @@ -238,7 +245,11 @@ kni_thread_multiple(void *param) while (!kthread_should_stop()) { for (j = 0; j < KNI_RX_LOOP_NUM; j++) { +#ifdef RTE_KNI_VHOST + kni_chk_vhost_rx(dev); +#else kni_net_rx(dev); +#endif kni_net_poll_resp(dev); } schedule_timeout_interruptible(usecs_to_jiffies( \ @@ -361,6 +372,10 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned long ioctl_param) kni->mbuf_kva = phys_to_virt(dev_info.mbuf_phys); kni->mbuf_va = dev_info.mbuf_va; +#ifdef RTE_KNI_VHOST + kni->vhost_queue = NULL; + kni->vq_status = BE_STOP; +#endif kni->mbuf_size = dev_info.mbuf_size; KNI_PRINT("tx_phys: 0x%016llx, tx_q addr: 0x%p\n", @@ -443,6 +458,10 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned long ioctl_param) return -ENODEV; } +#ifdef RTE_KNI_VHOST + kni_vhost_init(kni); +#endif + /** * Create a new kernel thread for multiple mode, set its core affinity, * and finally wake it up. @@ -497,6 +516,9 @@ kni_ioctl_release(unsigned int ioctl_num, unsigned long ioctl_param) dev->pthread = NULL; } +#ifdef RTE_KNI_VHOST + kni_vhost_backend_release(dev); +#endif kni_dev_remove(dev); list_del(&dev->list); ret = 0;