From nobody Fri Dec 19 04:00:48 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D2D7518D63E for ; Wed, 16 Apr 2025 07:19:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744787990; cv=none; b=cpHE7C9iSC2jab8W4Qsy8bCelvGwJD+vXhdvEBtlbPkZM5yhBsZ2s739cPrrqWOAMxB9FhtOOetk+jIc/hTcQuBwn9NGNx3ATPhVzm95y8IMeFduSv8XSJiz3ufHdDQc8cWvGznYmRL/1h7acHrd0h9iPa3S7bHBxKlQlgf2Xfs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744787990; c=relaxed/simple; bh=sAj1TrG6wvJtSfyRwkWXVcpdbFOaKTuN9JiBJqAnqLY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aqORfIzULTq8Zxn6VtTUFTOcKEcHdOV1RqLjp2dGrIdJCylAZXJE/By2h9YeJ9NHhFTIjCMz3w7ebzSqDhjBqFDxo2V3YkvYI4L76mI8Yn6JL45BmN2lM6R4jaNuqZ+hmnTM8BgtfD6BSaLScO5nCxB9zqTCgkuHJj6yN5XZvAY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=n2XgDZ5/; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="n2XgDZ5/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B56BFC4CEE9; Wed, 16 Apr 2025 07:19:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744787990; bh=sAj1TrG6wvJtSfyRwkWXVcpdbFOaKTuN9JiBJqAnqLY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=n2XgDZ5/MkYuxXImiMvA+5E7pxBFe1SaWtTSldphnx+Py/t1sPLGUaFG+YgVJFgxp gt3XTHlAjwXQ6wlSssTWMvzdu+jV1GEgFECUuvVCR45JlwbcXWn+D/CLWA5p8uogMw NRpd6yRvxg9C/8RDHP9IRMz5lUkAHEtgE8On4rH8wz9FFNAGQkpDn608B4Z3anyY0e PidrJAxmKKtHdnygiaMdzXdZDeOif6QIbIwt+yRraLGT2Tu+c2lxTUrCA1ny96SmKH Kt8PAdgz/2qbTFsjLsJaTJeehKaW+jNhCVr48anPKugAe06VNIOFKFNMzrpkdm6dCY YgmQFxr0QEf6w== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v3 1/3] mptcp: pm: userspace: drop delete_local_addr helper Date: Wed, 16 Apr 2025 15:17:07 +0800 Message-ID: <2440a7ebe28a5034326d04b9c9cd8e4fa4edcd28.1744787273.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Address entries should not be removed from local_addr_list when a subflow is deleted by the userspace PM, should only be removed when sending a REMOVE_ADDR. So mptcp_userspace_pm_delete_local_addr() helper shouldn't be called in mptcp_pm_nl_subflow_create_doit() and mptcp_pm_nl_subflow_destroy_doit(). Since this helper is open-coding in mptcp_pm_nl_remove_doit(), it can be dropped now. Address entries are removed from local_addr_list when sending a REMOVE_ADDR by the userspace PM, the local_addr_used counter of PM should also be decremented accordingly. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/403 Signed-off-by: Geliang Tang Reviewed-by: Mat Martineau --- net/mptcp/pm_userspace.c | 37 +++++-------------------------------- 1 file changed, 5 insertions(+), 32 deletions(-) diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index 1911fe1799fa..85c6c65edbed 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -90,30 +90,6 @@ static int mptcp_userspace_pm_append_new_local_addr(stru= ct mptcp_sock *msk, return ret; } =20 -/* 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 sock *sk =3D (struct sock *)msk; - struct mptcp_pm_addr_entry *entry; - - entry =3D mptcp_userspace_pm_lookup_addr(msk, &addr->addr); - if (!entry) - return -EINVAL; - - /* TODO: a refcount is needed because the entry can - * be used multiple times (e.g. fullmesh mode). - */ - list_del_rcu(&entry->list); - sock_kfree_s(sk, entry, sizeof(*entry)); - msk->pm.local_addr_used--; - return 0; -} - static struct mptcp_pm_addr_entry * mptcp_userspace_pm_lookup_addr_by_id(struct mptcp_sock *msk, unsigned int = id) { @@ -331,6 +307,7 @@ int mptcp_pm_nl_remove_doit(struct sk_buff *skb, struct= genl_info *info) } =20 list_del_rcu(&match->list); + msk->pm.local_addr_used--; spin_unlock_bh(&msk->pm.lock); =20 mptcp_pm_remove_addr_entry(msk, match); @@ -412,14 +389,13 @@ int mptcp_pm_nl_subflow_create_doit(struct sk_buff *s= kb, struct genl_info *info) err =3D __mptcp_subflow_connect(sk, &local, &addr_r); release_sock(sk); =20 - if (err) + if (err) { GENL_SET_ERR_MSG_FMT(info, "connect error: %d", err); + goto create_err; + } =20 spin_lock_bh(&msk->pm.lock); - if (err) - mptcp_userspace_pm_delete_local_addr(msk, &entry); - else - msk->pm.subflows++; + msk->pm.subflows++; spin_unlock_bh(&msk->pm.lock); =20 create_err: @@ -538,9 +514,6 @@ int mptcp_pm_nl_subflow_destroy_doit(struct sk_buff *sk= b, struct genl_info *info goto release_sock; } =20 - spin_lock_bh(&msk->pm.lock); - mptcp_userspace_pm_delete_local_addr(msk, &addr_l); - spin_unlock_bh(&msk->pm.lock); mptcp_subflow_shutdown(sk, ssk, RCV_SHUTDOWN | SEND_SHUTDOWN); mptcp_close_ssk(sk, ssk, mptcp_subflow_ctx(ssk)); MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_RMSUBFLOW); --=20 2.43.0 From nobody Fri Dec 19 04:00:48 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C753C18D63E for ; Wed, 16 Apr 2025 07:19:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744787992; cv=none; b=J1MFQvL4ocidB0R9z9uglFd/l8YH/4AdbzPSr8sLi2XT/oIBBf0UzQY76yiw9e40RAegZzWTLqE5pb4qQHh8QkVmWOKAAFce7ANa8bh3tYPPTYnXRu+Qc1E8y28nWZDXIGBMUZ5BBy6X3BiH3G4KSPokQfvNOAMrI9ctN5OvX7M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744787992; c=relaxed/simple; bh=d/6wuDhHBSsnjHX9AsWufhTG76l2GNyGFlbNc5T2Rkk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=s0iUIL9Tcd9/6ZVdztysFRsEN/GpkXItVtttQFDOBc3uyqjlGeSduIm9rGWeORTE/Wf6ICwOU46lxcYhnTq19ZDWWMVzY0fWy15IF3H1dhsd4HhO78CpIoQDjaRSSqUDbqJhyxZj3sei7JUo536XC1rUTjjWVmxsRPLEKk2HUe0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=XXaaFGoF; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="XXaaFGoF" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5D7CDC4CEE9; Wed, 16 Apr 2025 07:19:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744787992; bh=d/6wuDhHBSsnjHX9AsWufhTG76l2GNyGFlbNc5T2Rkk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XXaaFGoFSREBbTK54cS/yl+z9cOIh5nx/Gd/IZLH3Ygzs7DQ5rT9B5EOFbbrHfG/O V+LEOAH+uFx5q7ahOYSrlPS8DhVRKF10qQqdjJfdZTaQ9nwZkIdKaDCwHg7mWknJlA nUT5p9tMhrzaz+yNCHpFWjetcfcd605jh6m2kTwnFAeMRtINJK1yo7G7IOAyN+pzgJ nG5+hEzo6ShsErzO9WTn51D228LZjj/+eZJVP0buMG4JATTa4ob7GLlmE3mkLYwBgh aeJrFtfs2khnQbVx1bUZKCuYAdy8PdbfnfeQmye/Xm2xe6FJrZqgGeoXrs1xXF4MYl r49heOC0uM9mA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v3 2/3] selftests: mptcp: join: update userspace dump_addr outputs Date: Wed, 16 Apr 2025 15:17:08 +0800 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Now address entries only be removed from local_addr_list when sending a REMOVE_ADDR by the userspace PM, they're no longer removed when a subflow is deleted. To make userspace PM selftests in mptcp_join.sh pass, this patch updates the outputs of dump_addr. Signed-off-by: Geliang Tang Reviewed-by: Mat Martineau --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index b8af65373b3a..eed9f68edb0b 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -3625,9 +3625,9 @@ userspace_tests() userspace_pm_chk_get_addr "${ns1}" "20" "id 20 flags signal 10.0.3.1" userspace_pm_rm_sf $ns1 "::ffff:10.0.2.1" $MPTCP_LIB_EVENT_SUB_ESTABLISH= ED userspace_pm_chk_dump_addr "${ns1}" \ - "id 20 flags signal 10.0.3.1" "after rm_sf 10" + $'id 10 flags signal 10.0.2.1\nid 20 flags signal 10.0.3.1' "after rm_s= f 10" userspace_pm_rm_addr $ns1 20 - userspace_pm_chk_dump_addr "${ns1}" "" "after rm_addr 20" + userspace_pm_chk_dump_addr "${ns1}" "id 10 flags signal 10.0.2.1" "after= rm_addr 20" chk_rm_nr 1 1 invert chk_mptcp_info subflows 0 subflows 0 chk_subflows_total 1 1 @@ -3654,7 +3654,7 @@ userspace_tests() userspace_pm_chk_get_addr "${ns2}" "20" "id 20 flags subflow 10.0.3.2" userspace_pm_rm_sf $ns2 10.0.3.2 $MPTCP_LIB_EVENT_SUB_ESTABLISHED userspace_pm_chk_dump_addr "${ns2}" \ - "" \ + "id 20 flags subflow 10.0.3.2" \ "after rm_sf 20" chk_rm_nr 0 1 chk_mptcp_info subflows 0 subflows 0 --=20 2.43.0 From nobody Fri Dec 19 04:00:48 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 24F5A21D594 for ; Wed, 16 Apr 2025 07:19:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744787994; cv=none; b=V8QPMJOnwyYuNUw2Iy4VjtuovfRt4tvphEfT1WPlh0YkWoPCzknvJJguNl4ZHpeaRvkq9GIY/T6dqzZTLi8kMPmzjU/1T2RDkFA+b2S+4a/IvNKWGgp6QQCkSU057bmM1Z6hYIhbPR+Rl3TJN/8t9WQuGz85bG2RDHLvQneVcSI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744787994; c=relaxed/simple; bh=xzD1tiXM2ywhlsCTxcShighhDVOuHN2Sj5vNm9JsaBA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SR+UZVZ8UjGEHmoNPJDBICAAKFPXUZXd3QIlMA0/Dp/gRmAPPtbCgUxw3Mvr7yEi23Ql1qywXTAuindlr542dR1V22h5zQP5xQsJrlBHzxRpW0GgmB+qE15biw818E3sX7bpUXonwZf8yp97jX2Ikd1m8c+cKx+KL7qaJ8ygs2A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=RlqII210; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="RlqII210" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AE732C4CEE2; Wed, 16 Apr 2025 07:19:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744787993; bh=xzD1tiXM2ywhlsCTxcShighhDVOuHN2Sj5vNm9JsaBA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RlqII210oKQ1FbgCgkDmchfgBZhjEx/n8UmYqzAv3z4yBAdBJbucYPQrCY6b8Ubn4 2OfEEybX9Dts+n6sEmjNRMHIyxsqEFZ+Go60Oi+Gr1bcX1LopeLCVfKvh/CUAjnnlX a3fivO5XYn8iEBdnzYJPl34vPYa62QDqVEg6UtzKDY2dwPJsSpAYXdQ6D3mSxtl8jg 9Z4wlsfqFQw0BlSUt3UKAGn4VQPTpOjGhn4whMG2JQbMIyKRNlDU6rUQISU3DY9ng3 2qPUEU/K71eL31OqaBEYjx/aTpRjSGhKkE/GwdOt6vpVfqu/IXUrtXyzqJjB1E3Osh M6rlSbU+rxp3g== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v3 3/3] selftests: mptcp: userspace: send RM_ADDR between server and client Date: Wed, 16 Apr 2025 15:17:09 +0800 Message-ID: <90e496e8e2df3d5cf11c319cddbbfc958f15a97f.1744787273.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Geliang Tang Now address entries only be removed from local_addr_list when sending a REMOVE_ADDR by the userspace PM, they're no longer removed when a subflow is deleted. To make the original userspace PM selftests pass, this patch sends RM_ADDR from server to client machine at the end of each test, and always sends RM_ADDR from client to server machine to cleanup address IDs for the next new test. Signed-off-by: Geliang Tang Reviewed-by: Mat Martineau --- tools/testing/selftests/net/mptcp/userspace_pm.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh b/tools/test= ing/selftests/net/mptcp/userspace_pm.sh index 333064b0b5ac..b756ff80bf8c 100755 --- a/tools/testing/selftests/net/mptcp/userspace_pm.sh +++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh @@ -633,6 +633,8 @@ test_subflows() "dead:beef:2::1" "dead:beef:2::2" "$client6_port" "23"\ "$client_addr_id" "ns1" "ns2" =20 + # RM_ADDR from server to client machine + ip netns exec "$ns1" ./pm_nl_ctl rem id 23 token "$server6_token" # RM_ADDR from client to server machine ip netns exec "$ns2" ./pm_nl_ctl rem id $client_addr_id token\ "$client6_token" @@ -671,6 +673,8 @@ test_subflows() verify_subflow_events "$server_evts" "$SUB_CLOSED" "$server4_token" "$AF_= INET" "10.0.2.1"\ "10.0.2.2" "$new4_port" "23" "$client_addr_id" "ns1" "ns2" =20 + # RM_ADDR from server to client machine + ip netns exec "$ns1" ./pm_nl_ctl rem id 23 token "$server4_token" # RM_ADDR from client to server machine ip netns exec "$ns2" ./pm_nl_ctl rem id $client_addr_id token\ "$client4_token" @@ -712,6 +716,8 @@ test_subflows() # RM_ADDR from server to client machine ip netns exec "$ns1" ./pm_nl_ctl rem id $server_addr_id token\ "$server4_token" + # RM_ADDR from client to server machine + ip netns exec "$ns2" ./pm_nl_ctl rem id 23 token "$client4_token" sleep 0.5 =20 # Attempt to add a listener at dead:beef:2::1: @@ -751,6 +757,8 @@ test_subflows() # RM_ADDR6 from server to client machine ip netns exec "$ns1" ./pm_nl_ctl rem id $server_addr_id token\ "$server6_token" + # RM_ADDR6 from client to server machine + ip netns exec "$ns2" ./pm_nl_ctl rem id 23 token "$client6_token" sleep 0.5 =20 # Attempt to add a listener at 10.0.2.1: @@ -788,6 +796,8 @@ test_subflows() # RM_ADDR from server to client machine ip netns exec "$ns1" ./pm_nl_ctl rem id $server_addr_id token\ "$server4_token" + # RM_ADDR from client to server machine + ip netns exec "$ns2" ./pm_nl_ctl rem id 23 token "$client4_token" } =20 test_subflows_v4_v6_mix() @@ -835,6 +845,8 @@ test_subflows_v4_v6_mix() # RM_ADDR from server to client machine ip netns exec "$ns1" ./pm_nl_ctl rem id $server_addr_id token\ "$server6_token" + # RM_ADDR from client to server machine + ip netns exec "$ns2" ./pm_nl_ctl rem id 23 token "$client6_token" sleep 0.5 } =20 --=20 2.43.0