aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Turner <digit@android.com>2011-08-15 15:01:32 -0700
committerAndroid Code Review <code-review@android.com>2011-08-15 15:01:32 -0700
commitd4d22aef7ff40a47002ee1d53fbbbd7562f05596 (patch)
tree6f93adfcbc13a7674940f681ef8418979303d241
parentaa5b6d8b42de3ee551e6e496459eb4f836e2da54 (diff)
parent6d02d6cb12378599d949591d6c5070e2c96dd9dd (diff)
downloadexternal_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.c32
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;
}