[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[mhc:01991] Re: FYI: mhc2palm with LANSync
FreeBSD currentの調子がわるくて
USB syncができなくなっているので
LAN syncに再挑戦しました。
Message-Id: <20040622.181838.104115004.hide@xxxxxxxx>
Date: Tue, 22 Jun 2004 18:18:38 +0900 (JST)
From: KOIE Hidetaka (鯉江英隆) <hide@xxxxxxxx>
Subject: [mhc:01926] FYI: mhc2palm with LANSync
| 表: pilot-xfer -lの時間
| 接続 時間(sec)
| usb 00:15
| wlan 00:26
| wlan(save) 02:08
| 省電力モードではつかいものにならんので
| ちょっとがっかり。
tcpdump+tcptraceでパケットを調べてみたら
PC側が100msくらいパケットを出すのが遅れているように見えたので
sysctl net.inet.tcp.delayed_ack=0でDelayedAckを止めてみましたが効かず。
で、pilot-linkのソースをみてみると
CP_NODELAYオプションを設定してなかったので
設定するようにしたら劇的に改善しました。
pilot-xfer -lの時間を計ってみると00:35 secなのでかなり実用的になりました。
なぜこれで速くなるのか理解できませんが
たぶんTH55の省電力のタイマとPCのTCPタイマとが干渉しているでしょうね。
--
鯉江英隆 <hide@xxxxxxxx>
--- libpisock/inet.c.orig Sat Dec 14 22:37:17 2002
+++ libpisock/inet.c Fri Nov 12 13:54:22 2004
@@ -175,6 +175,20 @@
return dev;
}
+#if 1 /* koie */
+#include <netinet/tcp.h>
+static void
+pi_inet_set_nodelay(int sd)
+{
+ int one = 1;
+#if defined SOL_TCP
+ setsockopt(sd, SOL_TCP, TCP_NODELAY, (char*) &one, sizeof one);
+#elif defined IPPROTO_TCP
+ setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (char*) &one, sizeof one);
+#endif
+}
+#endif
+
/***********************************************************************
*
* Function: pi_inet_connect
@@ -232,6 +246,9 @@
"DEV CONNECT Inet: Unable to connect\n"));
return -1;
}
+#if 1 /* koie */
+ pi_inet_set_nodelay(ps->sd);
+#endif
ps->raddr = malloc(addrlen);
memcpy(ps->raddr, addr, addrlen);
@@ -389,6 +406,9 @@
sd = accept(ps->sd, addr, addrlen);
if (sd < 0)
goto fail;
+#if 1 /* koie */
+ pi_inet_set_nodelay(sd);
+#endif
pi_socket_setsd(acpt, sd);
pi_socket_init(acpt);