From: Andrey Vagin <ava...@openvz.org> Date: Mon, 27 Jun 2016 15:33:56 -0700
> We found that sometimes a restored tcp socket doesn't work. > > A reason of this bug is incorrect window parameters and in this case > tcp_acceptable_seq() returns tcp_wnd_end(tp) instead of tp->snd_nxt. The > other side drops packets with this seq, because seq is less than > tp->rcv_nxt ( tcp_sequence() ). > > Data from a send queue is sent only if there is enough space in a > window, so when we restore unacked data, we need to expand a window to > fit this data. > > This was in a first version of this patch: > "tcp: extend window to fit all restored unacked data in a send queue" > > Then Alexey recommended me to restore window parameters instead of > adjusted them according with data in a sent queue. This sounds resonable. > > rcv_wnd has to be restored, because it was reported to another side > and the offered window is never shrunk. > One of reasons why we need to restore snd_wnd was described above. > > Cc: Pavel Emelyanov <xe...@parallels.com> > Cc: "David S. Miller" <da...@davemloft.net> > Cc: Alexey Kuznetsov <kuz...@ms2.inr.ac.ru> > Cc: James Morris <jmor...@namei.org> > Cc: Hideaki YOSHIFUJI <yoshf...@linux-ipv6.org> > Cc: Patrick McHardy <ka...@trash.net> > Signed-off-by: Andrey Vagin <ava...@openvz.org> Applied to net-next, thanks.