diff options
author | David Turner <digit@android.com> | 2011-08-15 15:01:32 -0700 |
---|---|---|
committer | Android Code Review <code-review@android.com> | 2011-08-15 15:01:32 -0700 |
commit | d4d22aef7ff40a47002ee1d53fbbbd7562f05596 (patch) | |
tree | 6f93adfcbc13a7674940f681ef8418979303d241 | |
parent | aa5b6d8b42de3ee551e6e496459eb4f836e2da54 (diff) | |
parent | 6d02d6cb12378599d949591d6c5070e2c96dd9dd (diff) | |
download | external_qemu-d4d22aef7ff40a47002ee1d53fbbbd7562f05596.zip external_qemu-d4d22aef7ff40a47002ee1d53fbbbd7562f05596.tar.gz external_qemu-d4d22aef7ff40a47002ee1d53fbbbd7562f05596.tar.bz2 |
Merge "opengles: improve throughput of TCP socket"
-rw-r--r-- | android/hw-pipe-net.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/android/hw-pipe-net.c b/android/hw-pipe-net.c index dade446..b3bc6c9 100644 --- a/android/hw-pipe-net.c +++ b/android/hw-pipe-net.c @@ -68,7 +68,6 @@ typedef struct { int wakeWanted; LoopIo io[1]; AsyncConnector connector[1]; - int shouldSetSocketOpt; } NetPipe; static void @@ -192,7 +191,6 @@ netPipe_initFromAddress( void* hwpipe, const SockAddress* address, Looper* loop pipe->hwpipe = hwpipe; pipe->state = STATE_INIT; - pipe->shouldSetSocketOpt = 0; { AsyncStatus status; @@ -246,19 +244,6 @@ netPipe_sendBuffers( void* opaque, const GoldfishPipeBuffer* buffers, int numBuf const GoldfishPipeBuffer* buff = buffers; const GoldfishPipeBuffer* buffEnd = buff + numBuffers; -#ifdef _WIN32 - if (pipe->shouldSetSocketOpt == 1) { - int sndbuf = 128 * 1024; - int len = sizeof(sndbuf); - if (setsockopt(pipe->io->fd, SOL_SOCKET, SO_SNDBUF, - (char*)&sndbuf, len) == SOCKET_ERROR) { - D("Failed to set SO_SNDBUF to %d error=0x%x\n", - sndbuf, WSAGetLastError()); - } - pipe->shouldSetSocketOpt = 0; - } -#endif - for (; buff < buffEnd; buff++) count += buff->size; @@ -480,7 +465,22 @@ openglesPipe_init( void* hwpipe, void* _looper, const char* args ) /* For now, simply connect through tcp */ snprintf(temp, sizeof temp, "%d", DEFAULT_OPENGLES_PORT); pipe = (NetPipe *)netPipe_initTcp(hwpipe, _looper, temp); - pipe->shouldSetSocketOpt = 1; + + // Disable TCP nagle algorithm to improve throughput of small packets + socket_set_nodelay(pipe->io->fd); + + // On Win32, adjust buffer sizes +#ifdef _WIN32 + { + int sndbuf = 128 * 1024; + int len = sizeof(sndbuf); + if (setsockopt(pipe->io->fd, SOL_SOCKET, SO_SNDBUF, + (char*)&sndbuf, len) == SOCKET_ERROR) { + D("Failed to set SO_SNDBUF to %d error=0x%x\n", + sndbuf, WSAGetLastError()); + } + } +#endif /* _WIN32 */ return pipe; } |