On Mon, Apr 16, 2012 at 02:08:33PM +0800, Jason Wang wrote:Currently, we restart tx polling unconditionally when sendmsg()Why is this a problem?
fails. This would cause unnecessary wakeups of vhost wokers as it's
only needed when the socket send buffer were exceeded.
Fix this by--
restart the tx polling only when sendmsg() returns value other than
-EFAULT.
Signed-off-by: Jason Wang<jasowang@xxxxxxxxxx>
---
drivers/vhost/net.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c
index 29abd65..035fa95 100644
--- a/drivers/vhost/net.c
+++ b/drivers/vhost/net.c
@@ -262,7 +262,8 @@ static void handle_tx(struct vhost_net *net)
UIO_MAXIOV;
}
vhost_discard_vq_desc(vq, 1);
- tx_poll_start(net, sock);
+ if (err != -EFAULT)
+ tx_poll_start(net, sock);
break;
}
if (err != len)
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/