When setting up an outgoing user mode networking TCP connection,

disable the Nagle algorithm in the host-side connection.  Either
the VM is already doing Nagle, in which case there is no point
in doing it twice, or it has chosen to disable it, in which case
we should respect that choice.  This change speeds up GDB remote
debugging over TCP over user mode networking by multiple orders
of magnitude.
This commit is contained in:
gson 2012-05-12 09:56:51 +00:00
parent d2e7e05560
commit 1d3f55c61b
3 changed files with 25 additions and 3 deletions

View file

@ -1,7 +1,7 @@
# $NetBSD: Makefile,v 1.89 2012/03/15 11:53:26 obache Exp $
# $NetBSD: Makefile,v 1.90 2012/05/12 09:56:51 gson Exp $
DISTNAME= qemu-0.15.1
PKGREVISION= 4
PKGREVISION= 5
CATEGORIES= emulators
MASTER_SITES= http://wiki.qemu.org/download/

View file

@ -1,4 +1,4 @@
$NetBSD: distinfo,v 1.71 2011/10/19 18:45:42 ryoon Exp $
$NetBSD: distinfo,v 1.72 2012/05/12 09:56:51 gson Exp $
SHA1 (qemu-0.15.1.tar.gz) = 30cf3b4dabb4b5d8efadb20f364eb8181f317681
RMD160 (qemu-0.15.1.tar.gz) = fd1cfde94f96569af671cc96d1c2e4bad524fd61
@ -19,3 +19,4 @@ SHA1 (patch-hw_ppc__newworld.c) = a0011c05cd35aff8982b97c3ec669e18c11ad07b
SHA1 (patch-hw_ppc__oldworld.c) = 790daed4d0bdc51628a6252716480510f8c444c8
SHA1 (patch-hw_xilinx__axienet.c) = 6f715e4e2241c3c9006bc571084ca5fd12658f13
SHA1 (patch-ioport.c) = bb0c6671eaf39ef9b846d0ea2633cb1d56edddb1
SHA1 (patch-slirp_tcp__subr.c) = d2aca58ea0726b76b5f644af27fde0598beaf048

View file

@ -0,0 +1,21 @@
$NetBSD: patch-slirp_tcp__subr.c,v 1.1 2012/05/12 09:56:51 gson Exp $
When setting up an outgoing user mode networking TCP connection,
disable the Nagle algorithm in the host-side connection. Either
the VM is already doing Nagle, in which case there is no point
in doing it twice, or it has chosen to disable it, in which case
we should respect that choice. This change speeds up GDB remote
debugging over TCP over user mode networking by multiple orders
of magnitude.
--- slirp/tcp_subr.c.orig 2011-10-12 16:41:43.000000000 +0000
+++ slirp/tcp_subr.c
@@ -334,6 +334,8 @@ int tcp_fconnect(struct socket *so)
setsockopt(s,SOL_SOCKET,SO_REUSEADDR,(char *)&opt,sizeof(opt ));
opt = 1;
setsockopt(s,SOL_SOCKET,SO_OOBINLINE,(char *)&opt,sizeof(opt ));
+ opt = 1;
+ setsockopt(s,IPPROTO_TCP,TCP_NODELAY,(char *)&opt,sizeof(int));
addr.sin_family = AF_INET;
if ((so->so_faddr.s_addr & slirp->vnetwork_mask.s_addr) ==