All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH mptcp-next v4 0/7] mptcp: update userspace pm mptcp_info fields
@ 2023-03-14  3:01 Geliang Tang
  2023-03-14  3:01 ` [PATCH mptcp-next v4 1/7] mptcp: don't clear userspace pm addr id Geliang Tang
                   ` (6 more replies)
  0 siblings, 7 replies; 9+ messages in thread
From: Geliang Tang @ 2023-03-14  3:01 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

v4:
 - add more patches
 - add selftests

v3:
 - update local_addr_used and add_addr_signaled

v2:
 - hold pm locks

Geliang Tang (7):
  mptcp: don't clear userspace pm addr id
  mptcp: add addr into userspace pm list
  mptcp: close remote subflow when destroying it
  mptcp: increase userspace pm add_addr_signaled
  mptcp: update userspace pm subflows
  mptcp: make userspace_pm_append_new_local_addr static
  selftests: mptcp: check userspace mptcp_info

 net/mptcp/pm.c                                | 21 +++++++++---
 net/mptcp/pm_netlink.c                        |  2 +-
 net/mptcp/pm_userspace.c                      | 32 +++++++++++++++++--
 net/mptcp/protocol.h                          |  2 --
 .../testing/selftests/net/mptcp/mptcp_join.sh | 10 +++++-
 5 files changed, 56 insertions(+), 11 deletions(-)

-- 
2.35.3


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

* [PATCH mptcp-next v4 1/7] mptcp: don't clear userspace pm addr id
  2023-03-14  3:01 [PATCH mptcp-next v4 0/7] mptcp: update userspace pm mptcp_info fields Geliang Tang
@ 2023-03-14  3:01 ` Geliang Tang
  2023-03-14  3:01 ` [PATCH mptcp-next v4 2/7] mptcp: add addr into userspace pm list Geliang Tang
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Geliang Tang @ 2023-03-14  3:01 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

Don't clear the addr id in mptcp_userspace_pm_get_local_id(), clear it
in mptcp_pm_nl_get_local_id() instead.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 net/mptcp/pm_netlink.c   | 2 +-
 net/mptcp/pm_userspace.c | 1 -
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index 67995cb4f8b8..df15d846e7db 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -1055,8 +1055,8 @@ static int mptcp_pm_nl_create_listen_socket(struct sock *sk,
 
 int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct sock_common *skc)
 {
+	struct mptcp_addr_info skc_local = { 0 };
 	struct mptcp_pm_addr_entry *entry;
-	struct mptcp_addr_info skc_local;
 	struct mptcp_addr_info msk_local;
 	struct pm_nl_pernet *pernet;
 	int ret = -1;
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index a02d3cbf2a1b..fe4c29a17466 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -113,7 +113,6 @@ int mptcp_userspace_pm_get_local_id(struct mptcp_sock *msk,
 
 	memset(&new_entry, 0, sizeof(struct mptcp_pm_addr_entry));
 	new_entry.addr = *skc;
-	new_entry.addr.id = 0;
 	new_entry.flags = MPTCP_PM_ADDR_FLAG_IMPLICIT;
 
 	if (new_entry.addr.port == msk_sport)
-- 
2.35.3


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

* [PATCH mptcp-next v4 2/7] mptcp: add addr into userspace pm list
  2023-03-14  3:01 [PATCH mptcp-next v4 0/7] mptcp: update userspace pm mptcp_info fields Geliang Tang
  2023-03-14  3:01 ` [PATCH mptcp-next v4 1/7] mptcp: don't clear userspace pm addr id Geliang Tang
@ 2023-03-14  3:01 ` Geliang Tang
  2023-03-14  3:01 ` [PATCH mptcp-next v4 3/7] mptcp: close remote subflow when destroying it Geliang Tang
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Geliang Tang @ 2023-03-14  3:01 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

Add the address into userspace_pm_local_addr_list when the subflow is
created.

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

diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index fe4c29a17466..49f41a040485 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -301,6 +301,16 @@ int mptcp_nl_cmd_sf_create(struct sk_buff *skb, struct genl_info *info)
 		goto create_err;
 	}
 
+	err = mptcp_userspace_pm_get_local_id(msk, &addr_l);
+	if (err < 0) {
+		GENL_SET_ERR_MSG(info, "did not match address and id");
+		goto create_err;
+	}
+
+	spin_lock_bh(&msk->pm.lock);
+	msk->pm.local_addr_used++;
+	spin_unlock_bh(&msk->pm.lock);
+
 	lock_sock(sk);
 
 	err = __mptcp_subflow_connect(sk, &addr_l, &addr_r);
-- 
2.35.3


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

* [PATCH mptcp-next v4 3/7] mptcp: close remote subflow when destroying it
  2023-03-14  3:01 [PATCH mptcp-next v4 0/7] mptcp: update userspace pm mptcp_info fields Geliang Tang
  2023-03-14  3:01 ` [PATCH mptcp-next v4 1/7] mptcp: don't clear userspace pm addr id Geliang Tang
  2023-03-14  3:01 ` [PATCH mptcp-next v4 2/7] mptcp: add addr into userspace pm list Geliang Tang
@ 2023-03-14  3:01 ` Geliang Tang
  2023-03-14  3:01 ` [PATCH mptcp-next v4 4/7] mptcp: increase userspace pm add_addr_signaled Geliang Tang
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Geliang Tang @ 2023-03-14  3:01 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

Not only close the local subflow but also send RM_ADDR by invoking
mptcp_pm_remove_addr() to close the remote subflow when a subflow is
destroyed by userspace PM.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 net/mptcp/pm_userspace.c                        | 15 +++++++++++++++
 tools/testing/selftests/net/mptcp/mptcp_join.sh |  2 +-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index 49f41a040485..ebadfafaa203 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -429,6 +429,21 @@ int mptcp_nl_cmd_sf_destroy(struct sk_buff *skb, struct genl_info *info)
 	ssk = mptcp_nl_find_ssk(msk, &addr_l, &addr_r);
 	if (ssk) {
 		struct mptcp_subflow_context *subflow = mptcp_subflow_ctx(ssk);
+		struct mptcp_pm_addr_entry *entry, *tmp;
+
+		spin_lock_bh(&msk->pm.lock);
+		list_for_each_entry_safe(entry, tmp, &msk->pm.userspace_pm_local_addr_list, list) {
+			if (mptcp_addresses_equal(&entry->addr, &addr_l, false)) {
+				struct mptcp_rm_list list = { .nr = 0 };
+
+				list.ids[list.nr++] = entry->addr.id;
+				mptcp_pm_remove_addr(msk, &list);
+				list_del_rcu(&entry->list);
+				msk->pm.local_addr_used--;
+				break;
+			}
+		}
+		spin_unlock_bh(&msk->pm.lock);
 
 		mptcp_subflow_shutdown(sk, ssk, RCV_SHUTDOWN | SEND_SHUTDOWN);
 		mptcp_close_ssk(sk, ssk, subflow);
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index fafd19ec7e1f..506120401abe 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -3123,7 +3123,7 @@ userspace_tests()
 		pm_nl_set_limits $ns1 0 1
 		run_tests $ns1 $ns2 10.0.1.1 0 0 userspace_1 slow
 		chk_join_nr 1 1 1
-		chk_rm_nr 0 1
+		chk_rm_nr 1 1
 		kill_events_pids
 	fi
 }
-- 
2.35.3


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

* [PATCH mptcp-next v4 4/7] mptcp: increase userspace pm add_addr_signaled
  2023-03-14  3:01 [PATCH mptcp-next v4 0/7] mptcp: update userspace pm mptcp_info fields Geliang Tang
                   ` (2 preceding siblings ...)
  2023-03-14  3:01 ` [PATCH mptcp-next v4 3/7] mptcp: close remote subflow when destroying it Geliang Tang
@ 2023-03-14  3:01 ` Geliang Tang
  2023-03-14  3:01 ` [PATCH mptcp-next v4 5/7] mptcp: update userspace pm subflows Geliang Tang
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 9+ messages in thread
From: Geliang Tang @ 2023-03-14  3:01 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

Increase add_addr_signaled counter in mptcp_nl_cmd_announce() when the
userspace address is announced by userspace PM.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 net/mptcp/pm_userspace.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index ebadfafaa203..1e5c2753c4ea 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -170,6 +170,7 @@ int mptcp_nl_cmd_announce(struct sk_buff *skb, struct genl_info *info)
 	spin_lock_bh(&msk->pm.lock);
 
 	if (mptcp_pm_alloc_anno_list(msk, &addr_val)) {
+		msk->pm.add_addr_signaled++;
 		mptcp_pm_announce_addr(msk, &addr_val.addr, false);
 		mptcp_pm_nl_addr_send_ack(msk);
 	}
-- 
2.35.3


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

* [PATCH mptcp-next v4 5/7] mptcp: update userspace pm subflows
  2023-03-14  3:01 [PATCH mptcp-next v4 0/7] mptcp: update userspace pm mptcp_info fields Geliang Tang
                   ` (3 preceding siblings ...)
  2023-03-14  3:01 ` [PATCH mptcp-next v4 4/7] mptcp: increase userspace pm add_addr_signaled Geliang Tang
@ 2023-03-14  3:01 ` Geliang Tang
  2023-03-14  3:01 ` [PATCH mptcp-next v4 6/7] mptcp: make userspace_pm_append_new_local_addr static Geliang Tang
  2023-03-14  3:01 ` [PATCH mptcp-next v4 7/7] selftests: mptcp: check userspace mptcp_info Geliang Tang
  6 siblings, 0 replies; 9+ messages in thread
From: Geliang Tang @ 2023-03-14  3:01 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

Increase pm subflows counter on both server side and client side when
userspace pm creates a new subflow, and decrease the counter when it
closes a subflow.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 net/mptcp/pm.c           | 21 +++++++++++++++++----
 net/mptcp/pm_userspace.c |  1 +
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
index 4ed4d29d9c11..bb01f15d8e0a 100644
--- a/net/mptcp/pm.c
+++ b/net/mptcp/pm.c
@@ -87,8 +87,15 @@ bool mptcp_pm_allow_new_subflow(struct mptcp_sock *msk)
 	unsigned int subflows_max;
 	int ret = 0;
 
-	if (mptcp_pm_is_userspace(msk))
-		return mptcp_userspace_pm_active(msk);
+	if (mptcp_pm_is_userspace(msk)) {
+		if (mptcp_userspace_pm_active(msk)) {
+			spin_lock_bh(&pm->lock);
+			pm->subflows++;
+			spin_unlock_bh(&pm->lock);
+			return true;
+		}
+		return false;
+	}
 
 	subflows_max = mptcp_pm_get_subflows_max(msk);
 
@@ -181,8 +188,14 @@ void mptcp_pm_subflow_check_next(struct mptcp_sock *msk, const struct sock *ssk,
 	struct mptcp_pm_data *pm = &msk->pm;
 	bool update_subflows;
 
-	update_subflows = (subflow->request_join || subflow->mp_join) &&
-			  mptcp_pm_is_kernel(msk);
+	if (mptcp_pm_is_userspace(msk)) {
+		spin_lock_bh(&pm->lock);
+		pm->subflows--;
+		spin_unlock_bh(&pm->lock);
+		return;
+	}
+
+	update_subflows = (subflow->request_join || subflow->mp_join);
 	if (!READ_ONCE(pm->work_pending) && !update_subflows)
 		return;
 
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index 1e5c2753c4ea..a2fce8486d60 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -310,6 +310,7 @@ int mptcp_nl_cmd_sf_create(struct sk_buff *skb, struct genl_info *info)
 
 	spin_lock_bh(&msk->pm.lock);
 	msk->pm.local_addr_used++;
+	msk->pm.subflows++;
 	spin_unlock_bh(&msk->pm.lock);
 
 	lock_sock(sk);
-- 
2.35.3


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

* [PATCH mptcp-next v4 6/7] mptcp: make userspace_pm_append_new_local_addr static
  2023-03-14  3:01 [PATCH mptcp-next v4 0/7] mptcp: update userspace pm mptcp_info fields Geliang Tang
                   ` (4 preceding siblings ...)
  2023-03-14  3:01 ` [PATCH mptcp-next v4 5/7] mptcp: update userspace pm subflows Geliang Tang
@ 2023-03-14  3:01 ` Geliang Tang
  2023-03-14  3:01 ` [PATCH mptcp-next v4 7/7] selftests: mptcp: check userspace mptcp_info Geliang Tang
  6 siblings, 0 replies; 9+ messages in thread
From: Geliang Tang @ 2023-03-14  3:01 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

mptcp_userspace_pm_append_new_local_addr is only used in pm_userspace.c,
so make it static.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 net/mptcp/pm_userspace.c | 4 ++--
 net/mptcp/protocol.h     | 2 --
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index a2fce8486d60..d2749225f391 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -25,8 +25,8 @@ void mptcp_free_local_addr_list(struct mptcp_sock *msk)
 	}
 }
 
-int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
-					     struct mptcp_pm_addr_entry *entry)
+static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
+						    struct mptcp_pm_addr_entry *entry)
 {
 	DECLARE_BITMAP(id_bitmap, MPTCP_PM_MAX_ADDR_ID + 1);
 	struct mptcp_pm_addr_entry *match = NULL;
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index 46962a2581b4..421e587a4d62 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -849,8 +849,6 @@ int mptcp_pm_remove_subflow(struct mptcp_sock *msk, const struct mptcp_rm_list *
 void mptcp_pm_remove_addrs_and_subflows(struct mptcp_sock *msk,
 					struct list_head *rm_list);
 
-int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
-					     struct mptcp_pm_addr_entry *entry);
 void mptcp_free_local_addr_list(struct mptcp_sock *msk);
 int mptcp_nl_cmd_announce(struct sk_buff *skb, struct genl_info *info);
 int mptcp_nl_cmd_remove(struct sk_buff *skb, struct genl_info *info);
-- 
2.35.3


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

* [PATCH mptcp-next v4 7/7] selftests: mptcp: check userspace mptcp_info
  2023-03-14  3:01 [PATCH mptcp-next v4 0/7] mptcp: update userspace pm mptcp_info fields Geliang Tang
                   ` (5 preceding siblings ...)
  2023-03-14  3:01 ` [PATCH mptcp-next v4 6/7] mptcp: make userspace_pm_append_new_local_addr static Geliang Tang
@ 2023-03-14  3:01 ` Geliang Tang
  2023-03-14  4:23   ` selftests: mptcp: check userspace mptcp_info: Tests Results MPTCP CI
  6 siblings, 1 reply; 9+ messages in thread
From: Geliang Tang @ 2023-03-14  3:01 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

This patch invokes chk_mptcp_info to check userspace PM mptcp_info.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 tools/testing/selftests/net/mptcp/mptcp_join.sh | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 506120401abe..63ceaa613bdc 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -842,8 +842,10 @@ do_transfer()
 				tk=$(grep "type:1," "$evts_ns1" |
 				     sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q')
 				ip netns exec ${listener_ns} ./pm_nl_ctl ann $addr token $tk id $id
+				chk_mptcp_info subflows_1
 				sleep 1
 				ip netns exec ${listener_ns} ./pm_nl_ctl rem token $tk id $id
+				chk_mptcp_info subflows_0
 			fi
 
 			counter=$((counter + 1))
@@ -906,11 +908,13 @@ do_transfer()
 				dp=$(sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2")
 				ip netns exec ${connector_ns} ./pm_nl_ctl csf lip $addr lid $id \
 									rip $da rport $dp token $tk
+				chk_mptcp_info subflows_1
 				sleep 1
 				sp=$(grep "type:10" "$evts_ns2" |
 				     sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q')
 				ip netns exec ${connector_ns} ./pm_nl_ctl dsf lip $addr lport $sp \
 									rip $da rport $dp token $tk
+				chk_mptcp_info subflows_0
 			fi
 			counter=$((counter + 1))
 			add_nr_ns2=$((add_nr_ns2 - 1))
@@ -3148,6 +3152,10 @@ endpoint_tests()
 		pm_nl_add_endpoint $ns2 10.0.2.2 flags signal
 		pm_nl_check_endpoint 0 "modif is allowed" \
 			$ns2 10.0.2.2 id 1 flags signal
+
+		chk_mptcp_info subflows_1
+		pm_nl_del_endpoint $ns2 1 10.0.2.2
+		chk_mptcp_info subflows_0
 		kill_tests_wait
 	fi
 
-- 
2.35.3


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

* Re: selftests: mptcp: check userspace mptcp_info: Tests Results
  2023-03-14  3:01 ` [PATCH mptcp-next v4 7/7] selftests: mptcp: check userspace mptcp_info Geliang Tang
@ 2023-03-14  4:23   ` MPTCP CI
  0 siblings, 0 replies; 9+ messages in thread
From: MPTCP CI @ 2023-03-14  4:23 UTC (permalink / raw)
  To: Geliang Tang; +Cc: mptcp

Hi Geliang,

Thank you for your modifications, that's great!

Our CI did some validations and here is its report:

- KVM Validation: normal (except selftest_mptcp_join):
  - Success! ✅:
  - Task: https://cirrus-ci.com/task/4876870689226752
  - Summary: https://api.cirrus-ci.com/v1/artifact/task/4876870689226752/summary/summary.txt

- KVM Validation: debug (only selftest_mptcp_join):
  - Unstable: 1 failed test(s): selftest_mptcp_join 🔴:
  - Task: https://cirrus-ci.com/task/6565720549490688
  - Summary: https://api.cirrus-ci.com/v1/artifact/task/6565720549490688/summary/summary.txt

- KVM Validation: debug (except selftest_mptcp_join):
  - Critical: KMemLeak ❌:
  - Task: https://cirrus-ci.com/task/5439820642648064
  - Summary: https://api.cirrus-ci.com/v1/artifact/task/5439820642648064/summary/summary.txt

- KVM Validation: normal (only selftest_mptcp_join):
  - Unstable: 1 failed test(s): selftest_mptcp_join 🔴:
  - Task: https://cirrus-ci.com/task/6002770596069376
  - Summary: https://api.cirrus-ci.com/v1/artifact/task/6002770596069376/summary/summary.txt

Initiator: Patchew Applier
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/3c5779e08e74


If there are some issues, you can reproduce them using the same environment as
the one used by the CI thanks to a docker image, e.g.:

    $ cd [kernel source code]
    $ docker run -v "${PWD}:${PWD}:rw" -w "${PWD}" --privileged --rm -it \
        --pull always mptcp/mptcp-upstream-virtme-docker:latest \
        auto-debug

For more details:

    https://github.com/multipath-tcp/mptcp-upstream-virtme-docker


Please note that despite all the efforts that have been already done to have a
stable tests suite when executed on a public CI like here, it is possible some
reported issues are not due to your modifications. Still, do not hesitate to
help us improve that ;-)

Cheers,
MPTCP GH Action bot
Bot operated by Matthieu Baerts (Tessares)

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

end of thread, other threads:[~2023-03-14  4:24 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-14  3:01 [PATCH mptcp-next v4 0/7] mptcp: update userspace pm mptcp_info fields Geliang Tang
2023-03-14  3:01 ` [PATCH mptcp-next v4 1/7] mptcp: don't clear userspace pm addr id Geliang Tang
2023-03-14  3:01 ` [PATCH mptcp-next v4 2/7] mptcp: add addr into userspace pm list Geliang Tang
2023-03-14  3:01 ` [PATCH mptcp-next v4 3/7] mptcp: close remote subflow when destroying it Geliang Tang
2023-03-14  3:01 ` [PATCH mptcp-next v4 4/7] mptcp: increase userspace pm add_addr_signaled Geliang Tang
2023-03-14  3:01 ` [PATCH mptcp-next v4 5/7] mptcp: update userspace pm subflows Geliang Tang
2023-03-14  3:01 ` [PATCH mptcp-next v4 6/7] mptcp: make userspace_pm_append_new_local_addr static Geliang Tang
2023-03-14  3:01 ` [PATCH mptcp-next v4 7/7] selftests: mptcp: check userspace mptcp_info Geliang Tang
2023-03-14  4:23   ` selftests: mptcp: check userspace mptcp_info: Tests Results MPTCP CI

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.