Nếu tôi hiểu đúng về bạn, bạn đang tìm giá trị ban đầu của bộ snd_cwnd
tham số khi ổ cắm TCP được khởi tạo.
Có vẻ như bắt đầu với kernel linux 2.6.39
, một macro TCP_INIT_CWND
đã được giới thiệu trong linux / include / net / tcp.h , nó sẽ tạo ra giá trị snd_cwnd
khi khởi tạo socket TCP.
Tôi biết mã này nằm ở đâu trong kernel IPv4
và không may là nó dường như không sử dụng bất kỳ macro nào để điền giá trị cho các kernel cũ hơn2.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;
....
....
....
}
Một mã init tương tự tồn tại cho IPv6
cả tcp_v6_init_sock()
chức năng bên trongnet/ipv6/tcp_ipv6.c