MPTCP Linux Development
 help / color / mirror / Atom feed
* [PATCH mptcp-next 1/2] Squash to "mptcp: simplify push_pending" v5
@ 2022-10-09  8:36 Geliang Tang
  2022-10-09  8:36 ` [PATCH mptcp-next 2/2] Squash to "mptcp: multi subflows subflow_push_pending" v5 Geliang Tang
  0 siblings, 1 reply; 3+ messages in thread
From: Geliang Tang @ 2022-10-09  8:36 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

Update return values of __subflow_push_pending.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 net/mptcp/protocol.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index f08c0eb0be11..ff2c1bbf4484 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -1527,7 +1527,7 @@ static int __subflow_push_pending(struct sock *sk, struct sock *ssk,
 
 			ret = mptcp_sendmsg_frag(sk, ssk, dfrag, info);
 			if (ret <= 0) {
-				err = ret;
+				err = copied ? : ret;
 				goto out;
 			}
 
@@ -1542,17 +1542,18 @@ static int __subflow_push_pending(struct sock *sk, struct sock *ssk,
 		if (msk->snd_burst <= 0 ||
 		    !sk_stream_memory_free(ssk) ||
 		    !mptcp_subflow_active(mptcp_subflow_ctx(ssk))) {
-			err = -EAGAIN;
+			err = copied ? : -EAGAIN;
 			goto out;
 		}
+
 		mptcp_set_timeout(sk);
 	}
+	err = copied;
 
 out:
 	if (copied) {
 		tcp_push(ssk, 0, info->mss_now, tcp_sk(ssk)->nonagle,
 			 info->size_goal);
-		err = copied;
 	}
 
 	return err;
-- 
2.35.3


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH mptcp-next 2/2] Squash to "mptcp: multi subflows subflow_push_pending" v5
  2022-10-09  8:36 [PATCH mptcp-next 1/2] Squash to "mptcp: simplify push_pending" v5 Geliang Tang
@ 2022-10-09  8:36 ` Geliang Tang
  2022-10-11  0:55   ` Mat Martineau
  0 siblings, 1 reply; 3+ messages in thread
From: Geliang Tang @ 2022-10-09  8:36 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

Update the first chunk of data pushing.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 net/mptcp/protocol.c | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index ff2c1bbf4484..acc220bfb34e 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -1614,17 +1614,8 @@ static void __mptcp_subflow_push_pending(struct sock *sk, struct sock *ssk,
 		/* check for a different subflow usage only after
 		 * spooling the first chunk of data
 		 */
-		if (first) {
-			ret = __subflow_push_pending(sk, ssk, &info);
-			if (ret <= 0) {
-				if (ret == -EAGAIN)
-					goto again;
-				break;
-			}
-			first = false;
-			msk->last_snd = ssk;
-			continue;
-		}
+		if (first)
+			goto push;
 
 		if (mptcp_sched_get_send(msk))
 			goto out;
@@ -1643,6 +1634,7 @@ static void __mptcp_subflow_push_pending(struct sock *sk, struct sock *ssk,
 					continue;
 				}
 
+push:
 				ret = __subflow_push_pending(sk, ssk, &info);
 				if (ret <= 0) {
 					if (ret == -EAGAIN)
@@ -1650,6 +1642,10 @@ static void __mptcp_subflow_push_pending(struct sock *sk, struct sock *ssk,
 					goto out;
 				}
 				msk->last_snd = ssk;
+				if (first) {
+					first = false;
+					goto again;
+				}
 				mptcp_subflow_set_scheduled(subflow, false);
 			}
 		}
-- 
2.35.3


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH mptcp-next 2/2] Squash to "mptcp: multi subflows subflow_push_pending" v5
  2022-10-09  8:36 ` [PATCH mptcp-next 2/2] Squash to "mptcp: multi subflows subflow_push_pending" v5 Geliang Tang
@ 2022-10-11  0:55   ` Mat Martineau
  0 siblings, 0 replies; 3+ messages in thread
From: Mat Martineau @ 2022-10-11  0:55 UTC (permalink / raw)
  To: Geliang Tang; +Cc: mptcp

On Sun, 9 Oct 2022, Geliang Tang wrote:

> Update the first chunk of data pushing.
>
> Signed-off-by: Geliang Tang <geliang.tang@suse.com>
> ---
> net/mptcp/protocol.c | 18 +++++++-----------
> 1 file changed, 7 insertions(+), 11 deletions(-)
>
> diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
> index ff2c1bbf4484..acc220bfb34e 100644
> --- a/net/mptcp/protocol.c
> +++ b/net/mptcp/protocol.c
> @@ -1614,17 +1614,8 @@ static void __mptcp_subflow_push_pending(struct sock *sk, struct sock *ssk,
> 		/* check for a different subflow usage only after
> 		 * spooling the first chunk of data
> 		 */
> -		if (first) {
> -			ret = __subflow_push_pending(sk, ssk, &info);
> -			if (ret <= 0) {
> -				if (ret == -EAGAIN)
> -					goto again;
> -				break;
> -			}
> -			first = false;
> -			msk->last_snd = ssk;
> -			continue;
> -		}
> +		if (first)
> +			goto push;

Is the only goal here to reduce duplicate code? It looks like the 
functionality is equivalent, but I'd rather not use 'goto' to jump into 
the middle of a loop.

The 'Squash to "mptcp: simplify push_pending"' looks fine to include in 
v6.

- Mat

>
> 		if (mptcp_sched_get_send(msk))
> 			goto out;
> @@ -1643,6 +1634,7 @@ static void __mptcp_subflow_push_pending(struct sock *sk, struct sock *ssk,
> 					continue;
> 				}
>
> +push:
> 				ret = __subflow_push_pending(sk, ssk, &info);
> 				if (ret <= 0) {
> 					if (ret == -EAGAIN)
> @@ -1650,6 +1642,10 @@ static void __mptcp_subflow_push_pending(struct sock *sk, struct sock *ssk,
> 					goto out;
> 				}
> 				msk->last_snd = ssk;
> +				if (first) {
> +					first = false;
> +					goto again;
> +				}
> 				mptcp_subflow_set_scheduled(subflow, false);
> 			}
> 		}
> -- 
> 2.35.3
>
>
>

--
Mat Martineau
Intel

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-10-11  0:55 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-09  8:36 [PATCH mptcp-next 1/2] Squash to "mptcp: simplify push_pending" v5 Geliang Tang
2022-10-09  8:36 ` [PATCH mptcp-next 2/2] Squash to "mptcp: multi subflows subflow_push_pending" v5 Geliang Tang
2022-10-11  0:55   ` Mat Martineau

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox