From nobody Tue May 5 11:22:27 2026 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 B118D146D5A for ; Tue, 14 Apr 2026 13:34:12 +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=1776173652; cv=none; b=jLRfotQJam3LoiA1SDt+61YxoINmIFOHsLAARvmhcrVNTdJ3QI8XsXaP2w3E4o1xPjJt+ciOPhosS1xZ5UHZBEVU+6D3xGSc3aKqHI1cn2rF5tgVVb3FDYaGmi3kheokn/4rUxJDcXA+O79g0HqzWsI5HRwOasHMU/RmNtQlGJ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173652; c=relaxed/simple; bh=qU2gO4U+rLHR/oV2lgldodaiCkxfghI5r1NFCTslTiA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fzEl5rLhzDlLxVRgf6OFeC8QhbBY2eE2S5EbFK9gdH+jD/wBcVTgZVx2B/YMkHzpceEDFAa7P00zWYZnPuncNnUHxUHeWLiZPzxqEm8o3TmvCB3bk/yBn4P3/rEDcx5vYr087adbs6dY/vlQq8EIeObmxLTgqQ1HqRfxG03JfyA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kXJamstN; 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="kXJamstN" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 23D1EC2BCB6; Tue, 14 Apr 2026 13:34:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173652; bh=qU2gO4U+rLHR/oV2lgldodaiCkxfghI5r1NFCTslTiA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=kXJamstNM8xdQzaMoCuKywVryFNGFVd7NZkSVgkpUlKzAke18HRTFVVqFbKwlGw1d ZiN8Q7sVYeCNs4JO46S78QfT0mIr9FnIXXAWw0/AfgQ1iVt6DNIlhxRTotg4XaOvjS Xe4/Ig3q0s9dOc3M3WN5LRjcPEO0p2t95rhIsS41OZ42YuZm1ZIlxu0Gv0ddR4cdtM f7AZfviJl7FRNW+jT9RQpoXCXONwGtTq028xE5r81Ca6dKJPZXOdrq294Jzof8f//M 0CWhtBGbJ+6qQKNzNMzkx4dcm+TaQE4kb7lNnnDK7fGaX+Tops7VnzdCCF9vBzq3sQ +3e0bFBQOV6qw== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:33:54 +0200 Subject: [PATCH mptcp-net v4 01/20] mptcp: pm: kernel: correctly retransmit ADD_ADDR ID 0 Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-1-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2074; i=matttbe@kernel.org; h=from:subject:message-id; bh=qU2gO4U+rLHR/oV2lgldodaiCkxfghI5r1NFCTslTiA=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOXkcTszOufki1Xn+Df3DH/9ULa+wT5Q55jcrZfXNr js2X/R2dpSyMIhxMciKKbJIt0Xmz3xexVvi5WcBM4eVCWQIAxenAEzEnpmR4bakhDDv/neGzXLX Mri3LZb/eXX2lXvpT77Hvo5t/Mrd1srIsCUz791G4ZCta0JU/n09/Ujn1/Lz2yd3BO29s0H/quD WSgYA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When adding the ADD_ADDR to the list, the address including the IP, port and ID are copied. On the other hand, when the endpoint corresponds to the one from the initial subflow, the ID is set to 0, as specified by the MPTCP protocol. The issue is that the ID was reset after having copied the ID in the ADD_ADDR entry. So the retransmission was done, but using a different ID than the initial one. Fixes: 8b8ed1b429f8 ("mptcp: pm: reuse ID 0 after delete and re-add") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index 7895fb5f982e..906a1d5ab9ed 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -347,6 +347,8 @@ static void mptcp_pm_create_subflow_or_signal_addr(stru= ct mptcp_sock *msk) =20 /* check first for announce */ if (msk->pm.add_addr_signaled < endp_signal_max) { + u8 endp_id; + /* due to racing events on both ends we can reach here while * previous add address is still running: if we invoke now * mptcp_pm_announce_addr(), that will fail and the @@ -360,19 +362,20 @@ static void mptcp_pm_create_subflow_or_signal_addr(st= ruct mptcp_sock *msk) if (!select_signal_address(pernet, msk, &local)) goto subflow; =20 + /* Special case for ID0: set the correct ID */ + endp_id =3D local.addr.id; + if (endp_id =3D=3D msk->mpc_endpoint_id) + local.addr.id =3D 0; + /* If the alloc fails, we are on memory pressure, not worth * continuing, and trying to create subflows. */ if (!mptcp_pm_alloc_anno_list(msk, &local.addr)) return; =20 - __clear_bit(local.addr.id, msk->pm.id_avail_bitmap); + __clear_bit(endp_id, msk->pm.id_avail_bitmap); msk->pm.add_addr_signaled++; =20 - /* Special case for ID0: set the correct ID */ - if (local.addr.id =3D=3D msk->mpc_endpoint_id) - local.addr.id =3D 0; - mptcp_pm_announce_addr(msk, &local.addr, false); mptcp_pm_addr_send_ack(msk); =20 --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 70DAC146D5A for ; Tue, 14 Apr 2026 13:34:13 +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=1776173653; cv=none; b=l54jYY3UcDcCqlLhGuQYgESqyATqoM+Mmd6oh1yriCp3yC1NKi3i/WKZvtd9EZfR5kS39ufLFXF7UjAuFMjHUbmSUVEL6sEUqh/roTmT0JkFDmJA+/vYEvaPJqL1tdIzZhbBV4p44ektnSchKuENqCOW5lV1uaQ4vAIXrPoOZVw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173653; c=relaxed/simple; bh=xqQ0XziJocJK+T47pPjFZrFCFv0UNP98JJxxWrafiv4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mEVx+H7XhpDxwsOaKysZ5bpQcFrx4xOBAQ8YWftM54jxHjwiNBpCA2RPuegFJ/xHMXrhwWmHLoQSk9UQP4vriHKAeX7BY5FzkaWCxcU/gLnI9JPKBiLuL6RTkZdQsEjbmMQoZtJPGYvkuYUh3lcTIGZZpZPXRXTXBqJwrB3pHbY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Bbuptivc; 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="Bbuptivc" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DFB0AC2BCB0; Tue, 14 Apr 2026 13:34:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173653; bh=xqQ0XziJocJK+T47pPjFZrFCFv0UNP98JJxxWrafiv4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Bbuptivc7NbL4Ll0vNeqegdHFPLu2hI4UMcxUd9DREbTIMKP2ipea+DwBuCKWK/ho 3u/JN2AoPD79w/MaJxIpOI9yNietWXP4v218XNjeJXASQL3f4otk4ONAa8tEOh6ZqF Z5YPtAbH2STjYEtD8/14o7JA/dlRHUHFU5zo6z6pYtdSwQrJWkMj4yTarTBXqL8IkN wFtGqD68rmpOJYAYlkqCdGC7SWS55q1u0zn9wb1bB2Yki/VJJ/ilBkr8L0zV1eVrV1 xYkCyp6vVnZvWeQprdF0HTtVj4B1nMcAp4x7aI5zRqTSXz5xcer0O615uIx3PfAETd zmdwYqBu3GMtg== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:33:55 +0200 Subject: [PATCH mptcp-net v4 02/20] mptcp: pm: ADD_ADDR rtx: fix potential data-race Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-2-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1180; i=matttbe@kernel.org; h=from:subject:message-id; bh=xqQ0XziJocJK+T47pPjFZrFCFv0UNP98JJxxWrafiv4=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOXkqWqWcK2FPnXbe+fnOpbq1j6aXOURetu3a16n0r /Z1Rot0RykLgxgXg6yYIot0W2T+zOdVvCVefhYwc1iZQIYwcHEKwET82hkZvjxIVpgiYHie58F7 acbieN6q+BdlFouErad0u+10LHL5zchweMsBjm67VpGgE8/b9ffO29J3431u5L1PrTN6vdJEF/9 lBwA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 This mptcp_pm_add_timer() helper is executed as a timer callback in softirq context. To avoid any data races, the socket lock needs to be held with bh_lock_sock(). If the socket is in use, retry again soon after, similar to what is done with the keepalive timer. Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index fdadd0e8f77c..43a11b65235f 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -340,6 +340,13 @@ static void mptcp_pm_add_timer(struct timer_list *time= r) if (!entry->addr.id) return; =20 + bh_lock_sock(sk); + if (sock_owned_by_user(sk)) { + /* Try again later. */ + sk_reset_timer(sk, timer, jiffies + HZ / 20); + goto out; + } + if (mptcp_pm_should_add_signal_addr(msk)) { sk_reset_timer(sk, timer, jiffies + TCP_RTO_MAX / 8); goto out; @@ -368,6 +375,7 @@ static void mptcp_pm_add_timer(struct timer_list *timer) mptcp_pm_subflow_established(msk); =20 out: + bh_unlock_sock(sk); __sock_put(sk); } =20 --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 4ACBD146D5A for ; Tue, 14 Apr 2026 13:34:14 +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=1776173654; cv=none; b=qLg1tVdbyjTKXoAi05e6MoXpJwU5aHhjwkPtnxWraJKLC0dn/oNdb/qXKYXaJqOgHk2DZ9dTjEftFBoOo14rIhM1c7abjHNTF4XGPdGnvjAPOvjOhWYylO0WratDiNDwmp1y5Q5jk6fn+VyHtvUPLdhcmy127/1FfQn04MW71CM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173654; c=relaxed/simple; bh=RjhEZ4Y9dGN7dl5bP4at23CWIzyuoWHqJdbVn30LIas=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rNmxBai6sacGLXOxs/AR+mP5gG/MljkD7hxpv0sIlh3xtFYa3q+JaSMLdlJHd9bF7bngCmpM9XccB7ZF+dsJkL9ncFvwPwU/DzWPSFvSvRx3S3E7keX1hv9dHD2eLSaZ9n+f/XGgzr7w5WKi0GutUw445CN6R9r0g9zqD73KTQc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JIZXoEUS; 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="JIZXoEUS" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A6A2CC2BCB0; Tue, 14 Apr 2026 13:34:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173654; bh=RjhEZ4Y9dGN7dl5bP4at23CWIzyuoWHqJdbVn30LIas=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=JIZXoEUSXql/jWBrDJr3RrSkJ6cAQgtxHsV+lKvHgM0FEq+XByPQ5oJiFbCMmeDS2 N+Fd0xOJfmVyvtXDQwBvavalnmw7dT4N6BvFg53dordCmuqM2jaIXZNZrbRhMQjIzx fOGOYAaxXFNyk5Mewq5DuRmf5wqvmvOMWyBOX9bdy7PZzocOsQJwCTZxlbEYR+dLmE H3e0V6kP5uIJ36RNGUz0+DI1AyjK7Q8KRBQTgrzdrlMe153Ybf7z3sI9uN2Hm83TnK kIbg9j4acYWfJF3PkpOmPe16aVNG//tZjSlpRyy95dLUOFx9fyt3G6I/QhkHY6kVGB EhocmfsKDk+7A== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:33:56 +0200 Subject: [PATCH mptcp-net v4 03/20] mptcp: pm: ADD_ADDR rtx: allow ID 0 Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-3-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=875; i=matttbe@kernel.org; h=from:subject:message-id; bh=RjhEZ4Y9dGN7dl5bP4at23CWIzyuoWHqJdbVn30LIas=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOXll8n5wSJaeu+z6tcd7DRKOc1Rxyy6NMXYJflyx/ slL31cGHaUsDGJcDLJiiizSbZH5M59X8ZZ4+VnAzGFlAhnCwMUpABO5/4mR4cAVu307D6535tae 0qvWeKv3EP/tnnvpHN2R+/pTF1Qp1DP8j/XhrnnOo5ZnJuF8Ma7t7xORpHkmPmEaTTONf8XfClj FBQA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 ADD_ADDR can be sent for the ID 0, which corresponds to the local address and port linked to the initial subflow. Indeed, this address could be removed, and re-added later on, e.g. what is done in the "delete re-add signal" MPTCP Join selftests. So no reason to ignore it. Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 43a11b65235f..6a75470dcf5e 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -337,9 +337,6 @@ static void mptcp_pm_add_timer(struct timer_list *timer) if (inet_sk_state_load(sk) =3D=3D TCP_CLOSE) return; =20 - if (!entry->addr.id) - return; - bh_lock_sock(sk); if (sock_owned_by_user(sk)) { /* Try again later. */ --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 EE929146D5A for ; Tue, 14 Apr 2026 13:34:14 +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=1776173655; cv=none; b=JeOm2aW4KMVLMEb4U4+fTSQ0ri+UDyg+DMyJDjqWrt9t/8ImQrXhfe/vidFICkA+Z5aU1hsz+2tkjM5IuPoJwMElSghmYwKMVpUrKlLN1oCFO31vBKRhUatrkzPXPPwq2sN3ury8xPEspIOLi7k6VPwAph+YSLDHt/jk8bNQjLY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173655; c=relaxed/simple; bh=S5iyu6EcSvC9FvRM6ZNlySYLGPjU4l8BWtgnvahmpec=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LuMTNX1kwhFC/yOS5k2F2WduCXYsnSsA5v5ZwY1bO7k78ad9k5/9iSXtDRcMfjQmunwrrS+SQ1cYpy7Pjbto51PamhxhoPweZAq5ZEllt3JUQShxEBPvjoMgki8H/LrShiGnsDS5BfClak9G380+Fi8sVVxf6oRIabVm0xPEfUY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GNdUbIlM; 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="GNdUbIlM" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6D900C2BCB0; Tue, 14 Apr 2026 13:34:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173654; bh=S5iyu6EcSvC9FvRM6ZNlySYLGPjU4l8BWtgnvahmpec=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=GNdUbIlMhY9nhWiBntpgs6yau41nEKVWYVKudHhAxvWSH4Sxu6sAnxyLHs+BePeBN 1H+WPDAaLiSfvhVH0TuSXh3KlUHpDa2uzK3AdJn0Ima4ESujqkITcRBicDfhFaMWk4 1PEV9Y1ilTiw3DoKPXPJGPoNgf6r/yjrkPDDb8LM3l0pHjTxbbeDtm+h2fpASA9Cc1 jW8AtjENPpad5CHtwQ98iHxU9L8tmwheVjIZqgH0cK7aCff1K99PwX/S0YeE637vow g0LcfwyZAc1CB8oaQWuyaJnPRN+ZEkezjLT1cdnwUWr1RQ0tgZ6Pm1c6SXZAKoci29 ali4wGP/Hcijg== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:33:57 +0200 Subject: [PATCH mptcp-net v4 04/20] mptcp: pm: ADD_ADDR rtx: always decrease sk refcount Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-4-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1301; i=matttbe@kernel.org; h=from:subject:message-id; bh=S5iyu6EcSvC9FvRM6ZNlySYLGPjU4l8BWtgnvahmpec=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOXntPaS8sf3V07/lKXMe39Viad7VziK6Ztfd7OKDk 5XnvLob1lHKwiDGxSArpsgi3RaZP/N5FW+Jl58FzBxWJpAhDFycAjCR6XMZGY58fvm3eDpL/IEX nydI80jckg0KnraM53DQWb5PKrzyLz8y/FOafblaJ2h7KsuMzbsW2s2a6CQ51eb0XMNNZa+1L/1 6zcAPAA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When an ADD_ADDR is retransmitted, the sk is held in sk_reset_timer(). It should then be released in all cases at the end. Some (unlikely) checks were returning directly instead of calling sock_put() to decrease the refcount. Jump to the 'out' label to fix this potential leak. While at it, drop the '!msk' check which cannot happen because it is never reset, and explicitly mark the remaining one as "unlikely". Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Signed-off-by: Matthieu Baerts (NGI0) --- v3: remove '!msk' check: cannot be true. --- net/mptcp/pm.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 6a75470dcf5e..d3fcf441b208 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -331,11 +331,8 @@ static void mptcp_pm_add_timer(struct timer_list *time= r) =20 pr_debug("msk=3D%p\n", msk); =20 - if (!msk) - return; - - if (inet_sk_state_load(sk) =3D=3D TCP_CLOSE) - return; + if (unlikely(inet_sk_state_load(sk) =3D=3D TCP_CLOSE)) + goto exit; =20 bh_lock_sock(sk); if (sock_owned_by_user(sk)) { @@ -373,6 +370,7 @@ static void mptcp_pm_add_timer(struct timer_list *timer) =20 out: bh_unlock_sock(sk); +exit: __sock_put(sk); } =20 --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 C688E146D5A for ; Tue, 14 Apr 2026 13:34:15 +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=1776173655; cv=none; b=GfV9PKiFvkc0rMBp+OAU4bTsqpEpfBiYZHw5BrF0PBpA6hQKvdagI8JhX14Oxz+WcQozX4K+iZq3Ge0frn3kA7nISK3lEdMHJYbqsZzcOJPbO0H61iPIkZVcAwKPVa+e+TaY3R57RTyxY6rShlOCAip6KA+LkH23ugsJhT4ITzw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173655; c=relaxed/simple; bh=FRPidl+H9O8QOhm3CdDUKERP/ZpJ02lMg4zW9sxFL2Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=a2dlSPxUHM/i0A1k9hUp1vw1hPrE12lDwYF1rQ48wBymNF1yefPcPwWNCVA8oa7wS6+gRt7H2o4EWU8zsL80UwAdWq1k2V+xlbw3uIi5yzk5oPrZ9gQWreRRFlS6x53vVkX6xtzGsbmN7GWLmYCU3B4HHE4BkV1CVgrPKZqSM2I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=NogiKGbd; 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="NogiKGbd" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3592EC2BCB0; Tue, 14 Apr 2026 13:34:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173655; bh=FRPidl+H9O8QOhm3CdDUKERP/ZpJ02lMg4zW9sxFL2Y=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NogiKGbdDFHPtcxxgBy9l9sS1awtAV7UtNRmr3LoXWA0tT49zRw8jjZKWIEqICAEt tlSPa4SbnXln0H/gDF3NucKXW1OnmPP/Ej+jXOThMbogfNvFZTWtGTdjb7FLtxOmoS r9Sxtu+KQtN7+ILk5XtdWvcAX2Miyrcbd+T1I3vnBKGxrmw6ZJtRnmSPSM5aOlPffr qUrAAsmt11ihPwybzuvX4cZhMGdNT+bQVY2CoCifpaN5Qf2NB0ZpcQIAkJN/zovMRT xROwNBYa+phMFhhyCrEHotbkkv8fnG3Z9OxK2nPgSdEgML/SzRVM89ptF4DEZX/RNr wiAAs+dZgPMSg== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:33:58 +0200 Subject: [PATCH mptcp-net v4 05/20] mptcp: pm: ADD_ADDR rtx: free sk if last Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-5-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3617; i=matttbe@kernel.org; h=from:subject:message-id; bh=FRPidl+H9O8QOhm3CdDUKERP/ZpJ02lMg4zW9sxFL2Y=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOXmvP8N47tzH/qfLivbbuc78Ga1m8M+n5daPVxLrQ la2HE7d0VHKwiDGxSArpsgi3RaZP/N5FW+Jl58FzBxWJpAhDFycAjAR0wJGhmli/em6Odrz35l+ u56o6+sq0X+ml+9ZmP0aGYa4DmeVpQx/uGPcnact8H7l/j5s2tyS/8a/o3m2/F659l5koanQsak ZjAA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When an ADD_ADDR is retransmitted, the sk is held in sk_reset_timer(), and released at the end. If at that moment, it was the last reference being held, the sk would not be freed. sock_put() should then be called instead of __sock_put(). But that's not enough: if it is the last reference, sock_put() will call sk_free(), which will end up calling sk_stop_timer_sync() on the same timer, and waiting indefinitely to finish. So it is needed to mark that the timer is done, and no need to call sk_stop_timer_sync(). Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Signed-off-by: Matthieu Baerts (NGI0) --- v3: support calling sk_free() from the timer handler. Note: I'm not very happy with this patch, it looks too big. Did I miss a simpler way? v4: init timer_done after 'reset_timer' label to handle cases where the sysctl is changed in between. --- net/mptcp/pm.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index d3fcf441b208..e477f6a7a740 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -16,6 +16,7 @@ struct mptcp_pm_add_entry { struct list_head list; struct mptcp_addr_info addr; u8 retrans_times; + bool timer_done; struct timer_list add_timer; struct mptcp_sock *sock; struct rcu_head rcu; @@ -327,22 +328,22 @@ static void mptcp_pm_add_timer(struct timer_list *tim= er) add_timer); struct mptcp_sock *msk =3D entry->sock; struct sock *sk =3D (struct sock *)msk; - unsigned int timeout; + unsigned int timeout =3D 0; =20 pr_debug("msk=3D%p\n", msk); =20 - if (unlikely(inet_sk_state_load(sk) =3D=3D TCP_CLOSE)) - goto exit; - bh_lock_sock(sk); + if (unlikely(inet_sk_state_load(sk) =3D=3D TCP_CLOSE)) + goto out; + if (sock_owned_by_user(sk)) { /* Try again later. */ - sk_reset_timer(sk, timer, jiffies + HZ / 20); + timeout =3D HZ / 20; goto out; } =20 if (mptcp_pm_should_add_signal_addr(msk)) { - sk_reset_timer(sk, timer, jiffies + TCP_RTO_MAX / 8); + timeout =3D TCP_RTO_MAX / 8; goto out; } =20 @@ -360,8 +361,9 @@ static void mptcp_pm_add_timer(struct timer_list *timer) } =20 if (entry->retrans_times < ADD_ADDR_RETRANS_MAX) - sk_reset_timer(sk, timer, - jiffies + (timeout << entry->retrans_times)); + timeout <<=3D entry->retrans_times; + else + timeout =3D 0; =20 spin_unlock_bh(&msk->pm.lock); =20 @@ -369,9 +371,13 @@ static void mptcp_pm_add_timer(struct timer_list *time= r) mptcp_pm_subflow_established(msk); =20 out: + if (timeout) + sk_reset_timer(sk, timer, jiffies + timeout); + else + /* if sock_put calls sk_free: avoid waiting for this timer */ + entry->timer_done =3D true; bh_unlock_sock(sk); -exit: - __sock_put(sk); + sock_put(sk); } =20 struct mptcp_pm_add_entry * @@ -434,9 +440,12 @@ bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk, =20 timer_setup(&add_entry->add_timer, mptcp_pm_add_timer, 0); reset_timer: + add_entry->timer_done =3D false; timeout =3D mptcp_adjust_add_addr_timeout(msk); if (timeout) sk_reset_timer(sk, &add_entry->add_timer, jiffies + timeout); + else + add_entry->timer_done =3D true; =20 return true; } @@ -454,7 +463,8 @@ static void mptcp_pm_free_anno_list(struct mptcp_sock *= msk) spin_unlock_bh(&msk->pm.lock); =20 list_for_each_entry_safe(entry, tmp, &free_list, list) { - sk_stop_timer_sync(sk, &entry->add_timer); + if (!entry->timer_done) + sk_stop_timer_sync(sk, &entry->add_timer); kfree_rcu(entry, rcu); } } --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 A714E2C21C7 for ; Tue, 14 Apr 2026 13:34:16 +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=1776173656; cv=none; b=AsMDpzsTR5ary9mdZPZ0JXp5UH98MqlLW31qoPKkTEjCZUlVQ9g4OdYrXQgCpwQLK95zNvWs3k0QzjsCBRCM47Sq9grSaciEmnGnh7042DyCyyiPmIx761As3DK8M2/i4grNy8rDsDJzgPHbF0QK1BR2Hti/KK31gN0mbZTGbhg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173656; c=relaxed/simple; bh=L6POWmFKgcQjWjV+YPFwktx+/aPgcYJ8oOYMNleizKg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FU+jPws+5CC4r1jd0Mj0cmBIgZhwsTyiLWLB2u9h5CaroxXsXJDKCdT5WVDXUijk7QDakJYDE4eBNkD9UKIT4ruPr9mEw9tgeTKMDxOnavfeJA8St2Lmur20tjeQPxkLZbku3duh0mzJj4BEHCEZON/PErqGns4D3HpHRkdNnrc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=pY97o1Cc; 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="pY97o1Cc" Received: by smtp.kernel.org (Postfix) with ESMTPSA id F0A75C2BCB5; Tue, 14 Apr 2026 13:34:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173656; bh=L6POWmFKgcQjWjV+YPFwktx+/aPgcYJ8oOYMNleizKg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=pY97o1CcMynHv3roJivee+P+Dv/g8EoJQvQ1HPpMhSm3BWhhoAnQTrkzmpYrc74O7 bWjpjOir8Z4d0ZOhkkKgVOgT3sfi+SCudhIMB9lG+Sn4Y+tGeP5xNQHNxMM8CVnfDZ 27onRPcQVACG4qEGSvTZYU6KV13mvrYzjzm9hEK33ZJSyOfBu81XD8oI7Jo/j91uy3 VLvXEKR7uKuez8z6LLVj85gMVIeK8weEsSpN7NgByEhns0RrFu7dbuGAmuEO3miwQx 1S8KNwEtgO3dtZdoH/lj94JQ+JgyuDrx7H+2y6clvGrTW62HxMf817B/VnE9iFgVH3 AfjyE52ZgcgJw== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:33:59 +0200 Subject: [PATCH mptcp-net v4 06/20] mptcp: pm: ADD_ADDR rtx: resched blocked ADD_ADDR quicker Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-6-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1553; i=matttbe@kernel.org; h=from:subject:message-id; bh=L6POWmFKgcQjWjV+YPFwktx+/aPgcYJ8oOYMNleizKg=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOfmEf+SI8xTVnP5xMnPMaqMbnN8P528JS5gt3uK7P rG1a/qejlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgIlUtTIyfOL7xFSozy1d2pr/ 78yh+1Wct87MNDpuem/ZA5+5oXyCggz/VFd2VcTwy+5PPSO1xW3dYb5jJ34YGmqXuBnvkxDZ9ug WLwA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When an ADD_ADDR needs to be retransmitted and another one has already been prepared -- e.g. multiple ADD_ADDRs have been sent in a row and need to be retransmitted later -- this additional retransmission will need to wait. In this case, the timer was reset to TCP_RTO_MAX / 8, which is ~15 seconds. This delay is unnecessary long: it should just be rescheduled at the next opportunity, e.g. after the retransmission timeout. Without this modification, some issues can be seen from time to time in the selftests when multiple ADD_ADDRs are sent, and the host takes time to process them, e.g. the "signal addresses, ADD_ADDR timeout" MPTCP Join selftest, especially with a debug kernel config. Note that on older kernels, 'timeout' is not available. It should be enough to replace it by one second (HZ). Fixes: 00cfd77b9063 ("mptcp: retransmit ADD_ADDR when timeout") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index e477f6a7a740..4ea896c83b38 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -342,13 +342,8 @@ static void mptcp_pm_add_timer(struct timer_list *time= r) goto out; } =20 - if (mptcp_pm_should_add_signal_addr(msk)) { - timeout =3D TCP_RTO_MAX / 8; - goto out; - } - timeout =3D mptcp_adjust_add_addr_timeout(msk); - if (!timeout) + if (!timeout || mptcp_pm_should_add_signal_addr(msk)) goto out; =20 spin_lock_bh(&msk->pm.lock); --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 3FF68271A94 for ; Tue, 14 Apr 2026 13:34:17 +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=1776173657; cv=none; b=UyjUq29/OY7quhzKb49asMD8JnQHPZ7o3mxM0op00dGxjIRuv/96rMr8bae9vn4QQriOpwE2rXJ2m9QcKyqcnXSEZoGLqsauP9HJKwGOxvpUU5Zjt0yge8qHEh2IDZU5Df03hq91w5r2nj1uc1Q3N39RTZ8gUN9LMW9eLki7d3U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173657; c=relaxed/simple; bh=jXEpLOQ67t49RysWKZgvu3qP8jtz8NSTjoKZIw5ytXE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FgExLMF/+tPBY+gi7r9UZk+MUwfBjXYw8kpImHbt6EA6kLgzP8i44bJbjMdfWhWUjaE5wnMwdgwUENgPWuiWVMJIsBFHKgDI3hGrS8IxYEDzr7/+2Jhf2b8fz0r1YaQTuKc0s6fbkjxM743LNM8hCjto0Ot6XycMpEk0a91QLVY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ukAdYywD; 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="ukAdYywD" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B81D1C2BCB0; Tue, 14 Apr 2026 13:34:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173657; bh=jXEpLOQ67t49RysWKZgvu3qP8jtz8NSTjoKZIw5ytXE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ukAdYywDQnkZDhnrxiBAR5DNCbb9r6vzYp6EDwRuVh3iiYkX/CZ55KROVEZL7sHLk Qmya/OZKqUkSP0RfyvW7Rw/SLC7sAdrcmbgfSm0JFF3WUe0dyqOqIatE9hZaZnKa2g lD4Yvb8b7T7yGmzYKwKPUSW+zzeXj40m+whS/u6VdKpgP5AeVYK8oyoG5QM8pFPEoY nYKhFJH2savSOjbilbL5QEdn0l6tYHhToODw6uAba4FEKEOuc3Q2OUQL3MAyteumKj 9eTK3+J84/EDfA2pDAW5gtHCk6odjkgjuqY/VajynDEbNnibCY81WW1zpuywMAMAzI 4wE7Po+4PQ8Sw== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:34:00 +0200 Subject: [PATCH mptcp-net v4 07/20] mptcp: pm: ADD_ADDR rtx: skip inactive subflows Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-7-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1857; i=matttbe@kernel.org; h=from:subject:message-id; bh=jXEpLOQ67t49RysWKZgvu3qP8jtz8NSTjoKZIw5ytXE=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOfnUq9kcKO/TFWP56ujxp8TwSxBT7L/HVp3zNqtrn 7I5vPdWRykLgxgXg6yYIot0W2T+zOdVvCVefhYwc1iZQIYwcHEKwER0NzIyTA77dL6+h2eTR6uj 9sOmjoz+zZIbJ3TvfvRTTiFHdHfBNYZ/tu/Y5D4uniHHsMb0g/1tVpkVtlckH8jNzku3cvI92if PCgA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When looking at the maximum RTO amongst the subflows, inactive subflows were taken into account: that includes stale ones, and the initial one if it has been already been closed. Unusable subflows are now simply skipped. Stale ones are used as an alternative: if there are only stale ones, to take their maximum RTO and avoid to eventually fallback to net.mptcp.add_addr_timeout, which is set to 2 minutes by default. Fixes: 30549eebc4d8 ("mptcp: make ADD_ADDR retransmission timeout adaptive") Signed-off-by: Matthieu Baerts (NGI0) --- v2: restore accidentally deleted icsk->icsk_rto > max check --- net/mptcp/pm.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 4ea896c83b38..89a9790e50bb 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -306,20 +306,27 @@ static unsigned int mptcp_adjust_add_addr_timeout(str= uct mptcp_sock *msk) const struct net *net =3D sock_net((struct sock *)msk); unsigned int rto =3D mptcp_get_add_addr_timeout(net); struct mptcp_subflow_context *subflow; - unsigned int max =3D 0; + unsigned int max =3D 0, max_stale =3D 0; =20 mptcp_for_each_subflow(msk, subflow) { struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); struct inet_connection_sock *icsk =3D inet_csk(ssk); =20 - if (icsk->icsk_rto > max) + if (!__mptcp_subflow_active(subflow)) + continue; + + if (unlikely(subflow->stale)) { + if (icsk->icsk_rto > max_stale) + max_stale =3D icsk->icsk_rto; + } else if (icsk->icsk_rto > max) { max =3D icsk->icsk_rto; + } } =20 - if (max && max < rto) - rto =3D max; + if (max) + return max < rto ? max : rto; =20 - return rto; + return max_stale && max_stale < rto ? max_stale : rto; } =20 static void mptcp_pm_add_timer(struct timer_list *timer) --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 07CC9271A94 for ; Tue, 14 Apr 2026 13:34:18 +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=1776173658; cv=none; b=YPp52gwOjHyLzUHowS//Kqzfkt9aRxt7/3B3h0vCZSPC37GPQzgPiUszo2n5Mauynt51yRDF2Q4TW5n7Hg6nXu8mvp6OMY880GF2hIGGI+TgieKOz5E/RrrCCrA+f6rdEyk3K6aquJPUKH571nQftesJikJgX6qZYNlJWQCVE1Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173658; c=relaxed/simple; bh=hsYD0jMLJGmnh+est9GL0ngNzWUhY9f3/6jRBWsnSWM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=T/M5tUmv+Lg6SD4D1m1lBvhWlZDaNoszVoO5y4HNhbnv9yWsjjfoYy4WX8GQZokhHBbqJs7gcbzoASPi3L4t9lFA7k1GgwtvPPNNrijlvBmRY+5Pb6hTCzqiA7pRea360vJiY9iCwV3OlG3wnPWt9NnxRNyCpYQTqN259UyXwu8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=RbukaZe9; 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="RbukaZe9" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7F1CDC2BCB0; Tue, 14 Apr 2026 13:34:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173657; bh=hsYD0jMLJGmnh+est9GL0ngNzWUhY9f3/6jRBWsnSWM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=RbukaZe9kHqbGGOxeDesS5V+0tEgmEdkDrKofvGQfvhpSHhmpMuehOMrOPemLk/mA Z7oK1mVn99TXZ+8rEH7Rb1PrlL/YJkQxjRbXiqJkbiY0BLyHJjjTxWnJXsOaU96KYp ZuryW0+yO5VruwASIbV7l2jDowh+FGBwDmuOofvE69tvw8Jkzq5IptE7D9/DaIg+kk ttyIYEl/mMJGv8YFatr2ec+6od5fXrtwtoZNT/zIrc9ndQ6VUvHt/GsxLhKi05DHYs iJmS5QYwFppGyEYZyRUYqIcJvVIbXtVin2CsX2UmEo9SP3h3Uf+nP6rjZmFPQgcxlU R78hQnChQVoCA== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:34:01 +0200 Subject: [PATCH mptcp-net v4 08/20] mptcp: pm: retrans ADD_ADDR: return early if no retrans Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-8-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=747; i=matttbe@kernel.org; h=from:subject:message-id; bh=hsYD0jMLJGmnh+est9GL0ngNzWUhY9f3/6jRBWsnSWM=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOfnaX1Swe3gzeXr3ls2uHSppJZNOLPgUv/DLUputv junrzk0oaOUhUGMi0FWTJFFui0yf+bzKt4SLz8LmDmsTCBDGLg4BWAisdMYGX6sKIz+ecT7oPfb 6cc7WlbO7eT7xV+u32DKdnf70mVillWMDIskm5acu/WxXuZRqaD09G2zvA6GPpXhvtS3UuHGqxd ty1gA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 No need to iterate over all subflows if there is no retransmission needed. Exit early in this case then. Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 89a9790e50bb..f32015d4fb87 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -308,6 +308,9 @@ static unsigned int mptcp_adjust_add_addr_timeout(struc= t mptcp_sock *msk) struct mptcp_subflow_context *subflow; unsigned int max =3D 0, max_stale =3D 0; =20 + if (!rto) + return 0; + mptcp_for_each_subflow(msk, subflow) { struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); struct inet_connection_sock *icsk =3D inet_csk(ssk); --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 EF133146D5A for ; Tue, 14 Apr 2026 13:34:18 +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=1776173659; cv=none; b=UyTs/pyocJZcEqmxf02q/YMPs37p/8OGXjwzK/x1Nl1suG1yjtpvKzL/S/qYDT5ZVQCR6xfJ6Ua5ZJKhuE4N4ZjoPW3cKANb2YszejT7tGgyOZJvvMSO6A1G6uBD6y3EawYonuENpTzJNdHq5woJoIeTJAZ1ITBkp4JA7op+wqY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173659; c=relaxed/simple; bh=qJYr59Bc8P5gY4hTKhL7j3KTnZNz1z//RT7gpc1DOJ0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=k/jM+O81MY+xq9Uqw1cxPuFqoGye8oQkYH6/hFZc0is3tuWeDjqaes0CZc9LPGcuoP5kJpRsUIAE//+mvPGofIx6shzNeT4FRH5p4RBVcT3IV2C7h1epR/CszkI4dBMhg1haDDapgB2aXLX/nf/mDizjs9GSDtUT/rDkqr2fguI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KuIUMdpL; 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="KuIUMdpL" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 47C07C2BCB0; Tue, 14 Apr 2026 13:34:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173658; bh=qJYr59Bc8P5gY4hTKhL7j3KTnZNz1z//RT7gpc1DOJ0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=KuIUMdpLRaHr2Z0Dt0/STwzVJlLW/f4EPglVWeTLxFkEErrb6KAdm2BGHPD7xy44A xvFR8P4kKrmCsq6wXnnkjsVIq0BlLixxyPXOO1kVaqMwLW29TYUxL6IJehtCPQSP2u /9CIG5KS2+djAxXMQ54DBMAiuE9R8cUK4oZemHHTWdIqUcSzyNuTfP77g16g84KAoP oP1LDPJ4j+2WStqnQMsk3SaSz1FuXyGSqZRFmwbPtqvTn3D0ezfFKXW5gFrYSuN14a rh0FvTUEZHb9fBoIhd4CsnHi97X5BQLRpoag57q5dn6jrvMW4RgUwX0smyK3x7mAOn yPeqaveWVwyhA== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:34:02 +0200 Subject: [PATCH mptcp-net v4 09/20] mptcp: pm: prio: skip closed subflows Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-9-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1077; i=matttbe@kernel.org; h=from:subject:message-id; bh=qJYr59Bc8P5gY4hTKhL7j3KTnZNz1z//RT7gpc1DOJ0=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOfm2y6x8sGrfyYu/p7cyhM1+qnpmztonniZiWu87l Odls05q6ShlYRDjYpAVU2SRbovMn/m8irfEy88CZg4rE8gQBi5OAZhIqi3DP21f2/+f+7/vPDj5 9dFPzpYX8pOnJQkyVV2on1QvWJpU38fwT+vr3YKqgykVzROm87RfVZV5e6423mPx6wbPN5NzQ/W ecQIA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When sending an MP_PRIO, closed subflows needs to be skipped. This fixes the case where the initial subflow got closed, re-opened later, then an MP_PRIO is needed for the same local address. Note that explicit MP_PRIO cannot be sent during the 3WHS, so it is fine to use __mptcp_subflow_active(). Fixes: 067065422fcd ("mptcp: add the outgoing MP_PRIO support") Fixes: b29fcfb54cd7 ("mptcp: full disconnect implementation") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index f32015d4fb87..236a8087da29 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -284,6 +284,9 @@ int mptcp_pm_mp_prio_send_ack(struct mptcp_sock *msk, struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); struct mptcp_addr_info local, remote; =20 + if (!__mptcp_subflow_active(subflow)) + continue; + mptcp_local_address((struct sock_common *)ssk, &local); if (!mptcp_addresses_equal(&local, addr, addr->port)) continue; --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 89538146D5A for ; Tue, 14 Apr 2026 13:34:19 +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=1776173659; cv=none; b=EELdVWs86rp/XUjI5tYy+0Vdj4VFCZj3c54if21YwV2tvFEFQgsuAT47lR5dgIYjPRUVh09pasztfyviP6BdsfzhFpIxgmn43Y4vu8uj8TMsupl4O2DoOyfW+iN2OOXGGsOrxDWAszK64QGaBuPJCW37F/fL1lOSh7ZIEOBd6Ag= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173659; c=relaxed/simple; bh=JVv3n3lAs9f0iyEOxoQtxHVB4hfzJFBKq6/oFcsFMiw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NBKiIR5QiCHEUBEv7XWgi/CyqCBl60mfGUydQV1S8/8sgqs4E/33VzclfTQnd2CFMkdx83qC0F9p5DVQSOopXMN6JESouDhDWpidHFMNzoWBQEK/kd4NnDpDAScU9blGwoykIh98zoSLC+qdIPLJ6yioKF89HXmhyGPiX3Ktlds= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=R65N1tIi; 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="R65N1tIi" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0EF41C2BCB5; Tue, 14 Apr 2026 13:34:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173659; bh=JVv3n3lAs9f0iyEOxoQtxHVB4hfzJFBKq6/oFcsFMiw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=R65N1tIiplxZ8k7iMUriKilnHNVwMVdvRz2W2Bz8Rc4wtsXflQ9zaQGxRqtdSx6jO wR5t2gSxOiNJjXT2S58bo9tBzLo8orpzCWNyzjkWEg4UOIrEZ8EG0l6tGZzOk6j36/ wuRTyWfvW8JN3Z44rGQi0+Ye/q7zzBhrHalLjYsi+6wbiPsw8s1aMEnjyAMnnsCrLr K66o8lCqxSA1suXRe+pjAPqp2gVwbQ/zftZDZwbQedxVB4uDNRhK0BFhb9CnNO2/KT tL73WLrfqhh3NmEA4JMk5BcoicK1cLmnyF5eGoUKRrllFlnqz9JWpBmV97PRx4b9Re iPi61XyHcxl+Q== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:34:03 +0200 Subject: [PATCH mptcp-net v4 10/20] selftests: mptcp: check output: catch cmd errors Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-10-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3113; i=matttbe@kernel.org; h=from:subject:message-id; bh=JVv3n3lAs9f0iyEOxoQtxHVB4hfzJFBKq6/oFcsFMiw=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOflmuX2vtBKVXD1v/42z80ub2r5znfn8tcBzk+iMf dz/1y5v7ShlYRDjYpAVU2SRbovMn/m8irfEy88CZg4rE8gQBi5OAZiIxQaG/yFWhkve7Xyndon3 9fysWau0ebr/xZQ3p+bemq53QKIhMZDhf8a5wFdBanKnci99zc0r+Z5heY6PPX6t5gSd9JYzviJ F3AA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Using '${?}' inside the if-statement to check the returned value from the command that was evaluated as part of the if-statement is not correct: here, '${?}' will be linked to the previous instruction, not the one that is expected here (${cmd}). Instead, simply mark the error, except if an error is expected. If that's the case, 1 can be passed as the 4th argument of this helper. Two checks from pm_netlink.sh expect an error. Note that we could expect a specific returned value, but the checks currently expecting an error can be used with 'ip mptcp' or 'pm_nl_ctl', and these two tools don't return the same error code. Fixes: 2d0c1d27ea4e ("selftests: mptcp: add mptcp_lib_check_output helper") Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_lib.sh | 8 ++++---- tools/testing/selftests/net/mptcp/pm_netlink.sh | 8 +++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing= /selftests/net/mptcp/mptcp_lib.sh index 5fea7e7df628..9e0cd426845d 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh @@ -474,18 +474,18 @@ mptcp_lib_wait_local_port_listen() { wait_local_port_listen "${@}" "tcp" } =20 +# $1: error file, $2: cmd, $3: expected msg, [$4: expected error] mptcp_lib_check_output() { local err=3D"${1}" local cmd=3D"${2}" local expected=3D"${3}" + local exp_error=3D"${4:-0}" local cmd_ret=3D0 local out =20 - if ! out=3D$(${cmd} 2>"${err}"); then - cmd_ret=3D${?} - fi + out=3D$(${cmd} 2>"${err}") || cmd_ret=3D1 =20 - if [ ${cmd_ret} -ne 0 ]; then + if [ "${cmd_ret}" !=3D "${exp_error}" ]; then mptcp_lib_pr_fail "command execution '${cmd}' stderr" cat "${err}" return 2 diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testin= g/selftests/net/mptcp/pm_netlink.sh index 123d9d7a0278..26ff4c360a77 100755 --- a/tools/testing/selftests/net/mptcp/pm_netlink.sh +++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh @@ -122,10 +122,12 @@ check() local cmd=3D"$1" local expected=3D"$2" local msg=3D"$3" + local no_err=3D"$4" local rc=3D0 =20 mptcp_lib_print_title "$msg" - mptcp_lib_check_output "${err}" "${cmd}" "${expected}" || rc=3D${?} + mptcp_lib_check_output "${err}" "${cmd}" "${expected}" "${no_err}" || + rc=3D${?} if [ ${rc} -eq 2 ]; then mptcp_lib_result_fail "${msg} # error ${rc}" ret=3D${KSFT_FAIL} @@ -158,13 +160,13 @@ check "show_endpoints" \ "3,10.0.1.3,signal backup")" "dump addrs" =20 del_endpoint 2 -check "get_endpoint 2" "" "simple del addr" +check "get_endpoint 2" "" "simple del addr" 1 check "show_endpoints" \ "$(format_endpoints "1,10.0.1.1" \ "3,10.0.1.3,signal backup")" "dump addrs after del" =20 add_endpoint 10.0.1.3 2>/dev/null -check "get_endpoint 4" "" "duplicate addr" +check "get_endpoint 4" "" "duplicate addr" 1 =20 add_endpoint 10.0.1.4 flags signal check "get_endpoint 4" "$(format_endpoints "4,10.0.1.4,signal")" "id addr = increment" --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 532432D0C98 for ; Tue, 14 Apr 2026 13:34:20 +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=1776173660; cv=none; b=L3X1GxioKG11YNcvnt6lC8LdPefj97y3X9NWg1c2FTNRCbT/LKh04JHtk3jsQtEuhYUAZQm67jOgDxwINyCeuPrj83myKDWq3En9/oRrQUG4TLODwN8eT0Mp6E+QxkI1zE7jPVhtVYQ944jdnClGI7yi7P1Ieh8sDXhdTBuK9dw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173660; c=relaxed/simple; bh=xMzQEjABCnRo26AFJgkK2crYNoG1BurehXmPvedR64o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IyJTaNn0aOysHNk5gpIx9C/JWyefPZJi7cXgG6SWW+wO2BROo0CqPiX8KFyRRAPhlWMEL8QBS1r6tfdwv7B7fZ7D3hJuYi9k4ZA/L271+jtVrjfsR6tT2t5ROW2XQ5ibeB71u69q/QmbgxAxgmXYUjr1uKUy2hCEzoBUeReSkkM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=g5Bolid2; 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="g5Bolid2" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CAC93C2BCB6; Tue, 14 Apr 2026 13:34:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173660; bh=xMzQEjABCnRo26AFJgkK2crYNoG1BurehXmPvedR64o=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=g5Bolid2Y0ijclAtcT3jrpdc8THumhyPc97od47U4jlcMi8c5esVLtEjBcpNEoWMw YpBxFxQZvJq9WMJI4nivMrYKl5K+f0NsIiZUsqPjN1aDcPF83lmxdaOhHUmz8vDrs9 l5LZhiY9KEoCguGqmpHJSgXHIi4qMMljrCsbhBQIADDh0IsGwRRDc5WkOIi/UfmOUX EkwtYgtRETwT7UkvtQhVlJ7nClcMH7fA8wpbQdYPbCaPS7iV1idKaFu4DWBdHpkJvV o9tM2nM2271x5AjOmDJV8Wd5rS6ilK/jnpA86WS9wixrs0hOyWavg0tftpWVoyT+VS NZDoorS0s/5Bg== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:34:04 +0200 Subject: [PATCH mptcp-net v4 11/20] selftests: mptcp: pm: restrict 'unknown' check to pm_nl_ctl Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-11-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1497; i=matttbe@kernel.org; h=from:subject:message-id; bh=xMzQEjABCnRo26AFJgkK2crYNoG1BurehXmPvedR64o=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOfmV7mExXujxVHpG+ONdW/bqNOiZmTx4d2+Nw+rev R5vp5UydpSyMIhxMciKKbJIt0Xmz3xexVvi5WcBM4eVCWQIAxenAEzESp/hn2npvjXqxYILfrWt 6rD0uaNtK//Fs6mq+P/im1scct6WJzD807/HN3FxUIKI88T4LTnrRf/13Fy871zOAw3T7BmMrg/ fcAEA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When pm_netlink.sh is executed with '-i', 'ip mptcp' is used instead of 'pm_nl_ctl'. IPRoute2 doesn't support the 'unknown' flag, which has only been added to 'pm_nl_ctl' for this specific check: to ensure that the kernel ignores such unsupported flag. No reason to add this flag to 'ip mptcp'. Then, this check should be skipped when 'ip mptcp' is used. Fixes: 29f4801e9c8d ("selftests: mptcp: pm: ensure unknown flags are ignore= d") Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/pm_netlink.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testin= g/selftests/net/mptcp/pm_netlink.sh index 26ff4c360a77..cb1d3cfc1104 100755 --- a/tools/testing/selftests/net/mptcp/pm_netlink.sh +++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh @@ -194,9 +194,13 @@ check "show_endpoints" \ flush_endpoint check "show_endpoints" "" "flush addrs" =20 -add_endpoint 10.0.1.1 flags unknown -check "show_endpoints" "$(format_endpoints "1,10.0.1.1")" "ignore unknown = flags" -flush_endpoint +# "unknown" flag is only supported by pm_nl_ctl +if ! mptcp_lib_is_ip_mptcp; then + add_endpoint 10.0.1.1 flags unknown + check "show_endpoints" "$(format_endpoints "1,10.0.1.1")" \ + "ignore unknown flags" + flush_endpoint +fi =20 set_limits 9 1 2>/dev/null check "get_limits" "${default_limits}" "rcv addrs above hard limit" --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 4007A361658 for ; Tue, 14 Apr 2026 13:34:21 +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=1776173661; cv=none; b=dRjM4CnFpx28/mBvPeXqxh9hdS/k0mcH7tPaR3C+UJDZ4mz9h6jCquaMYV3/XQu12MHm9IBhDGYw6hAOzKacsRFrwDLyQFDeQTp5TKm/tnPPaq54CRl/yjRdPxpcJeJV8USUOvw3u3sfz7Mradt/tAhisaLM6kjP82wmm2WyaYM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173661; c=relaxed/simple; bh=JfovlaL/U2Cz15YP5/ltVy2OQ6r/tYSTUof7MUBhiNc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kNKwqmj+boyn8xZGugqNChkg76Rr7BS03+A7DsG0KAoGKIh64w4y8C1UeTx2E+2tWx9/lzfGbv8nlzcxd3HbHXI6h1SaERcJT8Am/2fLGQjA025IKy5eie9R1jQeOD4oUPnbKtrwHFPyduLLxTWbVvFy65b7BEeDq5lIEDXu1fQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZMAZZkVQ; 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="ZMAZZkVQ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 925D8C2BCB0; Tue, 14 Apr 2026 13:34:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173661; bh=JfovlaL/U2Cz15YP5/ltVy2OQ6r/tYSTUof7MUBhiNc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ZMAZZkVQlFh8FjSp1GRowekB59YAMEJ7DFDflHrgt7HSYxGxwW1R3oUMBwLffCckz GKo7JlIWpBHXKt4uPv2qr2vonXWyTtRxuiki1i4oZut6bf8JyGVV9BbLE1Crzg0l0R 9v58HkKu/ZyccwjllWWptZqjuSRtDW/T7M27ASdQXLJ3aDe9kz6j3aBZKJOxtOHYAJ fAW4sLdpjEGPz/ydnyEsq0GoxJ/mi/3Xat3is3DbiPmcGFytDUxJozkxi/xNwxll15 pn0U078Tv7BzjeaaTpGKm/IMVRtfQy8DpPFZ6SNr87ZtLl8gNPzZXmWFEeQtLq62ZS yG3BKEfCOBaWw== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:34:05 +0200 Subject: [PATCH mptcp-net v4 12/20] mptcp: pm: in-kernel: explicitly limit batches to array size Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-12-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5699; i=matttbe@kernel.org; h=from:subject:message-id; bh=JfovlaL/U2Cz15YP5/ltVy2OQ6r/tYSTUof7MUBhiNc=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOfnphl7Smn40hHOlvaPp1c57U84027h4lrFf+Hpq4 8eeg/+LOkpZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACaybBcjQ8OCBwpNLaynfr85 +PmJKH/lxoDZ2p+rI5805R3t+HSY6wXDP50CDj3NUKscJlYxvuMb77e032VMOX8+XMnipX/vtZZ 5nAA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The in-kernel PM can create subflows in reply to ADD_ADDR by batch of maximum 8 subflows for the moment. Same when adding new "subflow" endpoints with the fullmesh flag. This limit is linked to the arrays used during these steps. There was no explicit limit to the arrays size (8), because the limit of extra subflows is the same (8). It seems safer to use an explicit limit, but also these two sizes are going to be different in the next commit. Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index 906a1d5ab9ed..a678b1c33f56 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -201,7 +201,8 @@ fill_remote_addr(struct mptcp_sock *msk, struct mptcp_a= ddr_info *local, static unsigned int fill_remote_addresses_fullmesh(struct mptcp_sock *msk, struct mptcp_addr_info *local, - struct mptcp_addr_info *addrs) + struct mptcp_addr_info *addrs, + int addrs_size) { u8 limit_extra_subflows =3D mptcp_pm_get_limit_extra_subflows(msk); bool deny_id0 =3D READ_ONCE(msk->pm.remote_deny_join_id0); @@ -236,7 +237,8 @@ fill_remote_addresses_fullmesh(struct mptcp_sock *msk, msk->pm.extra_subflows++; i++; =20 - if (msk->pm.extra_subflows >=3D limit_extra_subflows) + if (msk->pm.extra_subflows >=3D limit_extra_subflows || + i =3D=3D addrs_size) break; } =20 @@ -248,7 +250,8 @@ fill_remote_addresses_fullmesh(struct mptcp_sock *msk, */ static unsigned int fill_remote_addresses_vec(struct mptcp_sock *msk, struct mptcp_addr_info *= local, - bool fullmesh, struct mptcp_addr_info *addrs) + bool fullmesh, struct mptcp_addr_info *addrs, + int addrs_size) { /* Non-fullmesh: fill in the single entry corresponding to the primary * MPC subflow remote address, and return 1, corresponding to 1 entry. @@ -257,7 +260,7 @@ fill_remote_addresses_vec(struct mptcp_sock *msk, struc= t mptcp_addr_info *local, return fill_remote_addr(msk, local, addrs); =20 /* Fullmesh endpoint: fill all possible remote addresses */ - return fill_remote_addresses_fullmesh(msk, local, addrs); + return fill_remote_addresses_fullmesh(msk, local, addrs, addrs_size); } =20 static struct mptcp_pm_addr_entry * @@ -410,7 +413,8 @@ static void mptcp_pm_create_subflow_or_signal_addr(stru= ct mptcp_sock *msk) else /* local_addr_used is not decr for ID 0 */ msk->pm.local_addr_used++; =20 - nr =3D fill_remote_addresses_vec(msk, &local.addr, fullmesh, addrs); + nr =3D fill_remote_addresses_vec(msk, &local.addr, fullmesh, + addrs, ARRAY_SIZE(addrs)); if (nr =3D=3D 0) continue; =20 @@ -447,6 +451,7 @@ static unsigned int fill_local_addresses_vec_fullmesh(struct mptcp_sock *msk, struct mptcp_addr_info *remote, struct mptcp_pm_local *locals, + int locals_size, bool c_flag_case) { u8 limit_extra_subflows =3D mptcp_pm_get_limit_extra_subflows(msk); @@ -488,7 +493,8 @@ fill_local_addresses_vec_fullmesh(struct mptcp_sock *ms= k, msk->pm.extra_subflows++; i++; =20 - if (msk->pm.extra_subflows >=3D limit_extra_subflows) + if (msk->pm.extra_subflows >=3D limit_extra_subflows || + i =3D=3D locals_size) break; } rcu_read_unlock(); @@ -559,7 +565,8 @@ fill_local_laminar_endp(struct mptcp_sock *msk, struct = mptcp_addr_info *remote, static unsigned int fill_local_addresses_vec_c_flag(struct mptcp_sock *msk, struct mptcp_addr_info *remote, - struct mptcp_pm_local *locals) + struct mptcp_pm_local *locals, + int locals_size) { u8 limit_extra_subflows =3D mptcp_pm_get_limit_extra_subflows(msk); struct pm_nl_pernet *pernet =3D pm_nl_get_pernet_from_msk(msk); @@ -586,7 +593,8 @@ fill_local_addresses_vec_c_flag(struct mptcp_sock *msk, msk->pm.extra_subflows++; i++; =20 - if (msk->pm.extra_subflows >=3D limit_extra_subflows) + if (msk->pm.extra_subflows >=3D limit_extra_subflows || + i =3D=3D locals_size) break; } =20 @@ -620,13 +628,14 @@ fill_local_address_any(struct mptcp_sock *msk, struct= mptcp_addr_info *remote, */ static unsigned int fill_local_addresses_vec(struct mptcp_sock *msk, struct mptcp_addr_info *r= emote, - struct mptcp_pm_local *locals) + struct mptcp_pm_local *locals, int locals_size) { bool c_flag_case =3D remote->id && mptcp_pm_add_addr_c_flag_case(msk); =20 /* If there is at least one MPTCP endpoint with a fullmesh flag */ if (mptcp_pm_get_endp_fullmesh_max(msk)) return fill_local_addresses_vec_fullmesh(msk, remote, locals, + locals_size, c_flag_case); =20 /* If there is at least one MPTCP endpoint with a laminar flag */ @@ -637,7 +646,8 @@ fill_local_addresses_vec(struct mptcp_sock *msk, struct= mptcp_addr_info *remote, * limits are used -- accepting no ADD_ADDR -- and use subflow endpoints */ if (c_flag_case) - return fill_local_addresses_vec_c_flag(msk, remote, locals); + return fill_local_addresses_vec_c_flag(msk, remote, locals, + locals_size); =20 /* No special case: fill in the single 'IPADDRANY' local address */ return fill_local_address_any(msk, remote, &locals[0]); @@ -672,7 +682,7 @@ static void mptcp_pm_nl_add_addr_received(struct mptcp_= sock *msk) /* connect to the specified remote address, using whatever * local address the routing configuration will pick. */ - nr =3D fill_local_addresses_vec(msk, &remote, locals); + nr =3D fill_local_addresses_vec(msk, &remote, locals, ARRAY_SIZE(locals)); if (nr =3D=3D 0) return; =20 --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 D4B983939C2 for ; Tue, 14 Apr 2026 13:34:21 +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=1776173661; cv=none; b=aNjhvuUnsBJo7Zr/KaD/dnl8/AuU1vLY0U04EoEIVDcyY4JdLOzaAZE97qsenOvnOd+pGT4WFSyRt9S6g2IaFwGWe/Xr/pWYEezyNlr8aMdT65KKQAEkXcjCJzlJaqozFQiaBxOY5vhda2T2PzHfy2HKlxWtzZVh1H23dxieZu0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173661; c=relaxed/simple; bh=geg3i+AZ83UdjmswHRjfvGyLJA3VdBH2mrx+q6p2fj4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=f0hDRFv0Bc49O712jWzTRzTXcGTRZd6tchlFi1KFt9Uc95r7vImZNKPNfyXG9rWb5b1di5M4d0XuGLMKtYbMnWye+KDO3LKxcZ56akvqC4j9su30qOHPBhwKN/budg2sUwtr2mattw046qDaMiGRK8o7f9VKlDMEEXfkgIGiVSo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LqVAZjx+; 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="LqVAZjx+" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 59D07C2BCB7; Tue, 14 Apr 2026 13:34:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173661; bh=geg3i+AZ83UdjmswHRjfvGyLJA3VdBH2mrx+q6p2fj4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=LqVAZjx+P4/MaqvCBiK9YQp9QHvWxzBlrHg5ExnAJrtDQke6oopyQD17X6TJRcp5a IVPqIrJ2HBOqi7M3ZWL8VAyCfe+aFXvwZ4f2w3rGpDfGlN8eRvuoq9n+glj5lJFgir VKOCyaeGMoH10HyzoISWQvdwjPDJZLwtXmZxFX1b0utMAiPUypv2AEjdJLJBXQDp9G vt7idcLuDMcAYgRWVk0Bz4lpbBNiiHyJFtj5QC5a+Tcb1SIvif0MJWyZAhkysPCqKO hp3rgh4t5mmqSUi/Mb5mQrYDQcN/lVV6k+jEQ668/abKfEFJk+BXU2na9gLOYfOw/H PvkiuxAnEPljA== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:34:06 +0200 Subject: [PATCH mptcp-net v4 13/20] mptcp: pm: in-kernel: increase all limits to 64 Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-13-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2212; i=matttbe@kernel.org; h=from:subject:message-id; bh=geg3i+AZ83UdjmswHRjfvGyLJA3VdBH2mrx+q6p2fj4=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOflLtGfWl20VX3b55l+h1wWnbfNW9JxPMl3D8MbB6 5rp+0f7O0pZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACbiycTI8JiZ44l6G89ay9Bz fWXieQ9vXvm35sd1zzbWE9ylfCu7wxgZHoivXvNALspwnvzr266RwteOXA46dXxWiyVLn/zDGOX lbAA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 This means switching the maximum from 8 to 64 for the number of subflows and accepted ADD_ADDR. The previous limit of 8 subflows makes sense in most cases. Using more subflows will very likely *not* improve the situation, and could even decrease the performances. But there are no technical limitations nor performance impact to raise this limit, so let's do it: this will allow people with very specific use-cases, and researchers to easily create more subflows, and measure the performance impact by themselves. The theoretical limit is 255 -- the ID is written in a u8 on the wire -- but 64 is more than enough. With so many subflows, it will be costly to iterate over all of them when operations are done in bottom half. Note that the in-kernel PM will continue to create subflows in reply to ADD_ADDR with a single batch of maximum 8 subflows. Same when adding new "subflow" endpoints with the fullmesh flag. Increasing those batch limits would have a memory impact, and it looks fine not to cover these cases with larger batches for the moment. If more is needed later, the position of the last subflow from the list could be remembered, and the list iteration could continue later. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/434 Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index a678b1c33f56..f163d40e7375 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -30,6 +30,7 @@ struct pm_nl_pernet { }; =20 #define MPTCP_PM_ADDR_MAX 8 +#define MPTCP_PM_SUBFLOWS_MAX 64 =20 static struct pm_nl_pernet *pm_nl_get_pernet(const struct net *net) { @@ -1381,10 +1382,10 @@ static int parse_limit(struct genl_info *info, int = id, unsigned int *limit) return 0; =20 *limit =3D nla_get_u32(attr); - if (*limit > MPTCP_PM_ADDR_MAX) { + if (*limit > MPTCP_PM_SUBFLOWS_MAX) { NL_SET_ERR_MSG_ATTR_FMT(info->extack, attr, "limit greater than maximum (%u)", - MPTCP_PM_ADDR_MAX); + MPTCP_PM_SUBFLOWS_MAX); return -EINVAL; } return 0; --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 9CC952F83B5 for ; Tue, 14 Apr 2026 13:34:22 +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=1776173662; cv=none; b=UH5ZMJNQQoOTDszuk3PNA8deLE3Xgp3lN9DigutIp/Q0guY8NvOxbbIHv3nOnxyUi9yqfzwe0J/h2uPp4tsnchcwETqKLcQk0Z4RkHEHUqi3Kx+QjRzP3shFAPq8rXB5pJKV6DDdnSCe2nQ/C7eAuL59HAe+Qoyesgwek+nDnOE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173662; c=relaxed/simple; bh=V+qTh1H+zvXazMYLs/1iysESXTfvfHvnFRBnUfIXOtY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DvtSxm5vlM1i7P6On8HyAaD1A6E59dc7lD1+uOr9XdO/qQJT5r6k0HDsDMUUU+ZRXLFwdT/DMvib6+WRyiF9l5CUQNMQZ3g/nuJk7xuFdh16mzow0e9f074cGJBHgtQ681HuwhOrn4oUAupwgCOgMr2BAdTNu/rS7e29lAwM09Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=TwEl073N; 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="TwEl073N" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 216DFC2BCB0; Tue, 14 Apr 2026 13:34:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173662; bh=V+qTh1H+zvXazMYLs/1iysESXTfvfHvnFRBnUfIXOtY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=TwEl073NGejPAPpYZQkbuHLMRozd0vVF8fC5wBr8VmwrCcjeV3t60w5eSdqQ1MP1j vnsK4TQ8RnVx9lXm6CNSW6dUWi/eA2KDK+oOiQz5JcTTEZrce9lfDLZ8oJ5m74qjfM DduWmhxpzWdYnKR0IPSgiOviow3ivvA+5SYocZf8S8i4M5MukctzscIl4S9PVfXIrO Y3dEM9GSjoQpZTuehyKRAhpjt2XWnCda9MRrnYMYLfqxKvoMkFgfnIfj5JCYjQzroq 10JuZ8BhiA3IACu7+7Da9O9bUl1/NZ6FE8OWyEpfbl2rO2/otC8wq8zp6HERwdgQxT cL6DUKPRtns7g== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:34:07 +0200 Subject: [PATCH mptcp-net v4 14/20] mptcp: pm: kernel: allow flushing more than 8 endpoints Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-14-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3202; i=matttbe@kernel.org; h=from:subject:message-id; bh=V+qTh1H+zvXazMYLs/1iysESXTfvfHvnFRBnUfIXOtY=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOfn/n1rB+PzSxHz986FCZ6f9fGDUNc3/y34lg47Gr 2Wn5kUkdZSyMIhxMciKKbJIt0Xmz3xexVvi5WcBM4eVCWQIAxenAEwkeQXDP5XkJkUT35bnTlZh Ap8r7+2ce+km6+LHdyc4lTJ1snG3mTP8r5jz4nQU89J1WgIz+I/VZ8+0v6Yr6L57RqGpuei6fPd 6BgA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The mptcp_rm_list structure contains an array of IDs of 8 entries: to be able to send a RM_ADDR with 8 IDs. This limitation was OK so far because there could maximum 8 endpoints. But this is going to change in the next commit. To cope with that, if one of the arrays is full, the iteration stops, the lists are processed, then the iteration continues where it previously stopped. Note that if there are many endpoints to remove, and multiple RM_ADDR to send, it might be more likely that some of these RM_ADDRs are dropped or lost. This is a known limitation: RM_ADDR are not retransmitted in MPTCPv1. Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index f163d40e7375..1480bb7473b4 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -1224,19 +1224,30 @@ int mptcp_pm_nl_del_addr_doit(struct sk_buff *skb, = struct genl_info *info) } =20 static void mptcp_pm_flush_addrs_and_subflows(struct mptcp_sock *msk, - struct list_head *rm_list) + struct list_head *rm_list, + struct mptcp_pm_addr_entry *entry) { - struct mptcp_rm_list alist =3D { .nr =3D 0 }, slist =3D { .nr =3D 0 }; - struct mptcp_pm_addr_entry *entry; + struct mptcp_rm_list alist, slist; + bool more; =20 - list_for_each_entry(entry, rm_list, list) { - if (slist.nr < MPTCP_RM_IDS_MAX && - mptcp_lookup_subflow_by_saddr(&msk->conn_list, &entry->addr)) +again: + alist.nr =3D 0; + slist.nr =3D 0; + more =3D false; + + entry =3D list_prepare_entry(entry, rm_list, list); + list_for_each_entry_continue(entry, rm_list, list) { + if (mptcp_lookup_subflow_by_saddr(&msk->conn_list, &entry->addr)) slist.ids[slist.nr++] =3D mptcp_endp_get_local_id(msk, &entry->addr); =20 - if (alist.nr < MPTCP_RM_IDS_MAX && - mptcp_remove_anno_list_by_saddr(msk, &entry->addr)) + if (mptcp_remove_anno_list_by_saddr(msk, &entry->addr)) alist.ids[alist.nr++] =3D mptcp_endp_get_local_id(msk, &entry->addr); + + if (slist.nr =3D=3D MPTCP_RM_IDS_MAX || + alist.nr =3D=3D MPTCP_RM_IDS_MAX) { + more =3D !list_is_last(&entry->list, rm_list); + break; + } } =20 spin_lock_bh(&msk->pm.lock); @@ -1247,9 +1258,14 @@ static void mptcp_pm_flush_addrs_and_subflows(struct= mptcp_sock *msk, if (slist.nr) mptcp_pm_rm_subflow(msk, &slist); /* Reset counters: maybe some subflows have been removed before */ - bitmap_fill(msk->pm.id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); - msk->pm.local_addr_used =3D 0; + if (!more) { + bitmap_fill(msk->pm.id_avail_bitmap, MPTCP_PM_MAX_ADDR_ID + 1); + msk->pm.local_addr_used =3D 0; + } spin_unlock_bh(&msk->pm.lock); + + if (more) + goto again; } =20 static void mptcp_nl_flush_addrs_list(struct net *net, @@ -1266,7 +1282,7 @@ static void mptcp_nl_flush_addrs_list(struct net *net, =20 if (!mptcp_pm_is_userspace(msk)) { lock_sock(sk); - mptcp_pm_flush_addrs_and_subflows(msk, rm_list); + mptcp_pm_flush_addrs_and_subflows(msk, rm_list, NULL); release_sock(sk); } =20 --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 63F532F83B5 for ; Tue, 14 Apr 2026 13:34:23 +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=1776173663; cv=none; b=CY0cLlUvoZ9e5GW5fAUCqJoqlOl+7zot/j3iIPlLtOMGkVSDXenSPHVo/UXVaqS5rnQFSRIj3RZrOSpBvqyZ7SqHZjAQgSD8ptX7wz+NWabrZZOZP+hVWfu1IO8dLQdfi1zoAILBiGDYJ6Pk1vxzVVNSX1VjZYoGbnXZtEJaw9A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173663; c=relaxed/simple; bh=FzoQpH+/1rJAZNWER5wf3XVojQhw8DWII+Nl045Pjg4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=as81kIFWT6GDSdItVpnuP8pids9rXkfO8L2/ITw+kiJrb0DZXtril7PssHjl7YbVag+KROm9BN6zhPM9hm692UL9ve67k7Jru93OtpgmmesDISytm/mo6YhMJDDYDTnCgvOYdBFcfO2TpTivQmknT/xDv/vympyd7r8CFmAP1I8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iKdqFACp; 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="iKdqFACp" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DCDA9C19425; Tue, 14 Apr 2026 13:34:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173663; bh=FzoQpH+/1rJAZNWER5wf3XVojQhw8DWII+Nl045Pjg4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=iKdqFACpx3H8LriNxFEc3jJeCYYOsStURh00e4zewUO5v8c3o5jN0FXPwjqIs/tLm qqW+x+T1hOI6Ssk7xL/wvHjEJOE8vgpg2E3/z9cnY9FQfUruFFvFV/hQClW4Lye23q KZNqLpxJH5EAK0FLCp8sfu0gijRFctQv0WVcIMUK1XurOgbnPLu2gV7PzQlz2udlUH TVXUWSKDO4xUnCFl1+vScrfb9/jlHJ9s7e+KSfWwp+SRvJvpfK2H5C9a0Jheuj+/93 9Qa6EcfLMfn29MOMGIdxVCXSY3ueJ6MMqDgY01EiBzJbiGHn568n9o6WtH2ZGiKjjA iLnTlERaO7OkA== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:34:08 +0200 Subject: [PATCH mptcp-net v4 15/20] mptcp: pm: in-kernel: increase endpoints limit Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-15-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1182; i=matttbe@kernel.org; h=from:subject:message-id; bh=FzoQpH+/1rJAZNWER5wf3XVojQhw8DWII+Nl045Pjg4=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOQVYBl986FvBYVlftoVRI/7Szykxj85NSpteInOyy EZhz4vLHaUsDGJcDLJiiizSbZH5M59X8ZZ4+VnAzGFlAhnCwMUpABM5IsjIsHVT0o57rTolxXyX ffz0PMOzudw+5ffGabjtnCoWVqEsxMiwyjOFX/6A4zbv7NlWrxLYm7YEmLRuNlQR3aDws6HX8S8 DAA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The endpoints are managed in a list which was limited to 8 entries. This limit can be too small in some cases: by having the same limit as the number of subflows, it might not allow creating all expected subflows when having a mix of v4 and v6 addresses that can all use MPTCP on v4/v6 only networks. While increasing the limit above the new subflows one, why not using the technical limit: 254. Indeed, the endpoint will each have an ID that will be used on the wire, limited to u8, and the ID 0 is reserved to the initial subflow. Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_kernel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index 1480bb7473b4..c75a2c29bcf2 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -746,7 +746,7 @@ static int mptcp_pm_nl_append_new_local_addr(struct pm_= nl_pernet *pernet, */ if (pernet->next_id =3D=3D MPTCP_PM_MAX_ADDR_ID) pernet->next_id =3D 1; - if (pernet->endpoints >=3D MPTCP_PM_ADDR_MAX) { + if (pernet->endpoints =3D=3D MPTCP_PM_MAX_ADDR_ID) { ret =3D -ERANGE; goto out; } --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 2B3FE2D0C98 for ; Tue, 14 Apr 2026 13:34:24 +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=1776173664; cv=none; b=j00EtazfjqTeoXI/0W7E23Q7c0pN8FY4Igdt6ardDzuF3w2wujaFiyjjPHrWxDAnm4hDuZLdukMkHEqTMQfSHWnby+e7cBDBK6vzP03SU8WehEjpFWEBMfq5dWdtah7TAgTvCEx9WwUAFSlx2oZbF8HxVvz/yaltiBVPB3Z+btg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173664; c=relaxed/simple; bh=WPXlOnsY4b8ca/bPVxQbeZN3bFUC8KRS1pNiKQk+mGY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PU5TQBHG4hnRZouu49KkWag7cPp/uSsUHruh/lqtNLIv3zKrOUFvPiSaHpLZXMGDZTJ/+HdRCBHBA88cQvBxS4SOdHiOjSDY0m/UDmqV2tOdQA31plxP88APULkImFeaI+VoJ4T2QG0z4bNxf63iCglBIm07XUKCgOBzrNW2DHU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=pcYV5FGO; 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="pcYV5FGO" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A480AC19425; Tue, 14 Apr 2026 13:34:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173664; bh=WPXlOnsY4b8ca/bPVxQbeZN3bFUC8KRS1pNiKQk+mGY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=pcYV5FGOprAmCIESN71X7GKQm318+K5NXUaEP7hzVmeTfKODPt29NRrrJIc+QdCI2 f1gvjw+ss+i2qEF71ZbKxA+6Nck5AOX0gAZi1uCjDfkURYSi3ZyNbsYGzMT6loMmVv tZz+OCgcyeZldRWpE9Csqcb9tfoOmS24vzSILK37N+zmeT1Bzz7Gi10ccHHLZhyqjR MvPZ9LxVsjrSROfLj1sOvafASBh2s8AgDTY2lEf/DjCahQ5zeFLctHs02d1M2WfCuo QqtQDz0upCMORwdGmc4FaAKXQOfI4A9urjfN07lSlvDi9aa5R4L8VGNk5ePrGTRQva tzSh63HEH5AZA== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:34:09 +0200 Subject: [PATCH mptcp-net v4 16/20] selftests: mptcp: join: allow changing ifaces nr per test Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-16-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1924; i=matttbe@kernel.org; h=from:subject:message-id; bh=WPXlOnsY4b8ca/bPVxQbeZN3bFUC8KRS1pNiKQk+mGY=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOQXc+RcjavFq0fR7M4x4Qtcs3KcrMetXcuLNW9Fqw XYlLXvud5SyMIhxMciKKbJIt0Xmz3xexVvi5WcBM4eVCWQIAxenAEykXpqR4eCX1FWmdlerJErL zqcEH9+7/cDS64zcM7yXXNC4d6nR5hkjw4zA54uYaq5s6jgUubbqa/G9zt2zn/PV7Mtu2nu1hnV HOhsA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 By default, 4 network interfaces are created per subtest in a dedicated net namespace. Each netns has a dedicated pair of v4 and v6 addresses. Future tests will need more. Simply always creating more network interfaces per test will increase the execution time for all other tests, for no other benefits. So now it is possible to change this number only when needed, by setting ifaces_nr when calling 'reset' and 'init_shapers', e.g. ifaces_nr=3D8 reset "Subtest title" ifaces_nr=3D8 init_shapers Note that it might also be interesting to decrease the default value to 2 to reduce the setup time, especially when a debug kernel config is being used. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index beec41f6662a..28da9df797ae 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -63,6 +63,7 @@ unset fastclose unset fullmesh unset speed unset bind_addr +unset ifaces_nr unset join_syn_rej unset join_csum_ns1 unset join_csum_ns2 @@ -146,7 +147,7 @@ init_partial() # ns1eth4 ns2eth4 =20 local i - for i in $(seq 1 4); do + for i in $(seq 1 "${ifaces_nr:-4}"); do ip link add ns1eth$i netns "$ns1" type veth peer name ns2eth$i netns "$n= s2" ip -net "$ns1" addr add 10.0.$i.1/24 dev ns1eth$i ip -net "$ns1" addr add dead:beef:$i::1/64 dev ns1eth$i nodad @@ -165,7 +166,7 @@ init_partial() init_shapers() { local i - for i in $(seq 1 4); do + for i in $(seq 1 "${ifaces_nr:-4}"); do tc -n $ns1 qdisc add dev ns1eth$i root netem rate 20mbit delay 1ms tc -n $ns2 qdisc add dev ns2eth$i root netem rate 20mbit delay 1ms done --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 E719A271A94 for ; Tue, 14 Apr 2026 13:34:24 +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=1776173665; cv=none; b=bdSPQegOTsoHzNhWMWsC/zK7HdBeENZ+QkBLeyPuDnWBoGYed3pfkisCrphPkENWfKy9NAbjfa+u+F574QcEMhU50WYZwf5v1qm+xnZ3PszGdbXdGkTsfDZyIloL/Etk911myjHbL01fMAbk93O0BynHMbMoS+CqMnHBK4k4jWM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173665; c=relaxed/simple; bh=+qaBdb9rEAmToN4IiTNcZrtY6yqx3a4Lvoh95OjNc1Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KqqFS1RhEdi6rWY1qjTRfCJ6IkxOonjk+HDLTCqow1ZbY1B825uPLaEzWeAcDZrUpWnpYY14jJx/hRUlr2B4kSLotU2HLaaFEirZsRwSdaHTxdXFOyjo6qYGUqCGlcl0vb4PpLzxs1j43fWkIY7yLzA9vRWNHRjuCFAUO+BCc4c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OBMe/hLP; 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="OBMe/hLP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6B515C4AF09; Tue, 14 Apr 2026 13:34:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173664; bh=+qaBdb9rEAmToN4IiTNcZrtY6yqx3a4Lvoh95OjNc1Y=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=OBMe/hLP5prT99yd3Xg1iYDtqg6Bjx6Ez36a6H7nhKQ4o0Y7FkIzmdD8iO0KA0KaH vPm5EmibYRXX0j+OpErGOWE7Rf6v5Yi9nwdN9SWOA6471Eft2dv1yZUIOYwIOz6YYn IU2N/oZvyhKOCxAwVRxhI43guI0ea9Kt4/F4CDvD33q83wb95Ig+Qf/oViuweMkzWJ Weu4WLKunIpusykY5l0Q0IrMYewqXdhsf7TzBApoUL/xD7Q6N3Mn7uurNd77bH3KiL yOtQIfNBffJTTaDYYTgo39+hmzyy87E8BFOekaPDZ54kLuOGCrTC4s6ZjNyozY6wrp rXIbF/GN/ep9w== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:34:10 +0200 Subject: [PATCH mptcp-net v4 17/20] selftests: mptcp: join: validate 8x8 subflows Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-17-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2160; i=matttbe@kernel.org; h=from:subject:message-id; bh=+qaBdb9rEAmToN4IiTNcZrtY6yqx3a4Lvoh95OjNc1Y=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOQVGPfz86bO+2sWyDf/TZbh0a9Lsdswzj5Pdahvx6 W8z95OsjlIWBjEuBlkxRRbptsj8mc+reEu8/Cxg5rAygQxh4OIUgImIFTIynGVR/xF649E+rQnT Xd/8k/i0+eDj1FcLviQ0bzl2a5Zj43KGv5KuDvOF922OazgsOCHt2hyD54Y7vmp4fys89eRLFfO LTdwA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The limits have been recently increased, it is required to validate that having 64 subflows is allowed. Here, both the client and the server have 8 network interfaces. The server has 8 endpoints marked as 'signal' to announce all its v4 addresses. The client also has 8 endpoints, but marked as 'subflow' and 'fullmesh' in order to create 8 subflows to each address announced by the server. This means 63 additional subflows will be created after the initial one. If it is not possible to increase the limits to 64, it means an older kernel version is being used, and the test is skipped. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 28 +++++++++++++++++++++= ++++ 1 file changed, 28 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 28da9df797ae..c6bb345d056b 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -513,6 +513,19 @@ reset_with_tcp_filter() fi } =20 +# For kernel supporting limits above 8 +# $1: title ; $2,4: addrs limit ns1,2 ; $3,5: subflows limit ns1,2 +reset_with_high_limits() +{ + reset "${1}" || return 1 + + if ! pm_nl_set_limits "${ns1}" "${2}" "${3}" 2>/dev/null || + ! pm_nl_set_limits "${ns2}" "${4}" "${5}" 2>/dev/null; then + mark_as_skipped "unable to set the limits to ${*:2}" + return 1 + fi +} + # $1: err msg fail_test() { @@ -3670,6 +3683,21 @@ fullmesh_tests() chk_prio_nr 0 1 1 0 chk_rm_nr 0 1 fi + + # fullmesh in 8x8 to create 63 additional subflows + if ifaces_nr=3D8 reset_with_high_limits "fullmesh 8x8" 64 64 64 64; then + # higher chance to lose ADD_ADDR: allow retransmissions + ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=3D1 + local i + for i in $(seq 1 8); do + pm_nl_add_endpoint $ns2 10.0.$i.2 flags subflow,fullmesh + pm_nl_add_endpoint $ns1 10.0.$i.1 flags signal + done + speed=3Dslow \ + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr 63 63 63 + fi + } =20 fastclose_tests() --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 B772223E325 for ; Tue, 14 Apr 2026 13:34:25 +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=1776173665; cv=none; b=V156ycRXPk+TxUGZkE+aeBwxGzA8hNVCtgx9JzuckNeHnLzZu7cJvw5+24s/FQ+3iRKH0DLKgOvsPF5Nd7BFvHsiwjCrCfQhBv54rp9bcwh9Uq5vPO258pFCL5Jhuu5gsS8n+Eg2e+8ZmUl1YBrmp9c/NziZERIQHQc5Iu/1GiE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173665; c=relaxed/simple; bh=ymPAk+anGD7xTu+XbCuXfPCdUlIClG6Dbxcyn5o+0b4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=auEMRS/6rdBHkRHzTtl6c0vebkOi2RL6/xgstFVyeRtU/sxOzcF3zmYjzMfLCXBDMf5+2qVRJZ8SupGlsAHBN94DUPpwvuTYqHRy/mKl1dBzxD4EURFUyg88CJ2heZE6FXoLTYDCK9iXoP73Clecp3UDE5OqWFAIjzYh/Sh2njA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=orAwk3cn; 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="orAwk3cn" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 33688C2BCB9; Tue, 14 Apr 2026 13:34:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173665; bh=ymPAk+anGD7xTu+XbCuXfPCdUlIClG6Dbxcyn5o+0b4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=orAwk3cn5kDWrN0ph8aYgUQ1TnJctUcmEZQXcHdS3W7mWLPSoDL6F22ep+zLYjadd oO46O4YX0AtEESLj1egDV1S0vmI2Va+D+Y3P95W4R7ZeL9QnDXFELeou9dbnAcK4/h pD6nxrZYb3No7/kpIIlJDcaKHNv1hhCXQJtSrAfKj00j5WiEZUqUbq09IUkdpIQQrR BXzE45wJcuoVpxD3+NWLVwT8eaFYrrdbPkK1E5PvpzWJ1Qi7ke6zOsOcg2mW/339lp Hf7IybM2VuHt0F4+yMb/i9oAZlcayLPpBoLdDp2k8rQK14K/sKhEAz847aXeLQkrG5 tCwbgFk8Yxvkw== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:34:11 +0200 Subject: [PATCH mptcp-net v4 18/20] selftests: mptcp: pm: validate new limits Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-18-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3801; i=matttbe@kernel.org; h=from:subject:message-id; bh=ymPAk+anGD7xTu+XbCuXfPCdUlIClG6Dbxcyn5o+0b4=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOQVuMercp63rIC3U7X7A9Wf3ngXb3jzbte6w8734g NknWmK/dJSyMIhxMciKKbJIt0Xmz3xexVvi5WcBM4eVCWQIAxenAEyk0ozhfxI75yzVuasOzGJn 0eSdyNcUeZ1L6fDurz967shfe7rv3W2G/9kqR/X1Gw3VM3onz3j2K+XpMr3PG2bL/Vu4fHKYe2Z 0BgMA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 These limits have been recently updated, from 8 to: - 64 for the subflows and accepted add_addr - 255 for the MPTCP endpoints These modifications validate the new limits, but are also compatible with the previous ones, to be able to continue to validate stable kernel using the last version of the selftests. That's why new variables are now used instead of hard-coded values. Signed-off-by: Matthieu Baerts (NGI0) --- v4: avoid using "&&" with check(), use a clearer way instead. --- tools/testing/selftests/net/mptcp/pm_netlink.sh | 56 +++++++++++++++------= ---- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testin= g/selftests/net/mptcp/pm_netlink.sh index cb1d3cfc1104..e2e60f2cf46a 100755 --- a/tools/testing/selftests/net/mptcp/pm_netlink.sh +++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh @@ -66,6 +66,15 @@ get_limits() { fi } =20 +get_limits_nb() { + if mptcp_lib_is_ip_mptcp; then + ip -n "${ns1}" mptcp limits | awk '{ print $2" "$4 }' + else + ip netns exec "${ns1}" ./pm_nl_ctl limits | \ + awk '{ printf "%s ", $2 }' + fi +} + format_endpoints() { mptcp_lib_pm_nl_format_endpoints "${@}" } @@ -164,6 +173,7 @@ check "get_endpoint 2" "" "simple del addr" 1 check "show_endpoints" \ "$(format_endpoints "1,10.0.1.1" \ "3,10.0.1.3,signal backup")" "dump addrs after del" +add_endpoint 10.0.1.2 id 2 =20 add_endpoint 10.0.1.3 2>/dev/null check "get_endpoint 4" "" "duplicate addr" 1 @@ -171,25 +181,29 @@ check "get_endpoint 4" "" "duplicate addr" 1 add_endpoint 10.0.1.4 flags signal check "get_endpoint 4" "$(format_endpoints "4,10.0.1.4,signal")" "id addr = increment" =20 -for i in $(seq 5 9); do - add_endpoint "10.0.1.${i}" flags signal >/dev/null 2>&1 -done -check "get_endpoint 9" "$(format_endpoints "9,10.0.1.9,signal")" "hard add= r limit" -check "get_endpoint 10" "" "above hard addr limit" +read -r -a default_limits_nb <<< "$(get_limits_nb)" +# limits have been increased: from 8 to 64 for subflows/add_addr & 255 for= endp +if mptcp_lib_expect_all_features || set_limits 9 9 2>/dev/null; then + max_endp=3D255 + max_limits=3D64 +else + max_endp=3D8 + max_limits=3D8 +fi +set_limits "${default_limits_nb[@]}" =20 -del_endpoint 9 -for i in $(seq 10 255); do - add_endpoint 10.0.0.9 id "${i}" - del_endpoint "${i}" +for i in $(seq 5 ${max_endp}); do + add_endpoint "10.0.0.${i}" id "${i}" done -check "show_endpoints" \ - "$(format_endpoints "1,10.0.1.1" \ - "3,10.0.1.3,signal backup" \ - "4,10.0.1.4,signal" \ - "5,10.0.1.5,signal" \ - "6,10.0.1.6,signal" \ - "7,10.0.1.7,signal" \ - "8,10.0.1.8,signal")" "id limit" +check "get_endpoint ${max_endp}" \ + "$(format_endpoints "${max_endp},10.0.0.${max_endp}")" "id limit" + +if add_endpoint '10.0.0.1' &>/dev/null; then + hardlimit=3D"no error" +else + hardlimit=3D"error" +fi +check "echo ${hardlimit}" "error" "above hard addr limit" =20 flush_endpoint check "show_endpoints" "" "flush addrs" @@ -202,15 +216,15 @@ if ! mptcp_lib_is_ip_mptcp; then flush_endpoint fi =20 -set_limits 9 1 2>/dev/null +set_limits $((max_limits + 1)) 1 2>/dev/null check "get_limits" "${default_limits}" "rcv addrs above hard limit" =20 -set_limits 1 9 2>/dev/null +set_limits 1 $((max_limits + 1)) 2>/dev/null check "get_limits" "${default_limits}" "subflows above hard limit" =20 -set_limits 8 8 +set_limits ${max_limits} ${max_limits} flush_endpoint ## to make sure it doesn't affect the limits -check "get_limits" "$(format_limits 8 8)" "set limits" +check "get_limits" "$(format_limits ${max_limits} ${max_limits})" "set lim= its" =20 flush_endpoint add_endpoint 10.0.1.1 --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 B61A2271A94 for ; Tue, 14 Apr 2026 13:34:26 +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=1776173666; cv=none; b=sWe8MIUWQ2o2470ggrSm4f2bHFXXiMKXtpDEknDnxdoteuG6GZaoKOwXzK406y9B8G4kgQxHVnqUxHKmiWD6AD4RDPDw2VInPoj+UqjJMXjsPxODQ09VK+bBq+M6WD6IKRMl86ks8AUR5cxfF4n0Om8KQm9ejNRGVt1Bum23nko= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173666; c=relaxed/simple; bh=N19jazivXTMDBQM5jY7wG5Ec0mUGbrDn/0Y2kORbl90=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oDHrz7CogqSBBH28YR0/WpLRsQBNZyQEtdzyyOqJ3JmtbKBaIWDphLmgmeE57IbbS8sO3JtXhUBkZiYjixcfXjsWstFl/cIcxDt+WlfZA3LJlczpKBfOJ9wcf7B7W6JGY0c8aJB6x53C1s5FsPu01dG+xs62tTF4OSL3FrRdyF8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=RGxUZS9V; 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="RGxUZS9V" Received: by smtp.kernel.org (Postfix) with ESMTPSA id EEE61C2BCB0; Tue, 14 Apr 2026 13:34:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173666; bh=N19jazivXTMDBQM5jY7wG5Ec0mUGbrDn/0Y2kORbl90=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=RGxUZS9Vp7khMiIPcmi4BfoGLXFiljWNL+LEAt+TYLNnga3JW13EZ4WT0lo5puiPB BA2zrYD2lO2+zUaTxBwH9n3VshNmrsLFlw9ZAxw10Vw7aUe/RTbKqCgBctZ2ratQAL hPODc3siunshX4Sg0eYexJER5Fa/i80t1D/w2p7E9Y7FKkzE7sZMvM+aUK6nbHYOp2 0hdF1MP+Zz7pcGhGDbVzytoaxBDnmIaYL0bN4WFzAB7gkcNikqao6kDJ1bdIbGlEDA o+GyXEOO3APqtzVhE8TtPu/hyhoHn9PlHrEq9o8ZyvdGX/m6SkKoXiJFpWNyYAyST0 THKeiHUrgPyZg== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:34:12 +0200 Subject: [PATCH mptcp-net v4 19/20] selftests: mptcp: pm: use simpler send/recv forms Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-19-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1778; i=matttbe@kernel.org; h=from:subject:message-id; bh=N19jazivXTMDBQM5jY7wG5Ec0mUGbrDn/0Y2kORbl90=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOQU9qKg/Ge72lWPKyq7CfSYWNXf+ZF75elJMufxNz wRDtWcWHaUsDGJcDLJiiizSbZH5M59X8ZZ4+VnAzGFlAhnCwMUpABOx1mZkWJ7Wtudd64fvU053 HzrXukk8Mnvt6xhFuaje+JlrvKR7pzL8d9x2uzSmbNvM71L1P76xfUhM7t1kZuUsEsrQPPnFJfZ 6HgA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Instead of sendto() and recvfrom() which the NL address that was already provided before. Just simpler and easier to read without the to/from variants. While at it, fix a checkpatch warning by removing multiple assignments. Signed-off-by: Matthieu Baerts (NGI0) --- v2: fix already present checkpatch warning. --- tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c b/tools/testing/= selftests/net/mptcp/pm_nl_ctl.c index 99eecccbf0c8..78180da1efcc 100644 --- a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c +++ b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c @@ -217,8 +217,6 @@ static int capture_events(int fd, int event_group) /* do a netlink command and, if max > 0, fetch the reply ; nh's size >1024= B */ static int do_nl_req(int fd, struct nlmsghdr *nh, int len, int max) { - struct sockaddr_nl nladdr =3D { .nl_family =3D AF_NETLINK }; - socklen_t addr_len; void *data =3D nh; int rem, ret; int err =3D 0; @@ -230,15 +228,15 @@ static int do_nl_req(int fd, struct nlmsghdr *nh, int= len, int max) } =20 nh->nlmsg_len =3D len; - ret =3D sendto(fd, data, len, 0, (void *)&nladdr, sizeof(nladdr)); + ret =3D send(fd, data, len, 0); if (ret !=3D len) error(1, errno, "send netlink: %uB !=3D %uB\n", ret, len); =20 - addr_len =3D sizeof(nladdr); - rem =3D ret =3D recvfrom(fd, data, max, 0, (void *)&nladdr, &addr_len); + ret =3D recv(fd, data, max, 0); if (ret < 0) error(1, errno, "recv netlink: %uB\n", ret); =20 + rem =3D ret; /* Beware: the NLMSG_NEXT macro updates the 'rem' argument */ for (; NLMSG_OK(nh, rem); nh =3D NLMSG_NEXT(nh, rem)) { if (nh->nlmsg_type =3D=3D NLMSG_DONE) --=20 2.53.0 From nobody Tue May 5 11:22:27 2026 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 609E2271A94 for ; Tue, 14 Apr 2026 13:34:27 +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=1776173667; cv=none; b=OY1e7YTHzyp35Bqs9VVguMLWC0lXZofMn7l0x+kamOsqa7Gye+Sd8T8MHXuqEmFDu11RdJj3ApPxyVJZymSL1mfl3J+6NhaiJiXnO7TSlkhQB98GuL4iLLVKe8rxAC8TOg8P0JiGf1VfgvRLnG6uhYL9VyHezFcV6YMYvzQEeWg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776173667; c=relaxed/simple; bh=cVlIHsHJ26PUzzrZ8Eyea/hNvqdvBXOVPLgJmMnH82o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=P5+AWuizwCqNhs8KRNHIzv+krbSDNSbHXGtVEuHGPV2Y1j7DA1P+mKBqH7Vrrrfhaag8UtvApU6uTBWYGGXO3wtCtUevgArUWxmEoCODim4UTgNUVVarcCEfpbZgKbcvTLo+2jBkWIjlj6E9dlPduhGqflDbLAhHy5EBxkFi/Ss= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZdPQzSMP; 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="ZdPQzSMP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B64B5C2BCB5; Tue, 14 Apr 2026 13:34:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1776173667; bh=cVlIHsHJ26PUzzrZ8Eyea/hNvqdvBXOVPLgJmMnH82o=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ZdPQzSMPzMPxO2aCyX+pT1V5sdQ7IFsngPE7x2H4FLsQFE7X0pUpDp10MDYQBs+fU /yQ1A8pYDZt/mt+41R8IHPi5TJtyRje/Ypz+VyPT6D1LzcgcFiEQ2YrrigwMsANpL1 NrJvwMC545ia0y2pHJn2l40Qj1hiyb3hTaSrKg5HfZIrrbqcCUzwzVt1RnrekgYRBh pVZDw8XhCPUlqQ7o1R0qCBp+ELqwrARXY9VYsPDE9tMyh5g7vIdIFSWepUaan0djHr cd09+kycJrKLfTMte4P+t8xWcdnOLgnDutJov/8urAQJi/+7FKyeDxNyCF54NVjmaD iMTKZ0tLz4DtA== From: "Matthieu Baerts (NGI0)" Date: Tue, 14 Apr 2026 15:34:13 +0200 Subject: [PATCH mptcp-net v4 20/20] mptcp: pm: clearer ADD_ADDR related helpers names Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260414-mptcp-inc-limits-v4-20-78274edda5dd@kernel.org> References: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> In-Reply-To: <20260414-mptcp-inc-limits-v4-0-78274edda5dd@kernel.org> To: MPTCP Upstream Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=16695; i=matttbe@kernel.org; h=from:subject:message-id; bh=cVlIHsHJ26PUzzrZ8Eyea/hNvqdvBXOVPLgJmMnH82o=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDLvOQVNiPl36Ommf3xVDdf+37tcpzdThr3mWHvhSsmtz 0QdPfdrdJSyMIhxMciKKbJIt0Xmz3xexVvi5WcBM4eVCWQIAxenAEzkwVVGhnsZYhc3fWvK6bXW dL8eq1qRN3kt40mftjeyYawbecPOVjMybFr+ZZpuwl/lE6d2eYSGhJgpz7rpNnPX9YiiPSvn5HY VMAEA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Here is a suggestion, and if it is OK, I will split this in multiple commits: it is not the first time the 'add' and 'anno' names to describe ADD_ADDR related functions are confusing. Eric already pointed that in [1]. I started by renaming only the internal helper names, then while at it, I tried to uniform everything linked to ADD_ADDR. WDYT? Link: https://lore.kernel.org/20251117100745.1913963-1-edumazet@google.com = [1] Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/options.c | 2 +- net/mptcp/pm.c | 133 ++++++++++++++++++++++++-------------------= ---- net/mptcp/pm_kernel.c | 20 +++---- net/mptcp/pm_userspace.c | 6 +-- net/mptcp/protocol.h | 19 +++---- net/mptcp/subflow.c | 4 +- 6 files changed, 93 insertions(+), 91 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 4cc583fdc7a9..8282e666167d 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -1211,7 +1211,7 @@ bool mptcp_incoming_options(struct sock *sk, struct s= k_buff *skb) MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_ADDADDR); } else { mptcp_pm_add_addr_echoed(msk, &mp_opt.addr); - mptcp_pm_del_add_timer(msk, &mp_opt.addr, true); + mptcp_pm_add_addr_del_timer(msk, &mp_opt.addr, true); MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_ECHOADD); } =20 diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 236a8087da29..0466d103de6e 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -12,12 +12,12 @@ =20 #define ADD_ADDR_RETRANS_MAX 3 =20 -struct mptcp_pm_add_entry { +struct mptcp_pm_add_addr { struct list_head list; struct mptcp_addr_info addr; u8 retrans_times; bool timer_done; - struct timer_list add_timer; + struct timer_list timer; struct mptcp_sock *sock; struct rcu_head rcu; }; @@ -115,14 +115,14 @@ static bool mptcp_pm_is_init_remote_addr(struct mptcp= _sock *msk, return mptcp_addresses_equal(&mpc_remote, remote, remote->port); } =20 -bool mptcp_lookup_subflow_by_saddr(const struct list_head *list, - const struct mptcp_addr_info *saddr) +bool mptcp_pm_subflow_lookup_by_saddr(struct mptcp_sock *msk, + const struct mptcp_addr_info *saddr) { struct mptcp_subflow_context *subflow; struct mptcp_addr_info cur; struct sock_common *skc; =20 - list_for_each_entry(subflow, list, node) { + mptcp_for_each_subflow(msk, subflow) { skc =3D (struct sock_common *)mptcp_subflow_tcp_sock(subflow); =20 mptcp_local_address(skc, &cur); @@ -133,38 +133,39 @@ bool mptcp_lookup_subflow_by_saddr(const struct list_= head *list, return false; } =20 -static struct mptcp_pm_add_entry * -mptcp_lookup_anno_list_by_saddr(const struct mptcp_sock *msk, - const struct mptcp_addr_info *addr) +static struct mptcp_pm_add_addr * +mptcp_pm_add_addr_lookup_by_addr(const struct mptcp_sock *msk, + const struct mptcp_addr_info *addr) { - struct mptcp_pm_add_entry *entry; + struct mptcp_pm_add_addr *add_addr; =20 lockdep_assert_held(&msk->pm.lock); =20 - list_for_each_entry(entry, &msk->pm.anno_list, list) { - if (mptcp_addresses_equal(&entry->addr, addr, true)) - return entry; + list_for_each_entry(add_addr, &msk->pm.anno_list, list) { + if (mptcp_addresses_equal(&add_addr->addr, addr, true)) + return add_addr; } =20 return NULL; } =20 -bool mptcp_remove_anno_list_by_saddr(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr) +bool mptcp_pm_add_addr_remove(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr) { - struct mptcp_pm_add_entry *entry; + struct mptcp_pm_add_addr *add_addr; bool ret; =20 - entry =3D mptcp_pm_del_add_timer(msk, addr, false); - ret =3D entry; - kfree_rcu(entry, rcu); + add_addr =3D mptcp_pm_add_addr_del_timer(msk, addr, false); + ret =3D add_addr; + kfree_rcu(add_addr, rcu); =20 return ret; } =20 -bool mptcp_pm_sport_in_anno_list(struct mptcp_sock *msk, const struct sock= *sk) +bool mptcp_pm_add_addr_lookup_by_sk(struct mptcp_sock *msk, + const struct sock *sk) { - struct mptcp_pm_add_entry *entry; + struct mptcp_pm_add_addr *entry; struct mptcp_addr_info saddr; bool ret =3D false; =20 @@ -335,11 +336,11 @@ static unsigned int mptcp_adjust_add_addr_timeout(str= uct mptcp_sock *msk) return max_stale && max_stale < rto ? max_stale : rto; } =20 -static void mptcp_pm_add_timer(struct timer_list *timer) +static void mptcp_pm_add_addr_timer(struct timer_list *timer) { - struct mptcp_pm_add_entry *entry =3D timer_container_of(entry, timer, - add_timer); - struct mptcp_sock *msk =3D entry->sock; + struct mptcp_pm_add_addr *add_addr =3D timer_container_of(add_addr, timer, + timer); + struct mptcp_sock *msk =3D add_addr->sock; struct sock *sk =3D (struct sock *)msk; unsigned int timeout =3D 0; =20 @@ -362,20 +363,20 @@ static void mptcp_pm_add_timer(struct timer_list *tim= er) spin_lock_bh(&msk->pm.lock); =20 if (!mptcp_pm_should_add_signal_addr(msk)) { - pr_debug("retransmit ADD_ADDR id=3D%d\n", entry->addr.id); - mptcp_pm_announce_addr(msk, &entry->addr, false); + pr_debug("retransmit ADD_ADDR id=3D%d\n", add_addr->addr.id); + mptcp_pm_announce_addr(msk, &add_addr->addr, false); mptcp_pm_add_addr_send_ack(msk); - entry->retrans_times++; + add_addr->retrans_times++; } =20 - if (entry->retrans_times < ADD_ADDR_RETRANS_MAX) - timeout <<=3D entry->retrans_times; + if (add_addr->retrans_times < ADD_ADDR_RETRANS_MAX) + timeout <<=3D add_addr->retrans_times; else timeout =3D 0; =20 spin_unlock_bh(&msk->pm.lock); =20 - if (entry->retrans_times =3D=3D ADD_ADDR_RETRANS_MAX) + if (add_addr->retrans_times =3D=3D ADD_ADDR_RETRANS_MAX) mptcp_pm_subflow_established(msk); =20 out: @@ -383,84 +384,83 @@ static void mptcp_pm_add_timer(struct timer_list *tim= er) sk_reset_timer(sk, timer, jiffies + timeout); else /* if sock_put calls sk_free: avoid waiting for this timer */ - entry->timer_done =3D true; + add_addr->timer_done =3D true; bh_unlock_sock(sk); sock_put(sk); } =20 -struct mptcp_pm_add_entry * -mptcp_pm_del_add_timer(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr, bool check_id) +struct mptcp_pm_add_addr * +mptcp_pm_add_addr_del_timer(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr, bool check_id) { - struct mptcp_pm_add_entry *entry; + struct mptcp_pm_add_addr *add_addr; struct sock *sk =3D (struct sock *)msk; bool stop_timer =3D false; =20 rcu_read_lock(); =20 spin_lock_bh(&msk->pm.lock); - entry =3D mptcp_lookup_anno_list_by_saddr(msk, addr); - if (entry && (!check_id || entry->addr.id =3D=3D addr->id)) { - entry->retrans_times =3D ADD_ADDR_RETRANS_MAX; + add_addr =3D mptcp_pm_add_addr_lookup_by_addr(msk, addr); + if (add_addr && (!check_id || add_addr->addr.id =3D=3D addr->id)) { + add_addr->retrans_times =3D ADD_ADDR_RETRANS_MAX; stop_timer =3D true; } - if (!check_id && entry) - list_del(&entry->list); + if (!check_id && add_addr) + list_del(&add_addr->list); spin_unlock_bh(&msk->pm.lock); =20 /* Note: entry might have been removed by another thread. * We hold rcu_read_lock() to ensure it is not freed under us. */ if (stop_timer) - sk_stop_timer_sync(sk, &entry->add_timer); + sk_stop_timer_sync(sk, &add_addr->timer); =20 rcu_read_unlock(); - return entry; + return add_addr; } =20 -bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr) +bool mptcp_pm_add_addr_alloc(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr) { - struct mptcp_pm_add_entry *add_entry =3D NULL; + struct mptcp_pm_add_addr *add_addr =3D NULL; struct sock *sk =3D (struct sock *)msk; unsigned int timeout; =20 lockdep_assert_held(&msk->pm.lock); =20 - add_entry =3D mptcp_lookup_anno_list_by_saddr(msk, addr); - - if (add_entry) { + add_addr =3D mptcp_pm_add_addr_lookup_by_addr(msk, addr); + if (add_addr) { if (WARN_ON_ONCE(mptcp_pm_is_kernel(msk))) return false; =20 goto reset_timer; } =20 - add_entry =3D kmalloc_obj(*add_entry, GFP_ATOMIC); - if (!add_entry) + add_addr =3D kmalloc_obj(*add_addr, GFP_ATOMIC); + if (!add_addr) return false; =20 - list_add(&add_entry->list, &msk->pm.anno_list); + list_add(&add_addr->list, &msk->pm.anno_list); =20 - add_entry->addr =3D *addr; - add_entry->sock =3D msk; - add_entry->retrans_times =3D 0; + add_addr->addr =3D *addr; + add_addr->sock =3D msk; + add_addr->retrans_times =3D 0; =20 - timer_setup(&add_entry->add_timer, mptcp_pm_add_timer, 0); + timer_setup(&add_addr->timer, mptcp_pm_add_addr_timer, 0); reset_timer: - add_entry->timer_done =3D false; + add_addr->timer_done =3D false; timeout =3D mptcp_adjust_add_addr_timeout(msk); if (timeout) - sk_reset_timer(sk, &add_entry->add_timer, jiffies + timeout); + sk_reset_timer(sk, &add_addr->timer, jiffies + timeout); else - add_entry->timer_done =3D true; + add_addr->timer_done =3D true; =20 return true; } =20 -static void mptcp_pm_free_anno_list(struct mptcp_sock *msk) +static void mptcp_pm_free_add_addr_list(struct mptcp_sock *msk) { - struct mptcp_pm_add_entry *entry, *tmp; + struct mptcp_pm_add_addr *add_addr, *tmp; struct sock *sk =3D (struct sock *)msk; LIST_HEAD(free_list); =20 @@ -470,10 +470,10 @@ static void mptcp_pm_free_anno_list(struct mptcp_sock= *msk) list_splice_init(&msk->pm.anno_list, &free_list); spin_unlock_bh(&msk->pm.lock); =20 - list_for_each_entry_safe(entry, tmp, &free_list, list) { - if (!entry->timer_done) - sk_stop_timer_sync(sk, &entry->add_timer); - kfree_rcu(entry, rcu); + list_for_each_entry_safe(add_addr, tmp, &free_list, list) { + if (!add_addr->timer_done) + sk_stop_timer_sync(sk, &add_addr->timer); + kfree_rcu(add_addr, rcu); } } =20 @@ -727,7 +727,8 @@ void mptcp_pm_add_addr_echoed(struct mptcp_sock *msk, =20 spin_lock_bh(&pm->lock); =20 - if (mptcp_lookup_anno_list_by_saddr(msk, addr) && READ_ONCE(pm->work_pend= ing)) + if (mptcp_pm_add_addr_lookup_by_addr(msk, addr) && + READ_ONCE(pm->work_pending)) mptcp_pm_schedule_work(msk, MPTCP_PM_SUBFLOW_ESTABLISHED); =20 spin_unlock_bh(&pm->lock); @@ -1096,7 +1097,7 @@ static void mptcp_pm_ops_release(struct mptcp_sock *m= sk) =20 void mptcp_pm_destroy(struct mptcp_sock *msk) { - mptcp_pm_free_anno_list(msk); + mptcp_pm_free_add_addr_list(msk); mptcp_pm_ops_release(msk); } =20 diff --git a/net/mptcp/pm_kernel.c b/net/mptcp/pm_kernel.c index c75a2c29bcf2..174a760e7a23 100644 --- a/net/mptcp/pm_kernel.c +++ b/net/mptcp/pm_kernel.c @@ -374,7 +374,7 @@ static void mptcp_pm_create_subflow_or_signal_addr(stru= ct mptcp_sock *msk) /* If the alloc fails, we are on memory pressure, not worth * continuing, and trying to create subflows. */ - if (!mptcp_pm_alloc_anno_list(msk, &local.addr)) + if (!mptcp_pm_add_addr_alloc(msk, &local.addr)) return; =20 __clear_bit(endp_id, msk->pm.id_avail_bitmap); @@ -1054,16 +1054,16 @@ int mptcp_pm_nl_add_addr_doit(struct sk_buff *skb, = struct genl_info *info) return ret; } =20 -static void mptcp_pm_remove_anno_addr(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr, - bool force) +static void mptcp_pm_remove_add_addr(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr, + bool force) { struct mptcp_rm_list list =3D { .nr =3D 0 }; bool announced; =20 list.ids[list.nr++] =3D mptcp_endp_get_local_id(msk, addr); =20 - announced =3D mptcp_remove_anno_list_by_saddr(msk, addr); + announced =3D mptcp_pm_add_addr_remove(msk, addr); if (announced || force) { spin_lock_bh(&msk->pm.lock); if (announced) @@ -1099,9 +1099,9 @@ static int mptcp_nl_remove_subflow_and_signal_addr(st= ruct net *net, goto next; =20 lock_sock(sk); - remove_subflow =3D mptcp_lookup_subflow_by_saddr(&msk->conn_list, addr); - mptcp_pm_remove_anno_addr(msk, addr, remove_subflow && - !(entry->flags & MPTCP_PM_ADDR_FLAG_IMPLICIT)); + remove_subflow =3D mptcp_pm_subflow_lookup_by_saddr(msk, addr); + mptcp_pm_remove_add_addr(msk, addr, remove_subflow && + !(entry->flags & MPTCP_PM_ADDR_FLAG_IMPLICIT)); =20 list.ids[0] =3D mptcp_endp_get_local_id(msk, addr); =20 @@ -1237,10 +1237,10 @@ static void mptcp_pm_flush_addrs_and_subflows(struc= t mptcp_sock *msk, =20 entry =3D list_prepare_entry(entry, rm_list, list); list_for_each_entry_continue(entry, rm_list, list) { - if (mptcp_lookup_subflow_by_saddr(&msk->conn_list, &entry->addr)) + if (mptcp_pm_subflow_lookup_by_saddr(msk, &entry->addr)) slist.ids[slist.nr++] =3D mptcp_endp_get_local_id(msk, &entry->addr); =20 - if (mptcp_remove_anno_list_by_saddr(msk, &entry->addr)) + if (mptcp_pm_add_addr_remove(msk, &entry->addr)) alist.ids[alist.nr++] =3D mptcp_endp_get_local_id(msk, &entry->addr); =20 if (slist.nr =3D=3D MPTCP_RM_IDS_MAX || diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index d838e8ea65fd..704154de85ca 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -228,7 +228,7 @@ int mptcp_pm_nl_announce_doit(struct sk_buff *skb, stru= ct genl_info *info) lock_sock(sk); spin_lock_bh(&msk->pm.lock); =20 - if (mptcp_pm_alloc_anno_list(msk, &addr_val.addr)) { + if (mptcp_pm_add_addr_alloc(msk, &addr_val.addr)) { msk->pm.add_addr_signaled++; mptcp_pm_announce_addr(msk, &addr_val.addr, false); mptcp_pm_addr_send_ack(msk); @@ -281,9 +281,9 @@ void mptcp_pm_remove_addr_entry(struct mptcp_sock *msk, int anno_nr =3D 0; =20 /* only delete if either announced or matching a subflow */ - if (mptcp_remove_anno_list_by_saddr(msk, &entry->addr)) + if (mptcp_pm_add_addr_remove(msk, &entry->addr)) anno_nr++; - else if (!mptcp_lookup_subflow_by_saddr(&msk->conn_list, &entry->addr)) + else if (!mptcp_pm_subflow_lookup_by_saddr(msk, &entry->addr)) return; =20 alist.ids[alist.nr++] =3D entry->addr.id; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 661600f8b573..8ad60edf3419 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1132,16 +1132,17 @@ int mptcp_pm_mp_prio_send_ack(struct mptcp_sock *ms= k, struct mptcp_addr_info *addr, struct mptcp_addr_info *rem, u8 bkup); -bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk, +bool mptcp_pm_add_addr_alloc(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr); +struct mptcp_pm_add_addr * +mptcp_pm_add_addr_del_timer(struct mptcp_sock *msk, + const struct mptcp_addr_info *addr, bool check_id); +bool mptcp_pm_add_addr_remove(struct mptcp_sock *msk, const struct mptcp_addr_info *addr); -bool mptcp_pm_sport_in_anno_list(struct mptcp_sock *msk, const struct sock= *sk); -struct mptcp_pm_add_entry * -mptcp_pm_del_add_timer(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr, bool check_id); -bool mptcp_lookup_subflow_by_saddr(const struct list_head *list, - const struct mptcp_addr_info *saddr); -bool mptcp_remove_anno_list_by_saddr(struct mptcp_sock *msk, - const struct mptcp_addr_info *addr); +bool mptcp_pm_add_addr_lookup_by_sk(struct mptcp_sock *msk, + const struct sock *sk); +bool mptcp_pm_subflow_lookup_by_saddr(struct mptcp_sock *msk, + const struct mptcp_addr_info *saddr); int mptcp_pm_nl_set_flags(struct mptcp_pm_addr_entry *local, struct genl_info *info); int mptcp_userspace_pm_set_flags(struct mptcp_pm_addr_entry *local, diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index e2cb9d23e4a0..836dcdc3a620 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -235,7 +235,7 @@ static int subflow_check_req(struct request_sock *req, pr_debug("syn inet_sport=3D%d %d\n", ntohs(inet_sk(sk_listener)->inet_sport), ntohs(inet_sk((struct sock *)subflow_req->msk)->inet_sport)); - if (!mptcp_pm_sport_in_anno_list(subflow_req->msk, sk_listener)) { + if (!mptcp_pm_add_addr_lookup_by_sk(subflow_req->msk, sk_listener)) { SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_MISMATCHPORTSYNRX); subflow_add_reset_reason(skb, MPTCP_RST_EPROHIBIT); return -EPERM; @@ -926,7 +926,7 @@ static struct sock *subflow_syn_recv_sock(const struct = sock *sk, pr_debug("ack inet_sport=3D%d %d\n", ntohs(inet_sk(sk)->inet_sport), ntohs(inet_sk((struct sock *)owner)->inet_sport)); - if (!mptcp_pm_sport_in_anno_list(owner, sk)) { + if (!mptcp_pm_add_addr_lookup_by_sk(owner, sk)) { SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_MISMATCHPORTACKRX); subflow_add_reset_reason(skb, MPTCP_RST_EPROHIBIT); goto dispose_child; --=20 2.53.0