MPTCP Linux Development
 help / color / mirror / Atom feed
* [PATCH mptcp-next v2 0/4] refactor push pending
@ 2022-09-29 15:03 Geliang Tang
  2022-09-29 15:03 ` [PATCH mptcp-next v2 1/4] mptcp: update __mptcp_push_pending Geliang Tang
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Geliang Tang @ 2022-09-29 15:03 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

v2:
- add snd_burst check in dfrags loop as Mat suggested.

Refactor __mptcp_push_pending() and __mptcp_subflow_push_pending() to
remove duplicate code and support redundant scheduler more easily in
__mptcp_subflow_push_pending().

Geliang Tang (4):
  mptcp: update __mptcp_push_pending
  mptcp: add do_push_pending helper
  mptcp: update __mptcp_subflow_push_pending
  mptcp: simplify __mptcp_subflow_push_pending

 net/mptcp/protocol.c | 153 ++++++++++++++++---------------------------
 1 file changed, 58 insertions(+), 95 deletions(-)

-- 
2.35.3


^ permalink raw reply	[flat|nested] 10+ messages in thread
* [PATCH mptcp-next v3 5/5] mptcp: simplify __mptcp_subflow_push_pending
@ 2022-09-30 14:17 Geliang Tang
  2022-10-06 17:31 ` mptcp: simplify __mptcp_subflow_push_pending: Tests Results MPTCP CI
  0 siblings, 1 reply; 10+ messages in thread
From: Geliang Tang @ 2022-09-30 14:17 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

This patch simplifies __mptcp_subflow_push_pending() by invoking
__do_push_pending() helper.

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

diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 8e67c149bbab..940384952015 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -1586,9 +1586,8 @@ static void __mptcp_subflow_push_pending(struct sock *sk, struct sock *ssk)
 	struct mptcp_sendmsg_info info = {
 		.data_lock_held = true,
 	};
-	struct mptcp_data_frag *dfrag;
 	struct sock *xmit_ssk;
-	int len, copied = 0;
+	int copied = 0;
 
 	xmit_ssk = mptcp_sched_get_send(msk);
 	if (!xmit_ssk)
@@ -1600,41 +1599,13 @@ static void __mptcp_subflow_push_pending(struct sock *sk, struct sock *ssk)
 	}
 
 	info.flags = 0;
-	while ((dfrag = mptcp_send_head(sk))) {
-		info.sent = dfrag->already_sent;
-		info.limit = dfrag->data_len;
-		len = dfrag->data_len - dfrag->already_sent;
-		while (len > 0) {
-			int ret = 0;
-
-			ret = mptcp_sendmsg_frag(sk, ssk, dfrag, &info);
-			if (ret <= 0)
-				goto out;
-
-			info.sent += ret;
-			copied += ret;
-			len -= ret;
-
-			mptcp_update_post_push(msk, dfrag, ret);
-		}
-		WRITE_ONCE(msk->first_pending, mptcp_send_next(sk));
-
-		if (msk->snd_burst > 0 &&
-		    sk_stream_memory_free(ssk) &&
-		    mptcp_subflow_active(mptcp_subflow_ctx(ssk))) {
-			mptcp_set_timeout(sk);
-		} else {
-			break;
-		}
-	}
+	copied = __do_push_pending(sk, ssk, &info);
 
 out:
 	/* __mptcp_alloc_tx_skb could have released some wmem and we are
 	 * not going to flush it via release_sock()
 	 */
 	if (copied) {
-		tcp_push(ssk, 0, info.mss_now, tcp_sk(ssk)->nonagle,
-			 info.size_goal);
 		if (!mptcp_timer_pending(sk))
 			mptcp_reset_timer(sk);
 
-- 
2.35.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread
* [PATCH mptcp-next 4/4] mptcp: simplify __mptcp_subflow_push_pending
@ 2022-09-28  9:48 Geliang Tang
  2022-09-28 11:56 ` mptcp: simplify __mptcp_subflow_push_pending: Tests Results MPTCP CI
  0 siblings, 1 reply; 10+ messages in thread
From: Geliang Tang @ 2022-09-28  9:48 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

This patch simplifies __mptcp_subflow_push_pending() by invoking
__do_push_pending() helper.

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

diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 550fc375a7a6..779794f42137 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -1593,11 +1593,11 @@ static void __mptcp_subflow_push_pending(struct sock *sk, struct sock *ssk)
 {
 	struct mptcp_sock *msk = mptcp_sk(sk);
 	struct mptcp_sendmsg_info info = {
+		.flags		= 0,
 		.data_lock_held = true,
 	};
-	struct mptcp_data_frag *dfrag;
 	struct sock *xmit_ssk;
-	int len, copied = 0;
+	int copied = 0;
 
 	xmit_ssk = mptcp_sched_get_send(mptcp_sk(sk));
 	if (!xmit_ssk)
@@ -1608,34 +1608,13 @@ static void __mptcp_subflow_push_pending(struct sock *sk, struct sock *ssk)
 		goto out;
 	}
 
-	info.flags = 0;
-	while ((dfrag = mptcp_send_head(sk))) {
-		info.sent = dfrag->already_sent;
-		info.limit = dfrag->data_len;
-		len = dfrag->data_len - dfrag->already_sent;
-		while (len > 0) {
-			int ret = 0;
-
-			ret = mptcp_sendmsg_frag(sk, ssk, dfrag, &info);
-			if (ret <= 0)
-				goto out;
-
-			info.sent += ret;
-			copied += ret;
-			len -= ret;
-
-			mptcp_update_post_push(msk, dfrag, ret);
-		}
-		WRITE_ONCE(msk->first_pending, mptcp_send_next(sk));
-	}
+	copied = __do_push_pending(sk, ssk, &info);
 
 out:
 	/* __mptcp_alloc_tx_skb could have released some wmem and we are
 	 * not going to flush it via release_sock()
 	 */
 	if (copied) {
-		tcp_push(ssk, 0, info.mss_now, tcp_sk(ssk)->nonagle,
-			 info.size_goal);
 		if (!mptcp_timer_pending(sk))
 			mptcp_reset_timer(sk);
 
-- 
2.35.3


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

end of thread, other threads:[~2022-10-06 17:46 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-09-29 15:03 [PATCH mptcp-next v2 0/4] refactor push pending Geliang Tang
2022-09-29 15:03 ` [PATCH mptcp-next v2 1/4] mptcp: update __mptcp_push_pending Geliang Tang
2022-09-30  0:44   ` Mat Martineau
2022-09-29 15:03 ` [PATCH mptcp-next v2 2/4] mptcp: add do_push_pending helper Geliang Tang
2022-09-30  0:46   ` Mat Martineau
2022-09-29 15:03 ` [PATCH mptcp-next v2 3/4] mptcp: update __mptcp_subflow_push_pending Geliang Tang
2022-09-29 15:03 ` [PATCH mptcp-next v2 4/4] mptcp: simplify __mptcp_subflow_push_pending Geliang Tang
2022-10-06 17:46   ` mptcp: simplify __mptcp_subflow_push_pending: Tests Results MPTCP CI
  -- strict thread matches above, loose matches on Subject: below --
2022-09-30 14:17 [PATCH mptcp-next v3 5/5] mptcp: simplify __mptcp_subflow_push_pending Geliang Tang
2022-10-06 17:31 ` mptcp: simplify __mptcp_subflow_push_pending: Tests Results MPTCP CI
2022-09-28  9:48 [PATCH mptcp-next 4/4] mptcp: simplify __mptcp_subflow_push_pending Geliang Tang
2022-09-28 11:56 ` mptcp: simplify __mptcp_subflow_push_pending: Tests Results MPTCP CI

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