หากฉันเข้าใจคุณอย่างถูกต้องคุณกำลังมองหาค่าเริ่มต้นของsnd_cwnd
พารามิเตอร์ที่กำหนดเมื่อซ็อกเก็ต TCP เริ่มต้น
ดูเหมือนว่าเริ่มต้นด้วยเคอร์เนล linux 2.6.39
แมโครTCP_INIT_CWND
ถูกนำมาใช้ในlinux / include / net / tcp.hซึ่งจะเติมค่าsnd_cwnd
เมื่อเริ่มต้นซ็อกเก็ต TCP
ฉันรู้ที่รหัสนี้อยู่ในเคอร์เนลสำหรับIPv4
และน่าเสียดายที่ดูเหมือนจะไม่ใช้แมโครใด ๆ เพื่อเติมค่าสำหรับเมล็ดที่เก่ากว่า2.6.39
/* net/ipv4/tcp_ipv4.c from 2.6.37 kernel */
static int tcp_v4_init_sock(struct sock *sk)
{
struct inet_connection_sock *icsk = inet_csk(sk);
struct tcp_sock *tp = tcp_sk(sk);
....
....
....
/* So many TCP implementations out there (incorrectly) count the
* initial SYN frame in their delayed-ACK and congestion control
* algorithms that we must have the following bandaid to talk
* efficiently to them. -DaveM
*/
tp->snd_cwnd = 2;
....
....
....
}
มีรหัส init ที่คล้ายกันสำหรับฟังก์ชั่นIPv6
ข้างtcp_v6_init_sock()
ในnet/ipv6/tcp_ipv6.c