diff mbox series

[mptcp-next] Squash-to: mptcp: Retransmit DATA_FIN (again)

Message ID 20210423011108.179263-1-mathew.j.martineau@linux.intel.com
State Accepted, archived
Commit 820118888287ca20a5a99be53ca84abe2052b5bb
Delegated to: Matthieu Baerts
Headers show
Series [mptcp-next] Squash-to: mptcp: Retransmit DATA_FIN (again) | expand

Commit Message

Mat Martineau April 23, 2021, 1:11 a.m. UTC
Previous testing happened to involve cases where data had been sent and
the retrans timer was already running. Packetdrill testing revealed that
the timer was not being started in cases where no data had been
transmitted, so __mptcp_retrans() was never called. This change starts
the timer when the original DATA_FIN is sent, if the timer is not
already running.

Packetdrill PR is forthcoming.

Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
---
 net/mptcp/protocol.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Paolo Abeni April 23, 2021, 3:02 p.m. UTC | #1
On Thu, 2021-04-22 at 18:11 -0700, Mat Martineau wrote:
> Previous testing happened to involve cases where data had been sent and
> the retrans timer was already running. Packetdrill testing revealed that
> the timer was not being started in cases where no data had been
> transmitted, so __mptcp_retrans() was never called. This change starts
> the timer when the original DATA_FIN is sent, if the timer is not
> already running.
> 
> Packetdrill PR is forthcoming.
> 
> Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
> ---
>  net/mptcp/protocol.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
> index 6cbddfc18158..aec8e77b18e4 100644
> --- a/net/mptcp/protocol.c
> +++ b/net/mptcp/protocol.c
> @@ -2497,6 +2497,8 @@ void mptcp_subflow_shutdown(struct sock *sk, struct sock *ssk, int how)
>  			pr_debug("Sending DATA_FIN on subflow %p", ssk);
>  			mptcp_set_timeout(sk, ssk);
>  			tcp_send_ack(ssk);
> +			if (!mptcp_timer_pending(sk))
> +				mptcp_reset_timer(sk);
>  		}
>  		break;
>  	}

LGTM, thanks!

Acked-by: Paolo Abeni <pabeni@redhat.com>
Matthieu Baerts April 23, 2021, 3:27 p.m. UTC | #2
Hi Mat, Paolo,

On 23/04/2021 03:11, Mat Martineau wrote:
> Previous testing happened to involve cases where data had been sent and
> the retrans timer was already running. Packetdrill testing revealed that
> the timer was not being started in cases where no data had been
> transmitted, so __mptcp_retrans() was never called. This change starts
> the timer when the original DATA_FIN is sent, if the timer is not
> already running.
> 
> Packetdrill PR is forthcoming.
> 
> Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>

Thank you for the patch and the review!

- 820118888287: "squashed" in "mptcp: Retransmit DATA_FIN"
- Results: 9fb030889e08..0f7c6f5b4a89

Builds and tests are now in progress:

https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20210423T152727
https://github.com/multipath-tcp/mptcp_net-next/actions/workflows/build-validation.yml?query=branch:export/20210423T152727

Cheers,
Matt
diff mbox series

Patch

diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 6cbddfc18158..aec8e77b18e4 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -2497,6 +2497,8 @@  void mptcp_subflow_shutdown(struct sock *sk, struct sock *ssk, int how)
 			pr_debug("Sending DATA_FIN on subflow %p", ssk);
 			mptcp_set_timeout(sk, ssk);
 			tcp_send_ack(ssk);
+			if (!mptcp_timer_pending(sk))
+				mptcp_reset_timer(sk);
 		}
 		break;
 	}