DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] net/virtio-user: fix LSC not working
@ 2017-04-14  6:10 Jianfeng Tan
  2017-04-19  2:14 ` Yuanhan Liu
  0 siblings, 1 reply; 2+ messages in thread
From: Jianfeng Tan @ 2017-04-14  6:10 UTC (permalink / raw)
  To: dev; +Cc: yuanhan.liu, Jianfeng Tan

Previously, we miss to set intr_handle->fd which will be used as
target file for epoll to check LSC.

As a result, stdin (0) is used and intr thread keeps busy whenever
data comes from stdin.

To fix this, we use vhostfd as the target file for epoll to check
the link status change events. And we move intr_handle initialization
after vhost backend settup to make sure vhostfd is initialized.

Fixes: 35c4f8554833 ("net/virtio-user: support to report net status")

Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
---
 drivers/net/virtio/virtio_user/virtio_user_dev.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c
index c9e8ac5..450404b 100644
--- a/drivers/net/virtio/virtio_user/virtio_user_dev.c
+++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c
@@ -271,6 +271,8 @@ virtio_user_fill_intr_handle(struct virtio_user_dev *dev)
 	eth_dev->intr_handle->nb_efd = dev->max_queue_pairs;
 	eth_dev->intr_handle->max_intr = dev->max_queue_pairs + 1;
 	eth_dev->intr_handle->type = RTE_INTR_HANDLE_VDEV;
+	if (dev->vhostfd >= 0)
+		eth_dev->intr_handle->fd = dev->vhostfd;
 
 	return 0;
 }
@@ -284,12 +286,6 @@ virtio_user_dev_setup(struct virtio_user_dev *dev)
 	dev->vhostfds = NULL;
 	dev->tapfds = NULL;
 
-	if (virtio_user_dev_init_notify(dev) < 0)
-		return -1;
-
-	if (virtio_user_fill_intr_handle(dev) < 0)
-		return -1;
-
 	if (is_vhost_user_by_type(dev->path)) {
 		dev->ops = &ops_user;
 	} else {
@@ -308,7 +304,16 @@ virtio_user_dev_setup(struct virtio_user_dev *dev)
 		}
 	}
 
-	return dev->ops->setup(dev);
+	if (dev->ops->setup(dev) < 0)
+		return -1;
+
+	if (virtio_user_dev_init_notify(dev) < 0)
+		return -1;
+
+	if (virtio_user_fill_intr_handle(dev) < 0)
+		return -1;
+
+	return 0;
 }
 
 /* Use below macro to filter features from vhost backend */
-- 
2.7.4

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [dpdk-dev] [PATCH] net/virtio-user: fix LSC not working
  2017-04-14  6:10 [dpdk-dev] [PATCH] net/virtio-user: fix LSC not working Jianfeng Tan
@ 2017-04-19  2:14 ` Yuanhan Liu
  0 siblings, 0 replies; 2+ messages in thread
From: Yuanhan Liu @ 2017-04-19  2:14 UTC (permalink / raw)
  To: Jianfeng Tan; +Cc: dev

On Fri, Apr 14, 2017 at 06:10:30AM +0000, Jianfeng Tan wrote:
> Previously, we miss to set intr_handle->fd which will be used as
> target file for epoll to check LSC.
> 
> As a result, stdin (0) is used and intr thread keeps busy whenever
> data comes from stdin.
> 
> To fix this, we use vhostfd as the target file for epoll to check
> the link status change events. And we move intr_handle initialization
> after vhost backend settup to make sure vhostfd is initialized.
> 
> Fixes: 35c4f8554833 ("net/virtio-user: support to report net status")
> 
> Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>

Applied to dpdk-next-virtio.

Thanks.

	--yliu

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-04-19  2:17 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-14  6:10 [dpdk-dev] [PATCH] net/virtio-user: fix LSC not working Jianfeng Tan
2017-04-19  2:14 ` Yuanhan Liu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).