Re: Slow TCP connection between linux and wince

From: Aki M Laukkanen (amlaukka@cc.helsinki.fi)
Date: Fri Jun 02 2000 - 12:38:39 EST


On 2 Jun 2000, Andi Kleen wrote:
> > 02:59:02.875029 192.168.55.100.1029 > 10.0.0.3.www: . ack 232141 win 3100 (DF)
> > 02:59:02.875097 10.0.0.3.www > 192.168.55.100.1029: . 233601:235061(1460) ack 196 win 16060 (DF)
> > 02:59:03.235031 192.168.55.100.1029 > 10.0.0.3.www: . ack 233601 win 3100 (DF)
> > 02:59:03.235094 10.0.0.3.www > 192.168.55.100.1029: . 235061:236521(1460) ack 196 win 16060 (DF)
> The WinCE machine does not seem to implement delayed acks. Without that
> good performance is very hard.

There's still a chance that the stack supports delayed acks because
transmitting a segment of 1500 bytes over 115200 bps link takes about 130
ms. Delayed ack timeout is 200 ms. As 2*130>200 the stack will never
send delayed acks. Lowering MTU would help in this case.

I think it supports this theory that the time between sending two segments
is about 350 ms = 130+200+~20 ms.

Pavel, have you by chance tested with <2.3.99-pre3? This is just a hunch
but you could try this patch.

--- linux-2.4.0-test1-ac6.bak/net/ipv4/tcp.c Mon Apr 24 23:59:57 2000
+++ linux-2.4.0-test1-ac6/net/ipv4/tcp.c Wed May 31 17:22:41 2000
@@ -546,7 +546,7 @@
         struct socket *sock;
 
         read_lock(&sk->callback_lock);
- if ((sock = sk->socket) != NULL && atomic_read(&sk->wmem_alloc) == 0) {
+ if ((sock = sk->socket) != NULL) {
                 if (test_bit(SOCK_NOSPACE, &sock->flags)) {
                         if (sk->sleep && waitqueue_active(sk->sleep)) {
                                 clear_bit(SOCK_NOSPACE, &sock->flags);

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Jun 07 2000 - 21:00:15 EST