diff options
Diffstat (limited to 'net/ipv4/tcp_output.c')
| -rw-r--r-- | net/ipv4/tcp_output.c | 8 | 
1 files changed, 4 insertions, 4 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 5d451593ef1..fd0cea114b5 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -314,7 +314,7 @@ static inline void TCP_ECN_send_syn(struct sock *sk, struct sk_buff *skb)  	struct tcp_sock *tp = tcp_sk(sk);  	tp->ecn_flags = 0; -	if (sysctl_tcp_ecn == 1) { +	if (sock_net(sk)->ipv4.sysctl_tcp_ecn == 1) {  		TCP_SKB_CB(skb)->tcp_flags |= TCPHDR_ECE | TCPHDR_CWR;  		tp->ecn_flags = TCP_ECN_OK;  	} @@ -622,7 +622,7 @@ static unsigned int tcp_syn_options(struct sock *sk, struct sk_buff *skb,  	if (likely(sysctl_tcp_timestamps && *md5 == NULL)) {  		opts->options |= OPTION_TS; -		opts->tsval = TCP_SKB_CB(skb)->when; +		opts->tsval = TCP_SKB_CB(skb)->when + tp->tsoffset;  		opts->tsecr = tp->rx_opt.ts_recent;  		remaining -= TCPOLEN_TSTAMP_ALIGNED;  	} @@ -806,7 +806,7 @@ static unsigned int tcp_established_options(struct sock *sk, struct sk_buff *skb  	if (likely(tp->rx_opt.tstamp_ok)) {  		opts->options |= OPTION_TS; -		opts->tsval = tcb ? tcb->when : 0; +		opts->tsval = tcb ? tcb->when + tp->tsoffset : 0;  		opts->tsecr = tp->rx_opt.ts_recent;  		size += TCPOLEN_TSTAMP_ALIGNED;  	} @@ -1331,7 +1331,7 @@ static void __pskb_trim_head(struct sk_buff *skb, int len)  /* Remove acked data from a packet in the transmit queue. */  int tcp_trim_head(struct sock *sk, struct sk_buff *skb, u32 len)  { -	if (skb_cloned(skb) && pskb_expand_head(skb, 0, 0, GFP_ATOMIC)) +	if (skb_unclone(skb, GFP_ATOMIC))  		return -ENOMEM;  	__pskb_trim_head(skb, len);  |