Re: [PATCH] tcp: add an ability to dump and restore window parameters

From: David Miller
Date: Thu Jun 30 2016 - 08:17:36 EST


From: Andrey Vagin <avagin@xxxxxxxxxx>
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 <xemul@xxxxxxxxxxxxx>
> Cc: "David S. Miller" <davem@xxxxxxxxxxxxx>
> Cc: Alexey Kuznetsov <kuznet@xxxxxxxxxxxxx>
> Cc: James Morris <jmorris@xxxxxxxxx>
> Cc: Hideaki YOSHIFUJI <yoshfuji@xxxxxxxxxxxxxx>
> Cc: Patrick McHardy <kaber@xxxxxxxxx>
> Signed-off-by: Andrey Vagin <avagin@xxxxxxxxxx>

Applied to net-next, thanks.