TCP only sends a packet if:
tcp_packets_in_flight(tp) < tp->snd_cwnd
(function tcp_snd_test in include/net/tcp.h)
but regards transmission as application-limited if
tp->packets_out < tp->snd_cwnd
(function tcp_cwnd_validate in include/net/tcp.h)
So the kernel _always_ thinks the connection is
application-limited, forcing many un-necessary
reductions in the size of the congestion window.
I think the condition in tcp_snd_test should be:
tcp_packets_in_flight(tp) <= tp->snd_cwnd
Mark
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/