I believe the current calculation is correct. The RFC specifies a window of no more than 4380 bytes unless 2*MSS > 4380. If you change the code in this way, then MSS=1461 will give you an initial window of 3*MSS == 4383, violating the spec. Reading the pseudocode in the RFC 3390 is a bit misleading because they use a clamp at 4380 bytes rather than use a multiplier in the relevant range.

  -John


David Miller wrote:
From: "Ilpo_Järvinen" <[EMAIL PROTECTED]>
Date: Mon, 6 Aug 2007 15:37:15 +0300 (EEST)

@@ -805,13 +805,13 @@ void tcp_update_metrics(struct sock *sk)
        }
 }
-/* Numbers are taken from RFC2414. */
+/* Numbers are taken from RFC3390.  */
 __u32 tcp_init_cwnd(struct tcp_sock *tp, struct dst_entry *dst)
 {
        __u32 cwnd = (dst ? dst_metric(dst, RTAX_INITCWND) : 0);
if (!cwnd) {
-               if (tp->mss_cache > 1460)
+               if (tp->mss_cache >= 2190)
                        cwnd = 2;
                else
                        cwnd = (tp->mss_cache > 1095) ? 3 : 4;

I remember suggesting something similar about 5 or 6 years
ago and Alexey Kuznetsov at the time explained the numbers
which are there and why they should not be changed.

I forget the reasons though, and I'll try to do the research.

These numbers have been like this forever, FWIW.
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to