* [PATCH mptcp-next v15 0/5] update userspace pm mptcp_info fields part 1
@ 2023-05-24 8:02 Geliang Tang
2023-05-24 8:02 ` [PATCH mptcp-next v15 1/5] mptcp: only send RM_ADDR in nl_cmd_remove Geliang Tang
` (5 more replies)
0 siblings, 6 replies; 15+ messages in thread
From: Geliang Tang @ 2023-05-24 8:02 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
v15:
- drop "mptcp: export remove_anno_list_by_saddr"
- drop MPTCP_USER_PM_FLAG_RM_* flags
- drop mptcp_pm_alloc_anno_list in mptcp_nl_cmd_sf_create.
v14:
- drop mptcp_pm_remove_addrs helper in patch 1
- add two flags in patch 4, the address entry'll be removed from
userspace_pm_local_addr_list only when both flags are set, by doing this,
it's now independent of the order of the remove_subflows command and
the remove_addrs command.
v13:
- move the RM_ADDR command after the destruction of the subflow in
patch 2 and patch 5.
- drop mptcp_pm_remove_anno_list_by_saddr in mptcp_nl_cmd_sf_destroy in
patch 4.
- update userspace_pm.sh too in patch 5.
v12:
- address Matt's commits in v11.
v11:
- #1-#5 part 1, address Matt's comments in v10.
- #6-#9 part 2, update pm mptcp_info
- #10-#12 part 3, some cleanups.
v10:
- fix userspace_pm.sh errors reported by CI.
- fix the bug in mptcp_pm_remove_addrs in patch 1.
- drop msk->pm.subflow == 1 in mptcp_userspace_pm_delete_local_addr in
patch 3.
- exchange the order of "pm_nl_ctl rem" and "pm_nl_ctl dsf" in patch 2
and 6.
- update the commit logs.
v9:
- address Matt's commets in v8.
v8:
- address Matt's comments.
- split into two series, pt 2 will send later.
v7:
- fix userspace_pm.sh errors reported by CI.
- only remove addrs in mptcp_nl_cmd_remove().
v6:
- send a RM ADDR from userspace.
v5:
- fix a memleak error reported by CI.
- add more delay for userspace pm tests.
v4:
- add more patches
- add selftests
v3:
- update local_addr_used and add_addr_signaled
v2:
- hold pm locks
Geliang Tang (5):
mptcp: only send RM_ADDR in nl_cmd_remove
selftests: mptcp: update userspace pm addr tests
mptcp: add address into userspace pm list
selftests: mptcp: update userspace pm subflow tests
mptcp: update userspace pm infos
net/mptcp/pm.c | 23 +++++++--
net/mptcp/pm_netlink.c | 18 +++++++
net/mptcp/pm_userspace.c | 48 ++++++++++++++++++-
net/mptcp/protocol.h | 1 +
.../testing/selftests/net/mptcp/mptcp_join.sh | 11 ++++-
5 files changed, 95 insertions(+), 6 deletions(-)
--
2.35.3
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH mptcp-next v15 1/5] mptcp: only send RM_ADDR in nl_cmd_remove
2023-05-24 8:02 [PATCH mptcp-next v15 0/5] update userspace pm mptcp_info fields part 1 Geliang Tang
@ 2023-05-24 8:02 ` Geliang Tang
2023-05-24 8:02 ` [PATCH mptcp-next v15 2/5] selftests: mptcp: update userspace pm addr tests Geliang Tang
` (4 subsequent siblings)
5 siblings, 0 replies; 15+ messages in thread
From: Geliang Tang @ 2023-05-24 8:02 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
The specifications from [1] about the "REMOVE" command say:
Announce that an address has been lost to the peer
It was then only supposed to send a RM_ADDR and not trying to delete
associated subflows.
A new helper mptcp_pm_remove_addrs() is then introduced to do just
that, compared to mptcp_pm_remove_addrs_and_subflows() also removing
subflows.
To delete a subflow, the userspace daemon can use the "SUB_DESTROY"
command, see mptcp_nl_cmd_sf_destroy().
Fixes: d9a4594edabf ("mptcp: netlink: Add MPTCP_PM_CMD_REMOVE")
Link: https://github.com/multipath-tcp/mptcp/blob/mptcp_v0.96/include/uapi/linux/mptcp.h [1]
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm_netlink.c | 18 ++++++++++++++++++
net/mptcp/pm_userspace.c | 2 +-
net/mptcp/protocol.h | 1 +
3 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index e8336b8bd30e..ec892fb8d85f 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -1555,6 +1555,24 @@ static int mptcp_nl_cmd_del_addr(struct sk_buff *skb, struct genl_info *info)
return ret;
}
+void mptcp_pm_remove_addrs(struct mptcp_sock *msk, struct list_head *rm_list)
+{
+ struct mptcp_rm_list alist = { .nr = 0 };
+ struct mptcp_pm_addr_entry *entry;
+
+ list_for_each_entry(entry, rm_list, list) {
+ remove_anno_list_by_saddr(msk, &entry->addr);
+ if (alist.nr < MPTCP_RM_IDS_MAX)
+ alist.ids[alist.nr++] = entry->addr.id;
+ }
+
+ if (alist.nr) {
+ spin_lock_bh(&msk->pm.lock);
+ mptcp_pm_remove_addr(msk, &alist);
+ spin_unlock_bh(&msk->pm.lock);
+ }
+}
+
void mptcp_pm_remove_addrs_and_subflows(struct mptcp_sock *msk,
struct list_head *rm_list)
{
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index 27a275805c06..6beadea8c67d 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -232,7 +232,7 @@ int mptcp_nl_cmd_remove(struct sk_buff *skb, struct genl_info *info)
list_move(&match->list, &free_list);
- mptcp_pm_remove_addrs_and_subflows(msk, &free_list);
+ mptcp_pm_remove_addrs(msk, &free_list);
release_sock((struct sock *)msk);
diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h
index 1e8effe395d8..a4bc937baa91 100644
--- a/net/mptcp/protocol.h
+++ b/net/mptcp/protocol.h
@@ -844,6 +844,7 @@ int mptcp_pm_announce_addr(struct mptcp_sock *msk,
bool echo);
int mptcp_pm_remove_addr(struct mptcp_sock *msk, const struct mptcp_rm_list *rm_list);
int mptcp_pm_remove_subflow(struct mptcp_sock *msk, const struct mptcp_rm_list *rm_list);
+void mptcp_pm_remove_addrs(struct mptcp_sock *msk, struct list_head *rm_list);
void mptcp_pm_remove_addrs_and_subflows(struct mptcp_sock *msk,
struct list_head *rm_list);
--
2.35.3
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH mptcp-next v15 2/5] selftests: mptcp: update userspace pm addr tests
2023-05-24 8:02 [PATCH mptcp-next v15 0/5] update userspace pm mptcp_info fields part 1 Geliang Tang
2023-05-24 8:02 ` [PATCH mptcp-next v15 1/5] mptcp: only send RM_ADDR in nl_cmd_remove Geliang Tang
@ 2023-05-24 8:02 ` Geliang Tang
2023-05-24 8:02 ` [PATCH mptcp-next v15 3/5] mptcp: add address into userspace pm list Geliang Tang
` (3 subsequent siblings)
5 siblings, 0 replies; 15+ messages in thread
From: Geliang Tang @ 2023-05-24 8:02 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch is linked to the previous commit ("mptcp: only send RM_ADDR in
nl_cmd_remove").
To align with what is done by the in-kernel PM, update userspace pm addr
selftests, by sending a remove_subflows command together after the
remove_addrs command.
Fixes: d9a4594edabf ("mptcp: netlink: Add MPTCP_PM_CMD_REMOVE")
Fixes: 97040cf9806e ("selftests: mptcp: userspace pm address tests")
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 0044d87556dd..a42745e60976 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -863,7 +863,15 @@ do_transfer()
sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q')
ip netns exec ${listener_ns} ./pm_nl_ctl ann $addr token $tk id $id
sleep 1
+ sp=$(grep "type:10" "$evts_ns1" |
+ sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q')
+ da=$(grep "type:10" "$evts_ns1" |
+ sed -n 's/.*\(daddr6:\)\([0-9a-f:.]*\).*$/\2/p;q')
+ dp=$(grep "type:10" "$evts_ns1" |
+ sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q')
ip netns exec ${listener_ns} ./pm_nl_ctl rem token $tk id $id
+ ip netns exec ${listener_ns} ./pm_nl_ctl dsf lip "::ffff:$addr" \
+ lport $sp rip $da rport $dp token $tk
fi
counter=$((counter + 1))
--
2.35.3
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH mptcp-next v15 3/5] mptcp: add address into userspace pm list
2023-05-24 8:02 [PATCH mptcp-next v15 0/5] update userspace pm mptcp_info fields part 1 Geliang Tang
2023-05-24 8:02 ` [PATCH mptcp-next v15 1/5] mptcp: only send RM_ADDR in nl_cmd_remove Geliang Tang
2023-05-24 8:02 ` [PATCH mptcp-next v15 2/5] selftests: mptcp: update userspace pm addr tests Geliang Tang
@ 2023-05-24 8:02 ` Geliang Tang
2023-05-24 8:43 ` Geliang Tang
2023-05-24 13:21 ` Matthieu Baerts
2023-05-24 8:02 ` [PATCH mptcp-next v15 4/5] selftests: mptcp: update userspace pm subflow tests Geliang Tang
` (2 subsequent siblings)
5 siblings, 2 replies; 15+ messages in thread
From: Geliang Tang @ 2023-05-24 8:02 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Add the address into userspace_pm_local_addr_list when the subflow is
created. Make sure it can be found in mptcp_nl_cmd_remove(). And delete
it in the new helper mptcp_userspace_pm_delete_local_addr().
Add address into pm anno_list in mptcp_nl_cmd_sf_create(). Remove
it when connecting fails.
By doing this, the "REMOVE" command also works with subflows that have
been created via the "SUB_CREATE" command instead of restricting to
the addresses that have been announced via the "ANNOUNCE" command.
Fixes: d9a4594edabf ("mptcp: netlink: Add MPTCP_PM_CMD_REMOVE")
Link: https://github.com/multipath-tcp/mptcp_net-next/issues/379
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm_userspace.c | 41 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index 6beadea8c67d..114548b09f47 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -79,6 +79,30 @@ static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
return ret;
}
+/* If the subflow is closed from the other peer (not via a
+ * subflow destroy command then), we want to keep the entry
+ * not to assign the same ID to another address and to be
+ * able to send RM_ADDR after the removal of the subflow.
+ */
+static int mptcp_userspace_pm_delete_local_addr(struct mptcp_sock *msk,
+ struct mptcp_pm_addr_entry *addr)
+{
+ struct mptcp_pm_addr_entry *entry, *tmp;
+
+ list_for_each_entry_safe(entry, tmp, &msk->pm.userspace_pm_local_addr_list, list) {
+ if (mptcp_addresses_equal(&entry->addr, &addr->addr, false)) {
+ /* TODO: a refcount is needed because the entry can
+ * be used multiple times (e.g. fullmesh mode).
+ */
+ list_del_rcu(&entry->list);
+ kfree(entry);
+ return 0;
+ }
+ }
+
+ return -EINVAL;
+}
+
int mptcp_userspace_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk,
unsigned int id,
u8 *flags, int *ifindex)
@@ -251,6 +275,7 @@ int mptcp_nl_cmd_sf_create(struct sk_buff *skb, struct genl_info *info)
struct nlattr *raddr = info->attrs[MPTCP_PM_ATTR_ADDR_REMOTE];
struct nlattr *token = info->attrs[MPTCP_PM_ATTR_TOKEN];
struct nlattr *laddr = info->attrs[MPTCP_PM_ATTR_ADDR];
+ struct mptcp_pm_addr_entry local = { 0 };
struct mptcp_addr_info addr_r;
struct mptcp_addr_info addr_l;
struct mptcp_sock *msk;
@@ -302,12 +327,24 @@ int mptcp_nl_cmd_sf_create(struct sk_buff *skb, struct genl_info *info)
goto create_err;
}
+ local.addr = addr_l;
+ err = mptcp_userspace_pm_append_new_local_addr(msk, &local);
+ if (err < 0) {
+ GENL_SET_ERR_MSG(info, "did not match address and id");
+ goto create_err;
+ }
+
lock_sock(sk);
err = __mptcp_subflow_connect(sk, &addr_l, &addr_r);
release_sock(sk);
+ spin_lock_bh(&msk->pm.lock);
+ if (err)
+ mptcp_userspace_pm_delete_local_addr(msk, &local);
+ spin_unlock_bh(&msk->pm.lock);
+
create_err:
sock_put((struct sock *)msk);
return err;
@@ -420,7 +457,11 @@ 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 = { .addr = addr_l };
+ spin_lock_bh(&msk->pm.lock);
+ mptcp_userspace_pm_delete_local_addr(msk, &entry);
+ spin_unlock_bh(&msk->pm.lock);
mptcp_subflow_shutdown(sk, ssk, RCV_SHUTDOWN | SEND_SHUTDOWN);
mptcp_close_ssk(sk, ssk, subflow);
MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_RMSUBFLOW);
--
2.35.3
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH mptcp-next v15 4/5] selftests: mptcp: update userspace pm subflow tests
2023-05-24 8:02 [PATCH mptcp-next v15 0/5] update userspace pm mptcp_info fields part 1 Geliang Tang
` (2 preceding siblings ...)
2023-05-24 8:02 ` [PATCH mptcp-next v15 3/5] mptcp: add address into userspace pm list Geliang Tang
@ 2023-05-24 8:02 ` Geliang Tang
2023-05-24 8:02 ` [PATCH mptcp-next v15 5/5] mptcp: update userspace pm infos Geliang Tang
2023-05-24 13:27 ` [PATCH mptcp-next v15 0/5] update userspace pm mptcp_info fields part 1 Matthieu Baerts
5 siblings, 0 replies; 15+ messages in thread
From: Geliang Tang @ 2023-05-24 8:02 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
To align with what is done by the in-kernel PM, update userspace pm
subflow selftests, by sending the a remove_addrs command together
before the remove_subflows command. This will get a RM_ADDR in
chk_rm_nr().
Fixes: d9a4594edabf ("mptcp: netlink: Add MPTCP_PM_CMD_REMOVE")
Fixes: 5e986ec46874 ("selftests: mptcp: userspace pm subflow tests")
Link: https://github.com/multipath-tcp/mptcp_net-next/issues/379
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/mptcp_join.sh | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index a42745e60976..a0c502d617e5 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -937,6 +937,7 @@ do_transfer()
sleep 1
sp=$(grep "type:10" "$evts_ns2" |
sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q')
+ ip netns exec ${connector_ns} ./pm_nl_ctl rem token $tk id $id
ip netns exec ${connector_ns} ./pm_nl_ctl dsf lip $addr lport $sp \
rip $da rport $dp token $tk
fi
@@ -3210,7 +3211,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] 15+ messages in thread
* [PATCH mptcp-next v15 5/5] mptcp: update userspace pm infos
2023-05-24 8:02 [PATCH mptcp-next v15 0/5] update userspace pm mptcp_info fields part 1 Geliang Tang
` (3 preceding siblings ...)
2023-05-24 8:02 ` [PATCH mptcp-next v15 4/5] selftests: mptcp: update userspace pm subflow tests Geliang Tang
@ 2023-05-24 8:02 ` Geliang Tang
2023-05-24 9:37 ` mptcp: update userspace pm infos: Tests Results MPTCP CI
` (3 more replies)
2023-05-24 13:27 ` [PATCH mptcp-next v15 0/5] update userspace pm mptcp_info fields part 1 Matthieu Baerts
5 siblings, 4 replies; 15+ messages in thread
From: Geliang Tang @ 2023-05-24 8:02 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.
Increase add_addr_signaled counter in mptcp_nl_cmd_announce() when the
address is announced by userspace PM.
This modification is similar to how the in-kernel PM is updating the
counter: when additional subflows are created/removed.
Fixes: 9ab4807c84a4 ("mptcp: netlink: Add MPTCP_PM_CMD_ANNOUNCE")
Fixes: 702c2f646d42 ("mptcp: netlink: allow userspace-driven subflow establishment")
Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/329
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/pm.c | 23 +++++++++++++++++++----
net/mptcp/pm_userspace.c | 5 +++++
2 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
index 7539137719ef..e7f944d09fcd 100644
--- a/net/mptcp/pm.c
+++ b/net/mptcp/pm.c
@@ -89,8 +89,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);
@@ -183,8 +190,16 @@ 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);
+ update_subflows = subflow->request_join || subflow->mp_join;
+ if (mptcp_pm_is_userspace(msk)) {
+ if (update_subflows) {
+ spin_lock_bh(&pm->lock);
+ pm->subflows--;
+ spin_unlock_bh(&pm->lock);
+ }
+ return;
+ }
+
if (!READ_ONCE(pm->work_pending) && !update_subflows)
return;
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index 114548b09f47..7ada9cf81c14 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -69,6 +69,7 @@ static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
MPTCP_PM_MAX_ADDR_ID + 1,
1);
list_add_tail_rcu(&e->list, &msk->pm.userspace_pm_local_addr_list);
+ msk->pm.local_addr_used++;
ret = e->addr.id;
} else if (match) {
ret = entry->addr.id;
@@ -91,6 +92,7 @@ static int mptcp_userspace_pm_delete_local_addr(struct mptcp_sock *msk,
list_for_each_entry_safe(entry, tmp, &msk->pm.userspace_pm_local_addr_list, list) {
if (mptcp_addresses_equal(&entry->addr, &addr->addr, false)) {
+ msk->pm.local_addr_used--;
/* TODO: a refcount is needed because the entry can
* be used multiple times (e.g. fullmesh mode).
*/
@@ -195,6 +197,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);
}
@@ -343,6 +346,8 @@ int mptcp_nl_cmd_sf_create(struct sk_buff *skb, struct genl_info *info)
spin_lock_bh(&msk->pm.lock);
if (err)
mptcp_userspace_pm_delete_local_addr(msk, &local);
+ else
+ msk->pm.subflows++;
spin_unlock_bh(&msk->pm.lock);
create_err:
--
2.35.3
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH mptcp-next v15 3/5] mptcp: add address into userspace pm list
2023-05-24 8:02 ` [PATCH mptcp-next v15 3/5] mptcp: add address into userspace pm list Geliang Tang
@ 2023-05-24 8:43 ` Geliang Tang
2023-05-24 13:21 ` Matthieu Baerts
1 sibling, 0 replies; 15+ messages in thread
From: Geliang Tang @ 2023-05-24 8:43 UTC (permalink / raw)
To: mptcp
On Wed, May 24, 2023 at 04:02:46PM +0800, Geliang Tang wrote:
> Add the address into userspace_pm_local_addr_list when the subflow is
> created. Make sure it can be found in mptcp_nl_cmd_remove(). And delete
> it in the new helper mptcp_userspace_pm_delete_local_addr().
>
> Add address into pm anno_list in mptcp_nl_cmd_sf_create(). Remove
> it when connecting fails.
These two lines should be removed.
Thanks,
-Geliang
>
> By doing this, the "REMOVE" command also works with subflows that have
> been created via the "SUB_CREATE" command instead of restricting to
> the addresses that have been announced via the "ANNOUNCE" command.
>
> Fixes: d9a4594edabf ("mptcp: netlink: Add MPTCP_PM_CMD_REMOVE")
> Link: https://github.com/multipath-tcp/mptcp_net-next/issues/379
> Signed-off-by: Geliang Tang <geliang.tang@suse.com>
> ---
> net/mptcp/pm_userspace.c | 41 ++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 41 insertions(+)
>
> diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
> index 6beadea8c67d..114548b09f47 100644
> --- a/net/mptcp/pm_userspace.c
> +++ b/net/mptcp/pm_userspace.c
> @@ -79,6 +79,30 @@ static int mptcp_userspace_pm_append_new_local_addr(struct mptcp_sock *msk,
> return ret;
> }
>
> +/* If the subflow is closed from the other peer (not via a
> + * subflow destroy command then), we want to keep the entry
> + * not to assign the same ID to another address and to be
> + * able to send RM_ADDR after the removal of the subflow.
> + */
> +static int mptcp_userspace_pm_delete_local_addr(struct mptcp_sock *msk,
> + struct mptcp_pm_addr_entry *addr)
> +{
> + struct mptcp_pm_addr_entry *entry, *tmp;
> +
> + list_for_each_entry_safe(entry, tmp, &msk->pm.userspace_pm_local_addr_list, list) {
> + if (mptcp_addresses_equal(&entry->addr, &addr->addr, false)) {
> + /* TODO: a refcount is needed because the entry can
> + * be used multiple times (e.g. fullmesh mode).
> + */
> + list_del_rcu(&entry->list);
> + kfree(entry);
> + return 0;
> + }
> + }
> +
> + return -EINVAL;
> +}
> +
> int mptcp_userspace_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk,
> unsigned int id,
> u8 *flags, int *ifindex)
> @@ -251,6 +275,7 @@ int mptcp_nl_cmd_sf_create(struct sk_buff *skb, struct genl_info *info)
> struct nlattr *raddr = info->attrs[MPTCP_PM_ATTR_ADDR_REMOTE];
> struct nlattr *token = info->attrs[MPTCP_PM_ATTR_TOKEN];
> struct nlattr *laddr = info->attrs[MPTCP_PM_ATTR_ADDR];
> + struct mptcp_pm_addr_entry local = { 0 };
> struct mptcp_addr_info addr_r;
> struct mptcp_addr_info addr_l;
> struct mptcp_sock *msk;
> @@ -302,12 +327,24 @@ int mptcp_nl_cmd_sf_create(struct sk_buff *skb, struct genl_info *info)
> goto create_err;
> }
>
> + local.addr = addr_l;
> + err = mptcp_userspace_pm_append_new_local_addr(msk, &local);
> + if (err < 0) {
> + GENL_SET_ERR_MSG(info, "did not match address and id");
> + goto create_err;
> + }
> +
> lock_sock(sk);
>
> err = __mptcp_subflow_connect(sk, &addr_l, &addr_r);
>
> release_sock(sk);
>
> + spin_lock_bh(&msk->pm.lock);
> + if (err)
> + mptcp_userspace_pm_delete_local_addr(msk, &local);
> + spin_unlock_bh(&msk->pm.lock);
> +
> create_err:
> sock_put((struct sock *)msk);
> return err;
> @@ -420,7 +457,11 @@ 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 = { .addr = addr_l };
>
> + spin_lock_bh(&msk->pm.lock);
> + mptcp_userspace_pm_delete_local_addr(msk, &entry);
> + spin_unlock_bh(&msk->pm.lock);
> mptcp_subflow_shutdown(sk, ssk, RCV_SHUTDOWN | SEND_SHUTDOWN);
> mptcp_close_ssk(sk, ssk, subflow);
> MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_RMSUBFLOW);
> --
> 2.35.3
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: mptcp: update userspace pm infos: Tests Results
2023-05-24 8:02 ` [PATCH mptcp-next v15 5/5] mptcp: update userspace pm infos Geliang Tang
@ 2023-05-24 9:37 ` MPTCP CI
2023-05-24 13:24 ` [PATCH mptcp-next v15 5/5] mptcp: update userspace pm infos Matthieu Baerts
` (2 subsequent siblings)
3 siblings, 0 replies; 15+ messages in thread
From: MPTCP CI @ 2023-05-24 9:37 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):
- Unstable: 1 failed test(s): packetdrill_fastopen 🔴:
- Task: https://cirrus-ci.com/task/6288369974509568
- Summary: https://api.cirrus-ci.com/v1/artifact/task/6288369974509568/summary/summary.txt
- KVM Validation: normal (only selftest_mptcp_join):
- Success! ✅:
- Task: https://cirrus-ci.com/task/4880995090956288
- Summary: https://api.cirrus-ci.com/v1/artifact/task/4880995090956288/summary/summary.txt
- KVM Validation: debug (except selftest_mptcp_join):
- Unstable: 3 failed test(s): packetdrill_fastopen packetdrill_mp_join selftest_diag 🔴:
- Task: https://cirrus-ci.com/task/6006894997798912
- Summary: https://api.cirrus-ci.com/v1/artifact/task/6006894997798912/summary/summary.txt
- KVM Validation: debug (only selftest_mptcp_join):
- Success! ✅:
- Task: https://cirrus-ci.com/task/5443945044377600
- Summary: https://api.cirrus-ci.com/v1/artifact/task/5443945044377600/summary/summary.txt
Initiator: Patchew Applier
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/fbd32059dccc
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] 15+ messages in thread
* Re: [PATCH mptcp-next v15 3/5] mptcp: add address into userspace pm list
2023-05-24 8:02 ` [PATCH mptcp-next v15 3/5] mptcp: add address into userspace pm list Geliang Tang
2023-05-24 8:43 ` Geliang Tang
@ 2023-05-24 13:21 ` Matthieu Baerts
1 sibling, 0 replies; 15+ messages in thread
From: Matthieu Baerts @ 2023-05-24 13:21 UTC (permalink / raw)
To: Geliang Tang, mptcp
Hi Geliang,
On 24/05/2023 10:02, Geliang Tang wrote:
> Add the address into userspace_pm_local_addr_list when the subflow is
> created. Make sure it can be found in mptcp_nl_cmd_remove(). And delete
> it in the new helper mptcp_userspace_pm_delete_local_addr().
>
> Add address into pm anno_list in mptcp_nl_cmd_sf_create(). Remove
> it when connecting fails.
>
> By doing this, the "REMOVE" command also works with subflows that have
> been created via the "SUB_CREATE" command instead of restricting to
> the addresses that have been announced via the "ANNOUNCE" command.
>
> Fixes: d9a4594edabf ("mptcp: netlink: Add MPTCP_PM_CMD_REMOVE")
> Link: https://github.com/multipath-tcp/mptcp_net-next/issues/379
> Signed-off-by: Geliang Tang <geliang.tang@suse.com>
> ---
> net/mptcp/pm_userspace.c | 41 ++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 41 insertions(+)
>
> diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
> index 6beadea8c67d..114548b09f47 100644
> --- a/net/mptcp/pm_userspace.c
> +++ b/net/mptcp/pm_userspace.c
(...)
> @@ -302,12 +327,24 @@ int mptcp_nl_cmd_sf_create(struct sk_buff *skb, struct genl_info *info)
> goto create_err;
> }
>
> + local.addr = addr_l;
> + err = mptcp_userspace_pm_append_new_local_addr(msk, &local);
> + if (err < 0) {
> + GENL_SET_ERR_MSG(info, "did not match address and id");
> + goto create_err;
> + }
> +
> lock_sock(sk);
>
> err = __mptcp_subflow_connect(sk, &addr_l, &addr_r);
>
> release_sock(sk);
>
> + spin_lock_bh(&msk->pm.lock);
> + if (err)
> + mptcp_userspace_pm_delete_local_addr(msk, &local);
> + spin_unlock_bh(&msk->pm.lock);
I was going to ask to move the lock inside the 'if' condition but patch
5/5 introduces a else condition which also needs the lock, all good then.
Cheers,
Matt
--
Tessares | Belgium | Hybrid Access Solutions
www.tessares.net
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH mptcp-next v15 5/5] mptcp: update userspace pm infos
2023-05-24 8:02 ` [PATCH mptcp-next v15 5/5] mptcp: update userspace pm infos Geliang Tang
2023-05-24 9:37 ` mptcp: update userspace pm infos: Tests Results MPTCP CI
@ 2023-05-24 13:24 ` Matthieu Baerts
2023-05-24 14:10 ` Geliang Tang
2023-05-24 15:41 ` mptcp: update userspace pm infos: Tests Results MPTCP CI
2023-05-24 16:46 ` MPTCP CI
3 siblings, 1 reply; 15+ messages in thread
From: Matthieu Baerts @ 2023-05-24 13:24 UTC (permalink / raw)
To: Geliang Tang, mptcp
Hi Geliang,
On 24/05/2023 10:02, Geliang Tang wrote:
> 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.
>
> Increase add_addr_signaled counter in mptcp_nl_cmd_announce() when the
> address is announced by userspace PM.
>
> This modification is similar to how the in-kernel PM is updating the
> counter: when additional subflows are created/removed.
(...)
> diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
> index 114548b09f47..7ada9cf81c14 100644
> --- a/net/mptcp/pm_userspace.c
> +++ b/net/mptcp/pm_userspace.c
> @@ -91,6 +92,7 @@ static int mptcp_userspace_pm_delete_local_addr(struct mptcp_sock *msk,
>
> list_for_each_entry_safe(entry, tmp, &msk->pm.userspace_pm_local_addr_list, list) {
> if (mptcp_addresses_equal(&entry->addr, &addr->addr, false)) {
> + msk->pm.local_addr_used--;
Do you mind if I add this under the following comment with the TODO? We
should only decrement the entry if it is the last one being used.
> /* TODO: a refcount is needed because the entry can
> * be used multiple times (e.g. fullmesh mode).
> */
Cheers,
Matt
--
Tessares | Belgium | Hybrid Access Solutions
www.tessares.net
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH mptcp-next v15 0/5] update userspace pm mptcp_info fields part 1
2023-05-24 8:02 [PATCH mptcp-next v15 0/5] update userspace pm mptcp_info fields part 1 Geliang Tang
` (4 preceding siblings ...)
2023-05-24 8:02 ` [PATCH mptcp-next v15 5/5] mptcp: update userspace pm infos Geliang Tang
@ 2023-05-24 13:27 ` Matthieu Baerts
2023-05-24 14:27 ` Matthieu Baerts
5 siblings, 1 reply; 15+ messages in thread
From: Matthieu Baerts @ 2023-05-24 13:27 UTC (permalink / raw)
To: Geliang Tang, mptcp
Hi Geliang,
On 24/05/2023 10:02, Geliang Tang wrote:
> v15:
> - drop "mptcp: export remove_anno_list_by_saddr"
> - drop MPTCP_USER_PM_FLAG_RM_* flags
> - drop mptcp_pm_alloc_anno_list in mptcp_nl_cmd_sf_create.
Thank you for the v15, it looks good to me!
Reviewed-by: Matthieu Baerts <matthieu.baerts@tessares.net>
I suggest to apply this series today. Then I will look at my series
(selftests: mptcp: skip tests when features are not supported) and hope
to apply it soon. Then we can look at the part 2 of this series if
that's OK for you.
If you need a hand to rebase your series on top of mine, please tell me!
Cheers,
Matt
--
Tessares | Belgium | Hybrid Access Solutions
www.tessares.net
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH mptcp-next v15 5/5] mptcp: update userspace pm infos
2023-05-24 13:24 ` [PATCH mptcp-next v15 5/5] mptcp: update userspace pm infos Matthieu Baerts
@ 2023-05-24 14:10 ` Geliang Tang
0 siblings, 0 replies; 15+ messages in thread
From: Geliang Tang @ 2023-05-24 14:10 UTC (permalink / raw)
To: Matthieu Baerts; +Cc: mptcp
On Wed, May 24, 2023 at 03:24:09PM +0200, Matthieu Baerts wrote:
> Hi Geliang,
>
> On 24/05/2023 10:02, Geliang Tang wrote:
> > 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.
> >
> > Increase add_addr_signaled counter in mptcp_nl_cmd_announce() when the
> > address is announced by userspace PM.
> >
> > This modification is similar to how the in-kernel PM is updating the
> > counter: when additional subflows are created/removed.
> (...)
>
> > diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
> > index 114548b09f47..7ada9cf81c14 100644
> > --- a/net/mptcp/pm_userspace.c
> > +++ b/net/mptcp/pm_userspace.c
> > @@ -91,6 +92,7 @@ static int mptcp_userspace_pm_delete_local_addr(struct mptcp_sock *msk,
> >
> > list_for_each_entry_safe(entry, tmp, &msk->pm.userspace_pm_local_addr_list, list) {
> > if (mptcp_addresses_equal(&entry->addr, &addr->addr, false)) {
> > + msk->pm.local_addr_used--;
>
> Do you mind if I add this under the following comment with the TODO? We
> should only decrement the entry if it is the last one being used.
Yes, it's much better to move this under the TODO comment.
Thanks,
-Geliang
>
> > /* TODO: a refcount is needed because the entry can
> > * be used multiple times (e.g. fullmesh mode).
> > */
>
> Cheers,
> Matt
> --
> Tessares | Belgium | Hybrid Access Solutions
> www.tessares.net
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH mptcp-next v15 0/5] update userspace pm mptcp_info fields part 1
2023-05-24 13:27 ` [PATCH mptcp-next v15 0/5] update userspace pm mptcp_info fields part 1 Matthieu Baerts
@ 2023-05-24 14:27 ` Matthieu Baerts
0 siblings, 0 replies; 15+ messages in thread
From: Matthieu Baerts @ 2023-05-24 14:27 UTC (permalink / raw)
To: Geliang Tang, mptcp
Hi Geliang,
On 24/05/2023 15:27, Matthieu Baerts wrote:
> Hi Geliang,
>
> On 24/05/2023 10:02, Geliang Tang wrote:
>> v15:
>> - drop "mptcp: export remove_anno_list_by_saddr"
>> - drop MPTCP_USER_PM_FLAG_RM_* flags
>> - drop mptcp_pm_alloc_anno_list in mptcp_nl_cmd_sf_create.
>
> Thank you for the v15, it looks good to me!
>
> Reviewed-by: Matthieu Baerts <matthieu.baerts@tessares.net>
>
> I suggest to apply this series today.
Just did, applied in our tree (fixes for -net):
New patches for t/upstream-net and t/upstream:
- 7b19c98c1195: mptcp: only send RM_ADDR in nl_cmd_remove
- c9fb355d4359: selftests: mptcp: update userspace pm addr tests
- d8a70092983f: mptcp: add address into userspace pm list
- ce75026f702c: selftests: mptcp: update userspace pm subflow tests
- 3a08dcee555f: mptcp: update userspace pm infos
- Results: b87768580a4d..a38ce6e2d547 (export-net)
- Results: 0a9978390b78..ba37a83b8dc3 (export)
Tests are now in progress:
https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export-net/20230524T141239
https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20230524T141239
Cheers,
Matt
--
Tessares | Belgium | Hybrid Access Solutions
www.tessares.net
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: mptcp: update userspace pm infos: Tests Results
2023-05-24 8:02 ` [PATCH mptcp-next v15 5/5] mptcp: update userspace pm infos Geliang Tang
2023-05-24 9:37 ` mptcp: update userspace pm infos: Tests Results MPTCP CI
2023-05-24 13:24 ` [PATCH mptcp-next v15 5/5] mptcp: update userspace pm infos Matthieu Baerts
@ 2023-05-24 15:41 ` MPTCP CI
2023-05-24 16:46 ` MPTCP CI
3 siblings, 0 replies; 15+ messages in thread
From: MPTCP CI @ 2023-05-24 15:41 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):
- Unstable: 1 failed test(s): packetdrill_fastopen 🔴:
- Task: https://cirrus-ci.com/task/5532371710115840
- Summary: https://api.cirrus-ci.com/v1/artifact/task/5532371710115840/summary/summary.txt
- KVM Validation: debug (only selftest_mptcp_join):
- Unstable: 1 failed test(s): selftest_mptcp_join 🔴:
- Task: https://cirrus-ci.com/task/5743477942648832
- Summary: https://api.cirrus-ci.com/v1/artifact/task/5743477942648832/summary/summary.txt
- KVM Validation: normal (only selftest_mptcp_join):
- Success! ✅:
- Task: https://cirrus-ci.com/task/6658271616958464
- Summary: https://api.cirrus-ci.com/v1/artifact/task/6658271616958464/summary/summary.txt
- {"code":404,"message":
- "Can't find artifacts containing file conclusion.txt"}:
- Task: https://cirrus-ci.com/task/4617578035806208
- Summary: https://api.cirrus-ci.com/v1/artifact/task/4617578035806208/summary/summary.txt
Initiator: Patchew Applier
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/b551debba8b2
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] 15+ messages in thread
* Re: mptcp: update userspace pm infos: Tests Results
2023-05-24 8:02 ` [PATCH mptcp-next v15 5/5] mptcp: update userspace pm infos Geliang Tang
` (2 preceding siblings ...)
2023-05-24 15:41 ` mptcp: update userspace pm infos: Tests Results MPTCP CI
@ 2023-05-24 16:46 ` MPTCP CI
3 siblings, 0 replies; 15+ messages in thread
From: MPTCP CI @ 2023-05-24 16:46 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):
- Unstable: 1 failed test(s): packetdrill_fastopen 🔴:
- Task: https://cirrus-ci.com/task/5532371710115840
- Summary: https://api.cirrus-ci.com/v1/artifact/task/5532371710115840/summary/summary.txt
- KVM Validation: debug (only selftest_mptcp_join):
- Unstable: 1 failed test(s): selftest_mptcp_join 🔴:
- Task: https://cirrus-ci.com/task/5743477942648832
- Summary: https://api.cirrus-ci.com/v1/artifact/task/5743477942648832/summary/summary.txt
- KVM Validation: normal (only selftest_mptcp_join):
- Success! ✅:
- Task: https://cirrus-ci.com/task/6658271616958464
- Summary: https://api.cirrus-ci.com/v1/artifact/task/6658271616958464/summary/summary.txt
- KVM Validation: debug (except selftest_mptcp_join):
- Unstable: 2 failed test(s): packetdrill_fastopen selftest_diag 🔴:
- Task: https://cirrus-ci.com/task/5670478698774528
- Summary: https://api.cirrus-ci.com/v1/artifact/task/5670478698774528/summary/summary.txt
Initiator: Patchew Applier
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/b551debba8b2
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] 15+ messages in thread
end of thread, other threads:[~2023-05-24 16:46 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-24 8:02 [PATCH mptcp-next v15 0/5] update userspace pm mptcp_info fields part 1 Geliang Tang
2023-05-24 8:02 ` [PATCH mptcp-next v15 1/5] mptcp: only send RM_ADDR in nl_cmd_remove Geliang Tang
2023-05-24 8:02 ` [PATCH mptcp-next v15 2/5] selftests: mptcp: update userspace pm addr tests Geliang Tang
2023-05-24 8:02 ` [PATCH mptcp-next v15 3/5] mptcp: add address into userspace pm list Geliang Tang
2023-05-24 8:43 ` Geliang Tang
2023-05-24 13:21 ` Matthieu Baerts
2023-05-24 8:02 ` [PATCH mptcp-next v15 4/5] selftests: mptcp: update userspace pm subflow tests Geliang Tang
2023-05-24 8:02 ` [PATCH mptcp-next v15 5/5] mptcp: update userspace pm infos Geliang Tang
2023-05-24 9:37 ` mptcp: update userspace pm infos: Tests Results MPTCP CI
2023-05-24 13:24 ` [PATCH mptcp-next v15 5/5] mptcp: update userspace pm infos Matthieu Baerts
2023-05-24 14:10 ` Geliang Tang
2023-05-24 15:41 ` mptcp: update userspace pm infos: Tests Results MPTCP CI
2023-05-24 16:46 ` MPTCP CI
2023-05-24 13:27 ` [PATCH mptcp-next v15 0/5] update userspace pm mptcp_info fields part 1 Matthieu Baerts
2023-05-24 14:27 ` Matthieu Baerts
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.