[TCP]: Fix init_cwnd calculations in tcp_select_initial_window()
authorDavid S. Miller <davem@sunset.davemloft.net>
Wed, 28 Sep 2005 23:31:48 +0000 (16:31 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 28 Sep 2005 23:31:48 +0000 (16:31 -0700)
Match it up to what RFC2414 really specifies.
Noticed by Rick Jones.

Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_output.c

index d6e3d269e90611250fabaea9005d0dc3abc3dea3..caf2e2cff29365ece4d1075ac2eae72c7bf12816 100644 (file)
@@ -190,15 +190,16 @@ void tcp_select_initial_window(int __space, __u32 mss,
        }
 
        /* Set initial window to value enough for senders,
-        * following RFC1414. Senders, not following this RFC,
+        * following RFC2414. Senders, not following this RFC,
         * will be satisfied with 2.
         */
        if (mss > (1<<*rcv_wscale)) {
-               int init_cwnd = 4;
-               if (mss > 1460*3)
+               int init_cwnd;
+
+               if (mss > 1460)
                        init_cwnd = 2;
-               else if (mss > 1460)
-                       init_cwnd = 3;
+               else
+                       init_cwnd = (mss > 1095) ? 3 : 4;
                if (*rcv_wnd > init_cwnd*mss)
                        *rcv_wnd = init_cwnd*mss;
        }