📄 tcp-rto_proc-2.6.9.patch
字号:
Index: linux+rhel4+chaos/include/linux/sysctl.h===================================================================--- linux+rhel4+chaos.orig/include/linux/sysctl.h+++ linux+rhel4+chaos/include/linux/sysctl.h@@ -348,6 +348,8 @@ enum NET_TCP_TSO_WIN_DIVISOR=107, NET_TCP_BIC_BETA=108, NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR=109,+ NET_TCP_RTO_MAX=110,+ NET_TCP_RTO_INIT=111, }; enum {Index: linux+rhel4+chaos/net/ipv4/sysctl_net_ipv4.c===================================================================--- linux+rhel4+chaos.orig/net/ipv4/sysctl_net_ipv4.c+++ linux+rhel4+chaos/net/ipv4/sysctl_net_ipv4.c@@ -49,6 +49,10 @@ extern int inet_peer_maxttl; extern int inet_peer_gc_mintime; extern int inet_peer_gc_maxtime; +/* From tcp_timer.c */+extern unsigned sysctl_tcp_rto_max;+extern unsigned sysctl_tcp_rto_init;+ #ifdef CONFIG_SYSCTL static int tcp_retr1_max = 255; static int ip_local_port_range_min[] = { 1, 1 };@@ -699,6 +703,22 @@ ctl_table ipv4_table[] = { .mode = 0644, .proc_handler = &proc_dointvec, },+ {+ .ctl_name = NET_TCP_RTO_MAX,+ .procname = "tcp_rto_max",+ .data = &sysctl_tcp_rto_max,+ .maxlen = sizeof(unsigned),+ .mode = 0644, + .proc_handler = &proc_dointvec+ },+ {+ .ctl_name = NET_TCP_RTO_INIT,+ .procname = "tcp_rto_init",+ .data = &sysctl_tcp_rto_init,+ .maxlen = sizeof(unsigned), + .mode = 0644,+ .proc_handler = &proc_dointvec+ }, { .ctl_name = 0 } }; Index: linux+rhel4+chaos/net/ipv4/tcp_timer.c===================================================================--- linux+rhel4+chaos.orig/net/ipv4/tcp_timer.c+++ linux+rhel4+chaos/net/ipv4/tcp_timer.c@@ -32,6 +32,9 @@ int sysctl_tcp_retries1 = TCP_RETR1; int sysctl_tcp_retries2 = TCP_RETR2; int sysctl_tcp_orphan_retries; +unsigned sysctl_tcp_rto_max = TCP_RTO_MAX;+unsigned sysctl_tcp_rto_init = TCP_TIMEOUT_INIT;+ static void tcp_write_timer(unsigned long); static void tcp_delack_timer(unsigned long); static void tcp_keepalive_timer (unsigned long data);@@ -104,7 +107,7 @@ static int tcp_out_of_resources(struct s /* If peer does not open window for long time, or did not transmit * anything for long time, penalize it. */- if ((s32)(tcp_time_stamp - tp->lsndtime) > 2*TCP_RTO_MAX || !do_reset)+ if ((s32)(tcp_time_stamp - tp->lsndtime) > 2*sysctl_tcp_rto_max || !do_reset) orphans <<= 1; /* If some dubious ICMP arrived, penalize even more. */@@ -186,7 +189,7 @@ static int tcp_write_timeout(struct sock retry_until = sysctl_tcp_retries2; if (sock_flag(sk, SOCK_DEAD)) {- int alive = (tp->rto < TCP_RTO_MAX);+ int alive = (tp->rto < sysctl_tcp_rto_max); retry_until = tcp_orphan_retries(sk, alive); @@ -292,7 +295,7 @@ static void tcp_probe_timer(struct sock max_probes = sysctl_tcp_retries2; if (sock_flag(sk, SOCK_DEAD)) {- int alive = ((tp->rto<<tp->backoff) < TCP_RTO_MAX);+ int alive = ((tp->rto<<tp->backoff) < sysctl_tcp_rto_max); max_probes = tcp_orphan_retries(sk, alive); @@ -336,7 +339,7 @@ static void tcp_retransmit_timer(struct inet->num, tp->snd_una, tp->snd_nxt); } #endif- if (tcp_time_stamp - tp->rcv_tstamp > TCP_RTO_MAX) {+ if (tcp_time_stamp - tp->rcv_tstamp > sysctl_tcp_rto_max) { tcp_write_err(sk); goto out; }@@ -405,7 +408,7 @@ static void tcp_retransmit_timer(struct tp->retransmits++; out_reset_timer:- tp->rto = min(tp->rto << 1, TCP_RTO_MAX);+ tp->rto = min(tp->rto << 1, sysctl_tcp_rto_max); tcp_reset_xmit_timer(sk, TCP_TIME_RETRANS, tp->rto); if (tp->retransmits > sysctl_tcp_retries1) __sk_dst_reset(sk);@@ -502,7 +505,7 @@ static void tcp_synack_timer(struct sock if (tp->defer_accept) max_retries = tp->defer_accept; - budget = 2*(TCP_SYNQ_HSIZE/(TCP_TIMEOUT_INIT/TCP_SYNQ_INTERVAL));+ budget = 2*(TCP_SYNQ_HSIZE/(sysctl_tcp_rto_init/TCP_SYNQ_INTERVAL)); i = lopt->clock_hand; do {@@ -516,8 +519,8 @@ static void tcp_synack_timer(struct sock if (req->retrans++ == 0) lopt->qlen_young--;- timeo = min((TCP_TIMEOUT_INIT << req->retrans),- TCP_RTO_MAX);+ timeo = min((sysctl_tcp_rto_init << req->retrans),+ sysctl_tcp_rto_max); req->expires = now + timeo; reqp = &req->dl_next; continue;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -