diff options
Diffstat (limited to 'net/ipv4/tcp_ipv4.c')
-rw-r--r-- | net/ipv4/tcp_ipv4.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 32b048e524d6..7158d4f8dae4 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
@@ -814,8 +814,14 @@ static void tcp_v4_reqsk_send_ack(const struct sock *sk, struct sk_buff *skb, | |||
814 | u32 seq = (sk->sk_state == TCP_LISTEN) ? tcp_rsk(req)->snt_isn + 1 : | 814 | u32 seq = (sk->sk_state == TCP_LISTEN) ? tcp_rsk(req)->snt_isn + 1 : |
815 | tcp_sk(sk)->snd_nxt; | 815 | tcp_sk(sk)->snd_nxt; |
816 | 816 | ||
817 | /* RFC 7323 2.3 | ||
818 | * The window field (SEG.WND) of every outgoing segment, with the | ||
819 | * exception of <SYN> segments, MUST be right-shifted by | ||
820 | * Rcv.Wind.Shift bits: | ||
821 | */ | ||
817 | tcp_v4_send_ack(sock_net(sk), skb, seq, | 822 | tcp_v4_send_ack(sock_net(sk), skb, seq, |
818 | tcp_rsk(req)->rcv_nxt, req->rsk_rcv_wnd, | 823 | tcp_rsk(req)->rcv_nxt, |
824 | req->rsk_rcv_wnd >> inet_rsk(req)->rcv_wscale, | ||
819 | tcp_time_stamp, | 825 | tcp_time_stamp, |
820 | req->ts_recent, | 826 | req->ts_recent, |
821 | 0, | 827 | 0, |