diff options
Diffstat (limited to 'include/net/tcp.h')
| -rw-r--r-- | include/net/tcp.h | 14 | 
1 files changed, 13 insertions, 1 deletions
diff --git a/include/net/tcp.h b/include/net/tcp.h index 1b94b9bfe2d..646dbe3962e 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -41,6 +41,7 @@  #include <net/ip.h>  #include <net/tcp_states.h>  #include <net/inet_ecn.h> +#include <net/dst.h>  #include <linux/seq_file.h> @@ -530,6 +531,17 @@ static inline void tcp_fast_path_check(struct sock *sk)  		tcp_fast_path_on(tp);  } +/* Compute the actual rto_min value */ +static inline u32 tcp_rto_min(struct sock *sk) +{ +	struct dst_entry *dst = __sk_dst_get(sk); +	u32 rto_min = TCP_RTO_MIN; + +	if (dst && dst_metric_locked(dst, RTAX_RTO_MIN)) +		rto_min = dst_metric_rtt(dst, RTAX_RTO_MIN); +	return rto_min; +} +  /* Compute the actual receive window we are currently advertising.   * Rcv_nxt can be after the window if our peer push more data   * than the offered window. @@ -895,7 +907,7 @@ static inline int tcp_prequeue(struct sock *sk, struct sk_buff *skb)  			wake_up_interruptible(sk->sk_sleep);  			if (!inet_csk_ack_scheduled(sk))  				inet_csk_reset_xmit_timer(sk, ICSK_TIME_DACK, -						          (3 * TCP_RTO_MIN) / 4, +						          (3 * tcp_rto_min(sk)) / 4,  							  TCP_RTO_MAX);  		}  		return 1;  |