From nobody Mon Sep 16 19:11:32 2024 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 A7FB2208BA for ; Tue, 16 Jul 2024 20:53: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=1721163204; cv=none; b=By/vqZXW2OD+MHLKMYElncx4qknotgT97J3KAOm9QFy5P6M3+vQkz0yXc1KhBitN+VRac63ObfNnSk27VI/ThSokJ4xC/h7MpRCdja5YE1J3AXaVpTWbZ53xy6poUcNQ5Br2KqruicFPgi8N/IBfRT6F78BStW16HYL2CbE6yxg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721163204; c=relaxed/simple; bh=/8hfjipBRbGO/JeaUmL3swIPSyyfYZ6/wCbBD5jA8lY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=prOvci+aN96XVYVWevKzFvInlh2cBqaMi8CKS/5cfdUn0jifLRlMfJycBk1EWteX6BOd2INcfUH9J7lN+D4O4hAH1g/PAFQLrhZxIyScDSbQouvkR8XpFLMcAGJXAFu2IbwTlBiH2TJo3jWsOz5wMsUtP5Y1bsTpmOcyt2Q0hk0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QVltMj6d; 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="QVltMj6d" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B2EB3C116B1; Tue, 16 Jul 2024 20:53:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721163204; bh=/8hfjipBRbGO/JeaUmL3swIPSyyfYZ6/wCbBD5jA8lY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=QVltMj6djoJXxPenhNquQvZ8SwshL3Prbid7ionC2tVDin7v0QRtx0PjtvJJGmCtv iuxZ8gp6HpBUUUV1lnpChj21DCwbc1Ye5HqLKc2imUm9GyYahmznh4C73Q0/hGN/Wn e3tmDrqlUtPHjZfNHqeIwXVp6LofInfunTyDLD4MS16XMDUDbUANbwqF9Gd+/1PAsU XhzFAZgguCZvG9NAtOBxFI9LA+rTkCVuoTGBJFxflQWLlkTfcEWzaEtvtnXZQAMj/7 Qgwgn8ENyfAfAhVdbVHwpIttby84I/DLdMOSQ5IzFLc560S1q7X9tkRb06voG+tt4w Zfd2PLWGlRQzw== From: "Matthieu Baerts (NGI0)" Date: Tue, 16 Jul 2024 22:53:13 +0200 Subject: [PATCH mptcp-net v2 1/9] mptcp: sched: check both directions for backup 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: <20240716-mptcp-backup-mpj-v2-1-4d50247405fb@kernel.org> References: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> In-Reply-To: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> To: mptcp@lists.linux.dev Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2802; i=matttbe@kernel.org; h=from:subject:message-id; bh=/8hfjipBRbGO/JeaUmL3swIPSyyfYZ6/wCbBD5jA8lY=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlt3BW2pbNdeaKaRkzn6+zWs++ygsrRqRwq7GU 7THqeqs5WeJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpbdwQAKCRD2t4JPQmmg c9ryD/4vRX1NJvKuhkRY+YwQutSLkN8XB9AkdCDbYV3F16IUyPo1+HHGP9Z0ADStTCNmNHaAjIT BiBLAizU+yDFmjKFHeUfQdbLCyhYzjEwkkutVOzoZrBGfFGR6K3J4wBHG/ZPCQnd8jxMRQNLAJA OQ+ctcVQL8l8MkNXspj5XEXDGp0brCU33K1ezcj45CeU4RaU6z7rzmXrMfpngdklaV/C5dyGcNd wi0r/+nyYeIdS1mD5ia1ultLscEFUnlFhZC8KDkVxwWJEdZ147xPYHQApgg1gaHs9gHbHH0HBWi L+T5cweBajbWAYXG0bRZqdJRM2zTcZr5+dID0Q4uTwWJHZIMOwHZRSXAztC/Sfcluzr17skkHiQ ZY3IGOzNU2lQJWGVvOyFNlqs5dE/e/Yy5j5EWGri+wfZfVvmzJwHfw6J3076xYdBtoGW7JaaqsO aKye0yAw4NHJCWHL/s735eFkb5ZtYAMQ7zgYeK+yc62R6FTBDN3+mkZN44tlqANQjYENdisfHGq xYq+tNyfUeR0k0w+twWWkDljMvjWlSZHJJC1rNXF1H1Wu8HGgNuwkGULz3iZynHdnINX/YvHpw8 ptes9EtsNYFnElCDGc9qm6WbQyMwKnvihmHbdhEtzBEc9i6XyPkfgI2NNSmf75o2MmbwY5Rkrpk lP0lJfkyl0AWdkg== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The 'mptcp_subflow_context' structure has two items related to the backup flags: - 'backup': the subflow has been marked as backup by the other peer - 'request_bkup': the backup flag has been set by the host Before this patch, the scheduler was only looking at the 'backup' flag. That can make sense in some cases, but it looks like that's not what we wanted for the general use, because either the path-manager was setting both of them when sending an MP_PRIO, or the receiver was duplicating the 'backup' flag in the subflow request. Note that the use of these two flags in the path-manager are going to be fixed in the next commits, but this change here is needed not to modify the behaviour. Fixes: f296234c98a8 ("mptcp: Add handling of incoming MP_JOIN requests") Signed-off-by: Matthieu Baerts (NGI0) --- include/trace/events/mptcp.h | 2 +- net/mptcp/protocol.c | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/include/trace/events/mptcp.h b/include/trace/events/mptcp.h index 09e72215b9f9..085b749cdd97 100644 --- a/include/trace/events/mptcp.h +++ b/include/trace/events/mptcp.h @@ -34,7 +34,7 @@ TRACE_EVENT(mptcp_subflow_get_send, struct sock *ssk; =20 __entry->active =3D mptcp_subflow_active(subflow); - __entry->backup =3D subflow->backup; + __entry->backup =3D subflow->backup || subflow->request_bkup; =20 if (subflow->tcp_sock && sk_fullsock(subflow->tcp_sock)) __entry->free =3D sk_stream_memory_free(subflow->tcp_sock); diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index ac94225489f8..b3a48d97f009 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1422,13 +1422,15 @@ struct sock *mptcp_subflow_get_send(struct mptcp_so= ck *msk) } =20 mptcp_for_each_subflow(msk, subflow) { + bool backup =3D subflow->backup || subflow->request_bkup; + trace_mptcp_subflow_get_send(subflow); ssk =3D mptcp_subflow_tcp_sock(subflow); if (!mptcp_subflow_active(subflow)) continue; =20 tout =3D max(tout, mptcp_timeout_from_subflow(subflow)); - nr_active +=3D !subflow->backup; + nr_active +=3D !backup; pace =3D subflow->avg_pacing_rate; if (unlikely(!pace)) { /* init pacing rate from socket */ @@ -1439,9 +1441,9 @@ struct sock *mptcp_subflow_get_send(struct mptcp_sock= *msk) } =20 linger_time =3D div_u64((u64)READ_ONCE(ssk->sk_wmem_queued) << 32, pace); - if (linger_time < send_info[subflow->backup].linger_time) { - send_info[subflow->backup].ssk =3D ssk; - send_info[subflow->backup].linger_time =3D linger_time; + if (linger_time < send_info[backup].linger_time) { + send_info[backup].ssk =3D ssk; + send_info[backup].linger_time =3D linger_time; } } __mptcp_set_timeout(sk, tout); --=20 2.45.2 From nobody Mon Sep 16 19:11:32 2024 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 644FF54F95 for ; Tue, 16 Jul 2024 20:53: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=1721163205; cv=none; b=VsfrxmwjKQFYRW7TvyfEZgxauubjCOeUaB8S9l63Dgvqce9+lYp70HPSWUrGdpJ4hZdGX0j6JZoA6PvIC2ozEGwU4Rg5M00CX+bamHbeh/ihJZKK2bhgMF/g2uEERZIvlDjy3aPSovxNO2efYQ0DcBlmUyujpiRRcnF5qu6CQC4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721163205; c=relaxed/simple; bh=x3ZEThtNs38wRTpz2yLpmSS6NLa42FjFsoITlWG7NIE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pw6lrZnoy2BcEx5Oh8l8Dno8v5bqDpBXpZWnTW53DQFdTWOE99rlwXoV0+m/ZMa5NXAwQ3xwvC9ven/3rHJrmpNvLir/7OMNDVeBRCBgzccGlpg5poLBVtPd81eG84kY3X6Mj3Y2tWfx8y5aPAHaMzvt1ecJ29B9p5TzoWaGoSY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=NyWRrrvt; 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="NyWRrrvt" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B06ACC4AF0C; Tue, 16 Jul 2024 20:53:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721163205; bh=x3ZEThtNs38wRTpz2yLpmSS6NLa42FjFsoITlWG7NIE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NyWRrrvtX4iQ0zeHGwLFJd2TJYz74qX6aubTAiZiFXhYsI3K2x4LRKD4olMpcqnoF JiV72GKlJdLOYedZ/68v0k3qkAvU7416S6mFA15t8l3jChs5hE0/S5G+YayDQxCqR5 ST2VTi7A/+hdsf5j2LUc7IM08mVjdEFi1pUdyZWXVsDfOeJOWXN7Yb6jpmSNAd0mG/ R1KaG+s7748PQBg0CFw5aKU7e0IrBAhx6UqqYejuN8YDStQzzDOZjBKY7qZKJw8QE+ 2tQurW02CGdPrxOHIbFhgUV1E2/poKRxWNrqxTB4pft1i3vpoLN6fjw6fLTtjmihNP hrhY4W97w6MQw== From: "Matthieu Baerts (NGI0)" Date: Tue, 16 Jul 2024 22:53:14 +0200 Subject: [PATCH mptcp-net v2 2/9] mptcp: distinguish rcv vs sent backup flag in requests 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: <20240716-mptcp-backup-mpj-v2-2-4d50247405fb@kernel.org> References: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> In-Reply-To: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> To: mptcp@lists.linux.dev Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2244; i=matttbe@kernel.org; h=from:subject:message-id; bh=x3ZEThtNs38wRTpz2yLpmSS6NLa42FjFsoITlWG7NIE=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlt3BzzLFRUoRp0gpSraEk9DEH7P43V50KMKNb Q3hmqPRAtKJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpbdwQAKCRD2t4JPQmmg c4vmEACN1AwU1Vhxnt5/8A/eHjJqkC08Qqlk7mt+SFbW3WdSOX65wQx0HHrdsAe8k1b4oMlK+jL 6W4Yu8mgdPbKBRJpxqTCDc3UePcqc1/vWkAHIUFGWg0JVMhhXAfIkNht8Rs7CfRPVIqny6G6DQy TpOqtDGOg05aGJ5B+TvbETJEahjoSRGJ0xCOZ1X02Hd3UDGOVgBTRJLYGGZXM37xPQ1gIzZEk7Y TN4x1wTw/FxCirQP6JH6bR65yfdbpgU06vDn37TcZ3q6h+MdzVYC/Xpaz1L0cAl8B93oRGljc0P t5QM2xK/OUXyECPCVv858mn24BFLk+Dt/IcgVPPS/t1uHcp9TiQ5AWPipa9AKWd/TB1LLWeqzfd qoRbfoXOgylOv4L7070IJwKflvFuoYUfyIwAWnXlnE7DjtryPloTgoTz6o/5Q/Q4wtVQ16rhygM EU5qad5XkxhglzNfMB1TVyn21/nGwv6KdNavrU6vON+YqxL/yvg3oR8wuO1AzhCOaha+7Dz33N3 8rdkoi6QOIjzXYP3sw/Y1wM+ajjJF4mscUyw0/LUS5PNXLf5R5+kD4Vme6Yzbe5Kku3tw6tl4X5 bMgSVfugtWdcsvHTGB/mYM7EZUumKTliHw6Zj4Py/f6xd0pTdJm/ZQaB1joZ2+ow73AQgs8+33x lrl0eWjGHyHY8og== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 When sending an MP_JOIN + SYN + ACK, it is possible to mark the subflow as 'backup' by setting the flag with the same name. Before this patch, the backup was set if the other peer set it in its MP_JOIN + SYN request. It is not correct: the backup flag should be set in the MPJ+SYN+ACK only if the host asks for it, and not mirroring what was done by the other peer. It is then required to have a dedicated bit for each direction, similar to what is done in the subflow context. Fixes: f296234c98a8 ("mptcp: Add handling of incoming MP_JOIN requests") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/options.c | 2 +- net/mptcp/protocol.h | 1 + net/mptcp/subflow.c | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index c0832df3b0a3..2f8e357f58a3 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -909,7 +909,7 @@ bool mptcp_synack_options(const struct request_sock *re= q, unsigned int *size, return true; } else if (subflow_req->mp_join) { opts->suboptions =3D OPTION_MPTCP_MPJ_SYNACK; - opts->backup =3D subflow_req->backup; + opts->backup =3D subflow_req->request_bkup; opts->join_id =3D subflow_req->local_id; opts->thmac =3D subflow_req->thmac; opts->nonce =3D subflow_req->local_nonce; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 19d60b6d5b45..6b6b76152db5 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -448,6 +448,7 @@ struct mptcp_subflow_request_sock { u16 mp_capable : 1, mp_join : 1, backup : 1, + request_bkup : 1, csum_reqd : 1, allow_join_id0 : 1; u8 local_id; diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 39e2cbdf3801..a3778aee4e77 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -2005,6 +2005,7 @@ static void subflow_ulp_clone(const struct request_so= ck *req, new_ctx->fully_established =3D 1; new_ctx->remote_key_valid =3D 1; new_ctx->backup =3D subflow_req->backup; + new_ctx->request_bkup =3D subflow_req->request_bkup; WRITE_ONCE(new_ctx->remote_id, subflow_req->remote_id); new_ctx->token =3D subflow_req->token; new_ctx->thmac =3D subflow_req->thmac; --=20 2.45.2 From nobody Mon Sep 16 19:11:32 2024 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 A355355885 for ; Tue, 16 Jul 2024 20:53: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=1721163206; cv=none; b=o/3zovzOS+kON+iHSchop8vXwWE1IpG04vdTtdQ43twCGWGz0PChrX6lgl6AnWjWpvrwNJQT9pm0N9vsNSeHuHwapHVb621Cd27JVJrYdZ93pHDbsKqM4ajtzcWjfvp3OU35jeac6eslvN/4BE0kNez47xVBnT3RoAGX9OFLUKM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721163206; c=relaxed/simple; bh=el4qRlSZNNEra5/72bcgxC16DUkc+vjJu9h9eGeb9RA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UvZgKo34o2tPclgVf+yg3Q66LVpmcAkLPGKxOPHlCrHEwaIJRc3o8KppUh3y9AwwFp+VreqbT3XdmfpucKseqP8Hc3PPRGuB9bOhJ6aGZwnB+ZBj4x756lagmTb8P7SGNrNHI4EjUL5wWoqyJgXmCV4tRXnAGPyDzpaGBJ5YCPw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rVoZbErY; 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="rVoZbErY" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AD31AC4AF10; Tue, 16 Jul 2024 20:53:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721163206; bh=el4qRlSZNNEra5/72bcgxC16DUkc+vjJu9h9eGeb9RA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=rVoZbErYcpjIfsEwgRfhPIax91V906E0JmtZqEl3pOs5ZzVHQJd/+ugHZEQiRHKkC h4vV+O9BQvSNq5pn27gH6B9hlC0XpUlRbdxgdBId8qpgKdUoNGrJzPCHffXZwrEVdS gLTce3NTOl2PevjkOi5ciVF62RX3Nnu1yyheWSFtvGKtM20WIf8F1UKx7NA4agfI7o nsTr0YQQTJYOVVe6f0zVO4vm99WxXUGvtuaj4CfqjngiqOanlnRYzpXGJ7q4L0qgyg mGiM3qcP6C6Va7NQJVMAzqLZI4OAwKKrq5FPgDi/4+RHzfNFVRATmv1QpZ2FvI6YZT X4vL1JT097UlA== From: "Matthieu Baerts (NGI0)" Date: Tue, 16 Jul 2024 22:53:15 +0200 Subject: [PATCH mptcp-net v2 3/9] mptcp: pm: only set request_bkup flag when sending MP_PRIO 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: <20240716-mptcp-backup-mpj-v2-3-4d50247405fb@kernel.org> References: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> In-Reply-To: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> To: mptcp@lists.linux.dev Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=780; i=matttbe@kernel.org; h=from:subject:message-id; bh=el4qRlSZNNEra5/72bcgxC16DUkc+vjJu9h9eGeb9RA=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlt3BkoLlj1yAfXH87p3ZBBZgtfrlqbvHysFkj c3yEleRxsCJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpbdwQAKCRD2t4JPQmmg c3ceEACDO4oFLZymmfRHGvHjDyoojmZPgQcsWLBZyKiCraPU9HeWrNLAEZEuJ4pHJ6DEb4rlRGx 3wYAGTTKlcY7uSurkS6MCjgSkgzixFDm2VXpn8WwNA8ca03Vz2D8Y97HoXtBr1bwVfgINQklvPr dt7n09qeSJ0ij02wyAdEr0kdZe1glaRVHWrevNGqW2ci4CFDdoTep+qTUHCc7OjjSY1k2qnXUKk quuaSqnUyh7AJxFIPe30U274wElwzmfdwR0+DDmK6jpmSIXtKu7+c/l8LRVpBlRe4wWZlZAIKeE I+YfzFj0Ky3veMYhZY+SjSeOO+J72ztpqIg0jJnEbwno06K6u36ySHHtcaaZx1aXus9aefgv9sz UYB0NORHNGupOkhlwH1BT1A91Xy9PMGOFRf/MgXgz9Q381ppFe4a3yKadyqAZfpxNKyPrQGoIDK UPZaba09NhRGhJ53bIbDaqNlvgI//3ZvMgyz4OncdphwtnhCsacgSZQF/K0fMcFauJGIs8Bm1xs hqjpTPSfXUmRxe/iwtqx0dwF29Kp8V2cDXqt/3axaK5J2XDqFqmtLrCngtYq69clIOwYkHBVGA+ RF9uBuXkaWX7Lqx9UoiEWxvueBYzlRmStNCkyC5qtR0LTBWXA0LNhxExX7IJEaIYak001jv0/Am CXHWxMrpo+bzagg== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 The 'backup' flag from mptcp_subflow_context structure is supposed to be set only when the other peer flagged a subflow as backup, not the opposite. Fixes: 067065422fcd ("mptcp: add the outgoing MP_PRIO support") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_netlink.c | 1 - 1 file changed, 1 deletion(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index f65831de5c1a..7635fac91539 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -471,7 +471,6 @@ static void __mptcp_pm_send_ack(struct mptcp_sock *msk,= struct mptcp_subflow_con slow =3D lock_sock_fast(ssk); if (prio) { subflow->send_mp_prio =3D 1; - subflow->backup =3D backup; subflow->request_bkup =3D backup; } =20 --=20 2.45.2 From nobody Mon Sep 16 19:11:32 2024 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 5FE2A6BFC0 for ; Tue, 16 Jul 2024 20:53: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=1721163207; cv=none; b=K47rex63eUxs7+XJBm2phY8K0LuayrE+vS8jOiC3HBw8jCDdqK3tLFynplv9FfkI1uiZmvop6ZL8v6R9yKD2LXmvmiCHBQiGOq4NnWHz3yhYxYNLUHkUzeOn8dg1+nvpYaLVs32TQ06gBMap04mgfnI27ZRZXMPOxy4IHCvGbBg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721163207; c=relaxed/simple; bh=3DozdXhaVIzx/Ieb6dDuffZMch1nXiGqG38mwTcBDMQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lQPC4A+I+HFiuB0avmW74lnczO+wnd8m7Ii4vRhIkh8NdC/VRAU2jd+oh3Fioxka8aKTuSRxHSUIclErl4UDjTvYlim3f6HY9Zt0p09YCSmn3/VNFEqKI4CugBypeqeja08YwZDuEASeM1oWRcG+F8lbIRd5xUtQ62oKXaeCtLw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fx5VaC8t; 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="fx5VaC8t" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A963BC4AF0C; Tue, 16 Jul 2024 20:53:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721163207; bh=3DozdXhaVIzx/Ieb6dDuffZMch1nXiGqG38mwTcBDMQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=fx5VaC8tI2r0FkKOth6H5Uo8LpdvO94S+1ZGc/qQH9zu5wBHEV2157A46DxXqjckD CIMwc7KqgNYBhved95sZrUTyGtBN3tM0qwg83ShrRWmJIjprItms02BD/MVq9zq/qr aPPtTbYW/J3Wf5aRYJN8eCOOojCYpTIVVgEiVtChM0KEJ9o4cDZbkMrTAUvcJTGefu NA+ah27gb+IpbaCLIsyvjDX8qoNEeiuCFL57sj51B8j4DJmV5TIzEMwBbG6o7mhMc3 k0vUzC9TFpwev1UezZHz7IkM2+WsjpbFPiXK5V+8jVO6oMaEoZ8Pi7OvHteZ7hJ44A tAIkoqGG0eL0Q== From: "Matthieu Baerts (NGI0)" Date: Tue, 16 Jul 2024 22:53:16 +0200 Subject: [PATCH mptcp-net v2 4/9] mptcp: mib: count MPJ with backup flag 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: <20240716-mptcp-backup-mpj-v2-4-4d50247405fb@kernel.org> References: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> In-Reply-To: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> To: mptcp@lists.linux.dev Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3094; i=matttbe@kernel.org; h=from:subject:message-id; bh=3DozdXhaVIzx/Ieb6dDuffZMch1nXiGqG38mwTcBDMQ=; b=kA0DAAgB9reCT0JpoHMByyZiAGaW3cGi14XigsHAhRV1/10vTWbVX8FbdjZKhJqstsA+GPfdT IkCMwQAAQgAHRYhBOjLhfdodwV6bif3eva3gk9CaaBzBQJmlt3BAAoJEPa3gk9CaaBzJJQP/jFM heYIf26rf/ZG+cevOozmJ4r24+7H5+sY0WYs04WIKuq+HFA+ksZqIRDH8v5JNkaD0qqu1VhHw1x eUn6UCnEuMQLqknTzU7gNR498e8ZC/Ie4o12GKChwq11v9sEv+1ejb64hSEe4dnN0CYK/odJmyn BlYvStBV0UVOaG1TtvIiuZxWA1gI8lzikPtraWmdR1BFc75HUtyR4VhHukiM7OQ8IlcOWVLohbk /noJDXZYS43l53t+lG8c6z1WYCQDnpy3ksQqXbG29+NH+hH64SH1V6Ax97s3QArm3zU9WOkz4bY my0S2qky/xhL6dwCAqmQyZvvA1J4riWd1QQ7GdTLgm6VkDnW+h3Y4KR1Gs7cs0lvvayY3ah/o7p XRxPU/apjW1mqoVEYnZqbs8nm3ycdcucSB7pR7yoaIZrObS86c7/5qjwaTqAfBDkrXyOuL9K6VS +obo+V7t2tegOBnLr/G1BmhOO2hcuOGo7JQhyF78PmN+XrD0yndqFNfp7YzsKEjnkcE/Tmlyoxo TRU66xD0txL4UNkHkSFXfX8qFJKf/GLQZ/9Qz2GySdY9BQ7edNdP6KbU6+9CGneDs8Znv2RQbOo 2Zg8HrXKfLRS/9mqYmqxQiwWuWKWwXj6PUuxGaynq2pGtmJiFXxGn9+q50eo55RoxjA+bXXE140 Fe+sG X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Without such counters, it is difficult to easily debug issues with MPJ not having the backup flags on production servers. This is not strictly a fix, but it eases to validate the following patch without requiring to take packet traces, to query ongoing connections with Netlink with admin permissions, or to guess by looking at the behaviour of the scheduler. Fixes: 4596a2c1b7f5 ("mptcp: allow creating non-backup subflows") Signed-off-by: Matthieu Baerts (NGI0) --- net/mptcp/mib.c | 2 ++ net/mptcp/mib.h | 2 ++ net/mptcp/subflow.c | 6 ++++++ 3 files changed, 10 insertions(+) diff --git a/net/mptcp/mib.c b/net/mptcp/mib.c index c30405e76833..7884217f33eb 100644 --- a/net/mptcp/mib.c +++ b/net/mptcp/mib.c @@ -19,7 +19,9 @@ static const struct snmp_mib mptcp_snmp_list[] =3D { SNMP_MIB_ITEM("MPTCPRetrans", MPTCP_MIB_RETRANSSEGS), SNMP_MIB_ITEM("MPJoinNoTokenFound", MPTCP_MIB_JOINNOTOKEN), SNMP_MIB_ITEM("MPJoinSynRx", MPTCP_MIB_JOINSYNRX), + SNMP_MIB_ITEM("MPJoinSynBackupRx", MPTCP_MIB_JOINSYNBACKUPRX), SNMP_MIB_ITEM("MPJoinSynAckRx", MPTCP_MIB_JOINSYNACKRX), + SNMP_MIB_ITEM("MPJoinSynAckBackupRx", MPTCP_MIB_JOINSYNACKBACKUPRX), SNMP_MIB_ITEM("MPJoinSynAckHMacFailure", MPTCP_MIB_JOINSYNACKMAC), SNMP_MIB_ITEM("MPJoinAckRx", MPTCP_MIB_JOINACKRX), SNMP_MIB_ITEM("MPJoinAckHMacFailure", MPTCP_MIB_JOINACKMAC), diff --git a/net/mptcp/mib.h b/net/mptcp/mib.h index 2704afd0dfe4..66aa67f49d03 100644 --- a/net/mptcp/mib.h +++ b/net/mptcp/mib.h @@ -14,7 +14,9 @@ enum linux_mptcp_mib_field { MPTCP_MIB_RETRANSSEGS, /* Segments retransmitted at the MPTCP-level */ MPTCP_MIB_JOINNOTOKEN, /* Received MP_JOIN but the token was not found */ MPTCP_MIB_JOINSYNRX, /* Received a SYN + MP_JOIN */ + MPTCP_MIB_JOINSYNBACKUPRX, /* Received a SYN + MP_JOIN + backup flag */ MPTCP_MIB_JOINSYNACKRX, /* Received a SYN/ACK + MP_JOIN */ + MPTCP_MIB_JOINSYNACKBACKUPRX, /* Received a SYN/ACK + MP_JOIN + backup fl= ag */ MPTCP_MIB_JOINSYNACKMAC, /* HMAC was wrong on SYN/ACK + MP_JOIN */ MPTCP_MIB_JOINACKRX, /* Received an ACK + MP_JOIN */ MPTCP_MIB_JOINACKMAC, /* HMAC was wrong on ACK + MP_JOIN */ diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index a3778aee4e77..be406197b1c4 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -168,6 +168,9 @@ static int subflow_check_req(struct request_sock *req, return 0; } else if (opt_mp_join) { SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_JOINSYNRX); + + if (mp_opt.backup) + SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_JOINSYNBACKUPRX); } =20 if (opt_mp_capable && listener->request_mptcp) { @@ -577,6 +580,9 @@ static void subflow_finish_connect(struct sock *sk, con= st struct sk_buff *skb) subflow->mp_join =3D 1; MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_JOINSYNACKRX); =20 + if (subflow->backup) + MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_JOINSYNACKBACKUPRX); + if (subflow_use_different_dport(msk, sk)) { pr_debug("synack inet_dport=3D%d %d", ntohs(inet_sk(sk)->inet_dport), --=20 2.45.2 From nobody Mon Sep 16 19:11:32 2024 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 A5F3A54F95 for ; Tue, 16 Jul 2024 20:53:28 +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=1721163208; cv=none; b=ZpBpHqTwI/HLB0khbMdDZjxGKW6aVHnZ2MhudTqbq2mYva4rpmco0l9NIdP5ux7eGsrDNUDQh9P7t1Ma0pF5xFP4AD6owL19jI2+fIXa/RVdSj5MaJRKUJMLnU1ZPreUa8QiBY6Yiib3wQ7deTc/68vlBqrbEJQtrKrVAJeGihU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721163208; c=relaxed/simple; bh=y+9lvgnvtgDRX5f09qLB3GnotikWJoKiqrQbcHj7jI0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ES59fREmQwH1kvS295mVWxpq01xUS9tU4+eS7l5OOEIZzLs4oKaj34dfZ5MBoR1CA/F8aEVXu+ycFl9mJRBRz16mWgjuJu5ZCWFBXL+Tc20RQvgcLDZiDbMVZwNHF+Wx+S3LTPJ2yAvDXh1D1qQ63v30sx+sruuSeUvkheLD/h0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QdeHd9x/; 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="QdeHd9x/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A81EDC116B1; Tue, 16 Jul 2024 20:53:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721163208; bh=y+9lvgnvtgDRX5f09qLB3GnotikWJoKiqrQbcHj7jI0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=QdeHd9x/kyjBbslr+qVQW9PnOa2ouUsegJPN8KswdueK1xpHIpR29rAdIT1wM2PW5 Pn1FOgWwbnEbM6NMh4IKuAFt+pxMCQYIwueNbz2fqKRwIykquiuYrXLuyeRIFhfEbU Lg2slANkV9sz9a56WANbrSJwg0nvlOA5wY0epWMzzphbuBVpWO/eqqkUsO8V0Rqz7u mZlSty8zeaUNsItl6iNirbhqGhf0f+xmWCegOmgBgTC29uNcYYS401YH5YCxKMwbTP XR02/9p1I/6AWVUoB+AIWQjnqUBYIIawkYVOKh0AFBMGtI+wytAmkI3OJmj49SSz/A LZuYXY6MbN9Ew== From: "Matthieu Baerts (NGI0)" Date: Tue, 16 Jul 2024 22:53:17 +0200 Subject: [PATCH mptcp-net v2 5/9] selftests: mptcp: join: validate backup in MPJ 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: <20240716-mptcp-backup-mpj-v2-5-4d50247405fb@kernel.org> References: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> In-Reply-To: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> To: mptcp@lists.linux.dev Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=4145; i=matttbe@kernel.org; h=from:subject:message-id; bh=y+9lvgnvtgDRX5f09qLB3GnotikWJoKiqrQbcHj7jI0=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlt3BXTz7xAsW8qIvWi4/9qXWkYB83YPQ2z1yJ NXoqKmjwzeJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpbdwQAKCRD2t4JPQmmg c8PrD/0fs4N3byEv6+QnTmcTZE4M8QD1TW6YuBi+xBATrUqsfVU9jlb4nsmsI0SPvbcqjv/ljNh XEGktOD+UTqXlq7+Mup+OWZY0y0avBn8OLdfHsT5bTllCb+wCmhjNdMdxVPlAkpKRgkWSsY11bI NvqOV7qkEseTFrOXPsnczRlNt3EDTkh5oIRKbNikcahSsSTHbtWwXVH7mH+g7to++fsfENLYgmC +JQRzLtWNWRXz5+wWDj7ajg6a5nv1tf9x97jM1fwFJMt2BL3h3fyIlf4XpYCZVWukYI2LwaKpG8 vb6dvODq5z2XjLbyCraM+6j4D/MqCDYj256bJis5dB6q8Gv2kl+XvJIX4vNhKvz4ViLz0s68MMq f8rVHhJ/ClbCHpW6OIUdG6I9jRcL4GelKI5BfTuFzEy39mLLnCyM59Te/owYgrIc+1dBpthW165 XdGPDYCj05DRg2kxnnDgB4tbMFptoGJHsyFOxoA2uqBBjbWUmFTljLinS37i4YVSIvIdvl4wYAj Gz1SrczWewuKjHljflmIY7f/+C5NY0ErzERCSr8pIQE3oeWdeehPnoQSiVuA7/gxh7iQ/pf+EXg zxhbbNvdgf1+h3ObBc6v9x2nGCtQqQSP2HPnTXCqdcYm9B3MQuLMeS6p6qIgS/JkTe7khhY7EIM UIlKQ9qMwOVJSfA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 A peer can notify the other one that a subflow has to be treated as "backup" by two different ways: either by sending a dedicated MP_PRIO notification, or by setting the backup flag in the MP_JOIN handshake. The selftests were previously monitoring the former, but not the latter. This is what is now done here by looking at these new MIB counters when validating the 'backup' cases: MPTcpExtMPJoinSynBackupRx MPTcpExtMPJoinSynAckBackupRx The 'Fixes' tag here below is the same as the one from the previous commit: this patch here is not fixing anything wrong in the selftests, but it will help to validate a new fix for an issue introduced by this commit ID. Fixes: 4596a2c1b7f5 ("mptcp: allow creating non-backup subflows") Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 42 +++++++++++++++++++--= ---- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 55d84a1bde15..175127a9c00c 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -1634,6 +1634,8 @@ chk_prio_nr() { local mp_prio_nr_tx=3D$1 local mp_prio_nr_rx=3D$2 + local mpj_syn=3D$3 + local mpj_syn_ack=3D$4 local count =20 print_check "ptx" @@ -1655,6 +1657,26 @@ chk_prio_nr() else print_ok fi + + print_check "syn backup" + count=3D$(mptcp_lib_get_counter ${ns1} "MPTcpExtMPJoinSynBackupRx") + if [ -z "$count" ]; then + print_skip + elif [ "$count" !=3D "$mpj_syn" ]; then + fail_test "got $count MPJ SYN[s] with Backup expected $mpj_syn" + else + print_ok + fi + + print_check "synack backup" + count=3D$(mptcp_lib_get_counter ${ns2} "MPTcpExtMPJoinSynAckBackupRx") + if [ -z "$count" ]; then + print_skip + elif [ "$count" !=3D "$mpj_syn_ack" ]; then + fail_test "got $count MPJ SYNACK[s] with Backup expected $mpj_syn_ack" + else + print_ok + fi } =20 chk_subflow_nr() @@ -2612,7 +2634,7 @@ backup_tests() sflags=3Dnobackup speed=3Dslow \ run_tests $ns1 $ns2 10.0.1.1 chk_join_nr 1 1 1 - chk_prio_nr 0 1 + chk_prio_nr 0 1 1 0 fi =20 # single address, backup @@ -2625,7 +2647,7 @@ backup_tests() run_tests $ns1 $ns2 10.0.1.1 chk_join_nr 1 1 1 chk_add_nr 1 1 - chk_prio_nr 1 1 + chk_prio_nr 1 1 0 0 fi =20 # single address with port, backup @@ -2638,7 +2660,7 @@ backup_tests() run_tests $ns1 $ns2 10.0.1.1 chk_join_nr 1 1 1 chk_add_nr 1 1 - chk_prio_nr 1 1 + chk_prio_nr 1 1 0 0 fi =20 if reset "mpc backup" && @@ -2647,7 +2669,7 @@ backup_tests() speed=3Dslow \ run_tests $ns1 $ns2 10.0.1.1 chk_join_nr 0 0 0 - chk_prio_nr 0 1 + chk_prio_nr 0 1 0 0 fi =20 if reset "mpc backup both sides" && @@ -2657,7 +2679,7 @@ backup_tests() speed=3Dslow \ run_tests $ns1 $ns2 10.0.1.1 chk_join_nr 0 0 0 - chk_prio_nr 1 1 + chk_prio_nr 1 1 0 0 fi =20 if reset "mpc switch to backup" && @@ -2666,7 +2688,7 @@ backup_tests() sflags=3Dbackup speed=3Dslow \ run_tests $ns1 $ns2 10.0.1.1 chk_join_nr 0 0 0 - chk_prio_nr 0 1 + chk_prio_nr 0 1 0 0 fi =20 if reset "mpc switch to backup both sides" && @@ -2676,7 +2698,7 @@ backup_tests() sflags=3Dbackup speed=3Dslow \ run_tests $ns1 $ns2 10.0.1.1 chk_join_nr 0 0 0 - chk_prio_nr 1 1 + chk_prio_nr 1 1 0 0 fi } =20 @@ -3053,7 +3075,7 @@ fullmesh_tests() addr_nr_ns2=3D1 sflags=3Dbackup,fullmesh speed=3Dslow \ run_tests $ns1 $ns2 10.0.1.1 chk_join_nr 2 2 2 - chk_prio_nr 0 1 + chk_prio_nr 0 1 1 0 chk_rm_nr 0 1 fi =20 @@ -3066,7 +3088,7 @@ fullmesh_tests() sflags=3Dnobackup,nofullmesh speed=3Dslow \ run_tests $ns1 $ns2 10.0.1.1 chk_join_nr 2 2 2 - chk_prio_nr 0 1 + chk_prio_nr 0 1 1 0 chk_rm_nr 0 1 fi } @@ -3318,7 +3340,7 @@ userspace_tests() sflags=3Dbackup speed=3Dslow \ run_tests $ns1 $ns2 10.0.1.1 chk_join_nr 1 1 0 - chk_prio_nr 0 0 + chk_prio_nr 0 0 0 0 fi =20 # userspace pm type prevents rm_addr --=20 2.45.2 From nobody Mon Sep 16 19:11:32 2024 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 9B3A06BFC0 for ; Tue, 16 Jul 2024 20:53:29 +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=1721163209; cv=none; b=BEu+nOgZP4TSRQovKUkNZSjkrt85iy2irom40405OTSa/epKmCUP3rUvCMiixSVDi0wsAwJ29k2TQwzT1S/NYY19ye3ESlBaP6I7NlXhoKHrv3QuUabPZ+6rwyxNmrTo8uBxYYX+b0qhfiF7ixxKKsL3j9rtm+TpEVeO5EBKJj0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721163209; c=relaxed/simple; bh=gBK2JdnwdsBPpyEW31JDq9vWPONErvqy6/WDuyAgm3E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gldsBgQ691kv3nS0SQ4vKqpuRl2KLD1wbOusUNs9MhM5ahiKn23wfvdL10AJortgbo93jLv8va2fRUlUw6V1HWc3d5zYPpjOneZ2WK4aKQrWh0CcwNaigthL3spnyZektYgr8CBejND6fGqSxeXYfLGTF3ZEHlZ79z1/e48orlw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PE/leZQ2; 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="PE/leZQ2" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A65CDC4AF0E; Tue, 16 Jul 2024 20:53:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721163209; bh=gBK2JdnwdsBPpyEW31JDq9vWPONErvqy6/WDuyAgm3E=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=PE/leZQ2GjSRHO6D1dRbQ0gCbw4BHmYxOMYhu96kfEmNE1sutQmjXSLeh7KRyeC16 WTHwDveJljjLygKMtLKitfUuaKIH47bvE1+w98YyghxiZbsbYwC4WVctZYLunLTJn+ XbxeN6qCzAHCOx92pWcs3Szmo4GXcLNP7MdCZp2J6WncmNuYRAvSQWF/GGqf05FTaa 3Hk/IpWvzy97c+i649pTYPBd+U78QJRsclPLyrNcjXagvFzIWuv3laXjQ2Y/5zqAt7 g3SvtKrE5LL83ocYd2fUD9+Qf671/O4561TNYCvgWpVDhkUd+Kw4fEfM+d9FEO6mxN OimmejBaBIlow== From: "Matthieu Baerts (NGI0)" Date: Tue, 16 Jul 2024 22:53:18 +0200 Subject: [PATCH mptcp-net v2 6/9] mptcp: pm: fix backup support in signal 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: <20240716-mptcp-backup-mpj-v2-6-4d50247405fb@kernel.org> References: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> In-Reply-To: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> To: mptcp@lists.linux.dev Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=9760; i=matttbe@kernel.org; h=from:subject:message-id; bh=gBK2JdnwdsBPpyEW31JDq9vWPONErvqy6/WDuyAgm3E=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlt3BKn4bAjifVUKBrQKM6FbdpWv+5516r7xZS UqyXvqV2e+JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpbdwQAKCRD2t4JPQmmg c1ljEACsI3YrfXKki4Vh555HqZGd9WNJ7zU9Xh26p8ljBqnA+sBb/j3NCtIyrU+WAcy7JaqGGkE TI/eAr4HGjuMcfifAWLgtUcm6P2aftabPi7N87ykjYaePH75Z2q/XO163xsMBTacAilF+1DJKBm 3OMN+PH6m7mN6+1ktM/Md37N/3U6nLuFUdX/BZndjrsIwUUBJHVF1IqcSmM2d2nSKibmsRXPxzQ n4yD/bSNLn0qCPYPoGFGI/gJAoHwDBQxs0XNV/vybqxyN2sjD8ML+xjbUzUpg36BL8xlk9WsJyv Wu0nLANFFk9Z0sXYlifRbwDYVr0hpHnu2GrjQL3FaDAfeFkTg3Z55cgmCId2BGAdxLFlY3nk7s2 CoRwJQT0/RExiltz+HkXRdksFN3jSf8fZ6fiUgOLU7CKNWFbDScNsF7FBT5IGXnqp/hjM1hAQEM 57OJUl/u9cNnNhlDZPkLGAqds8/aCSgezfjee87/uxVDA6+5v0jdpF2d1bW7TDiYNyH+nviY649 JXLNbJWMiS9GYjfnlt/Jhzu+/mA53x3gdQiny4/BqphQNZgA1UaVcudLajzjbUklWIzwZ/LY1pb D/lXhuoPceMmlKqegn5EsRhFAx60lpGqo3eIVY7nDEZDFxpeuolvIjZLSvqGjDd6fHTmyHio+1D qPBID2reZjHfQWA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 There was a support for signal endpoints, but only when the endpoint's flag was changed during a connection. If an endpoint with the signal and backup was already present, the MP_JOIN reply was not containing the backup flag as expected. That's confusing to have this inconsistent behaviour. On the other hand, the infrastructure to set the backup flag in the SYN + ACK + MP_JOIN was already there, it was just never set before. Now when requesting the local ID from the path-manager, the backup status is also requested. There is a special case for the ID0: the PM has to return this ID0 if the local address of the initial subflow is being used, and not the ID of the related endpoint. Still, it is required to look at the different endpoints to find if one has been defined for this address with the backup flag. Note that when the userspace PM is used, the backup flag can be set if the local address was already used before with a backup flag, e.g. if the address was announced with the 'backup' flag, or a subflow was created with the 'backup' flag. Fixes: 4596a2c1b7f5 ("mptcp: allow creating non-backup subflows") Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/507 Signed-off-by: Matthieu Baerts (NGI0) --- Notes: - v2: - Only set *backup on success (Mat). - Support MPJ to/from ID0 with backup. - Split the tests in a new dedicated commit to ease the backports. --- net/mptcp/pm.c | 15 +++++++++++---- net/mptcp/pm_netlink.c | 23 ++++++++++++++++++++++- net/mptcp/pm_userspace.c | 25 +++++++++++++++++++++++-- net/mptcp/protocol.h | 11 ++++++++--- net/mptcp/subflow.c | 9 +++++++-- 5 files changed, 71 insertions(+), 12 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 55406720c607..359738b8826e 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -405,7 +405,8 @@ bool mptcp_pm_rm_addr_signal(struct mptcp_sock *msk, un= signed int remaining, return ret; } =20 -int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc) +int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc, + bool *backup) { struct mptcp_addr_info skc_local; struct mptcp_addr_info msk_local; @@ -418,12 +419,18 @@ int mptcp_pm_get_local_id(struct mptcp_sock *msk, str= uct sock_common *skc) */ mptcp_local_address((struct sock_common *)msk, &msk_local); mptcp_local_address((struct sock_common *)skc, &skc_local); - if (mptcp_addresses_equal(&msk_local, &skc_local, false)) + if (mptcp_addresses_equal(&msk_local, &skc_local, false)) { + if (mptcp_pm_is_userspace(msk)) + *backup =3D mptcp_userspace_pm_is_backup(msk, &skc_local); + else + *backup =3D mptcp_pm_nl_is_backup(msk, &skc_local); + return 0; + } =20 if (mptcp_pm_is_userspace(msk)) - return mptcp_userspace_pm_get_local_id(msk, &skc_local); - return mptcp_pm_nl_get_local_id(msk, &skc_local); + return mptcp_userspace_pm_get_local_id(msk, &skc_local, backup); + return mptcp_pm_nl_get_local_id(msk, &skc_local, backup); } =20 int mptcp_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsigned = int id, diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 7635fac91539..796800a7fe96 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1064,7 +1064,8 @@ static int mptcp_pm_nl_create_listen_socket(struct so= ck *sk, return err; } =20 -int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct mptcp_addr_inf= o *skc) +int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct mptcp_addr_inf= o *skc, + bool *backup) { struct mptcp_pm_addr_entry *entry; struct pm_nl_pernet *pernet; @@ -1076,6 +1077,7 @@ int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, = struct mptcp_addr_info *skc list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) { if (mptcp_addresses_equal(&entry->addr, skc, entry->addr.port)) { ret =3D entry->addr.id; + *backup =3D !!(entry->flags & MPTCP_PM_ADDR_FLAG_BACKUP); break; } } @@ -1094,6 +1096,7 @@ int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, = struct mptcp_addr_info *skc entry->ifindex =3D 0; entry->flags =3D MPTCP_PM_ADDR_FLAG_IMPLICIT; entry->lsk =3D NULL; + *backup =3D false; ret =3D mptcp_pm_nl_append_new_local_addr(pernet, entry, true); if (ret < 0) kfree(entry); @@ -1101,6 +1104,24 @@ int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk,= struct mptcp_addr_info *skc return ret; } =20 +bool mptcp_pm_nl_is_backup(struct mptcp_sock *msk, struct mptcp_addr_info = *skc) +{ + struct pm_nl_pernet *pernet =3D pm_nl_get_pernet_from_msk(msk); + struct mptcp_pm_addr_entry *entry; + bool backup =3D false; + + rcu_read_lock(); + list_for_each_entry_rcu(entry, &pernet->local_addr_list, list) { + if (mptcp_addresses_equal(&entry->addr, skc, entry->addr.port)) { + backup =3D !!(entry->flags & MPTCP_PM_ADDR_FLAG_BACKUP); + break; + } + } + rcu_read_unlock(); + + return backup; +} + #define MPTCP_PM_CMD_GRP_OFFSET 0 #define MPTCP_PM_EV_GRP_OFFSET 1 =20 diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index f0a4590506c6..4e3829f96c88 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -137,7 +137,7 @@ int mptcp_userspace_pm_get_flags_and_ifindex_by_id(stru= ct mptcp_sock *msk, } =20 int mptcp_userspace_pm_get_local_id(struct mptcp_sock *msk, - struct mptcp_addr_info *skc) + struct mptcp_addr_info *skc, bool *backup) { struct mptcp_pm_addr_entry *entry =3D NULL, *e, new_entry; __be16 msk_sport =3D ((struct inet_sock *) @@ -151,13 +151,16 @@ int mptcp_userspace_pm_get_local_id(struct mptcp_sock= *msk, } } spin_unlock_bh(&msk->pm.lock); - if (entry) + if (entry) { + *backup =3D !!(entry->flags & MPTCP_PM_ADDR_FLAG_BACKUP); return entry->addr.id; + } =20 memset(&new_entry, 0, sizeof(struct mptcp_pm_addr_entry)); new_entry.addr =3D *skc; new_entry.addr.id =3D 0; new_entry.flags =3D MPTCP_PM_ADDR_FLAG_IMPLICIT; + *backup =3D false; =20 if (new_entry.addr.port =3D=3D msk_sport) new_entry.addr.port =3D 0; @@ -165,6 +168,24 @@ int mptcp_userspace_pm_get_local_id(struct mptcp_sock = *msk, return mptcp_userspace_pm_append_new_local_addr(msk, &new_entry, true); } =20 +bool mptcp_userspace_pm_is_backup(struct mptcp_sock *msk, + struct mptcp_addr_info *skc) +{ + struct mptcp_pm_addr_entry *entry; + bool backup =3D false; + + spin_lock_bh(&msk->pm.lock); + list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) { + if (mptcp_addresses_equal(&entry->addr, skc, false)) { + backup =3D !!(entry->flags & MPTCP_PM_ADDR_FLAG_BACKUP); + break; + } + } + spin_unlock_bh(&msk->pm.lock); + + return backup; +} + int mptcp_pm_nl_announce_doit(struct sk_buff *skb, struct genl_info *info) { struct nlattr *token =3D info->attrs[MPTCP_PM_ATTR_TOKEN]; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 6b6b76152db5..e6cc7111f843 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1111,9 +1111,14 @@ bool mptcp_pm_add_addr_signal(struct mptcp_sock *msk= , const struct sk_buff *skb, bool *drop_other_suboptions); bool mptcp_pm_rm_addr_signal(struct mptcp_sock *msk, unsigned int remainin= g, struct mptcp_rm_list *rm_list); -int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc); -int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct mptcp_addr_inf= o *skc); -int mptcp_userspace_pm_get_local_id(struct mptcp_sock *msk, struct mptcp_a= ddr_info *skc); +int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc, + bool *backup); +int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct mptcp_addr_inf= o *skc, + bool *backup); +int mptcp_userspace_pm_get_local_id(struct mptcp_sock *msk, struct mptcp_a= ddr_info *skc, + bool *backup); +bool mptcp_pm_nl_is_backup(struct mptcp_sock *msk, struct mptcp_addr_info = *skc); +bool mptcp_userspace_pm_is_backup(struct mptcp_sock *msk, struct mptcp_add= r_info *skc); int mptcp_pm_dump_addr(struct sk_buff *msg, struct netlink_callback *cb); int mptcp_pm_nl_dump_addr(struct sk_buff *msg, struct netlink_callback *cb); diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index be406197b1c4..e60ba0327e4d 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -87,6 +87,7 @@ static struct mptcp_sock *subflow_token_join_request(stru= ct request_sock *req) struct mptcp_subflow_request_sock *subflow_req =3D mptcp_subflow_rsk(req); struct mptcp_sock *msk; int local_id; + bool backup; =20 msk =3D mptcp_token_get_sock(sock_net(req_to_sk(req)), subflow_req->token= ); if (!msk) { @@ -94,12 +95,13 @@ static struct mptcp_sock *subflow_token_join_request(st= ruct request_sock *req) return NULL; } =20 - local_id =3D mptcp_pm_get_local_id(msk, (struct sock_common *)req); + local_id =3D mptcp_pm_get_local_id(msk, (struct sock_common *)req, &backu= p); if (local_id < 0) { sock_put((struct sock *)msk); return NULL; } subflow_req->local_id =3D local_id; + subflow_req->request_bkup =3D backup; =20 return msk; } @@ -610,16 +612,19 @@ static int subflow_chk_local_id(struct sock *sk) { struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(sk); struct mptcp_sock *msk =3D mptcp_sk(subflow->conn); + bool backup; int err; =20 if (likely(subflow->local_id >=3D 0)) return 0; =20 - err =3D mptcp_pm_get_local_id(msk, (struct sock_common *)sk); + err =3D mptcp_pm_get_local_id(msk, (struct sock_common *)sk, &backup); if (err < 0) return err; =20 subflow_set_local_id(subflow, err); + subflow->request_bkup =3D backup; + return 0; } =20 --=20 2.45.2 From nobody Mon Sep 16 19:11:32 2024 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 9E4DE55887 for ; Tue, 16 Jul 2024 20:53:30 +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=1721163211; cv=none; b=MatxfhWavr7mkOUENPh/Yewju6bdXKAURq+FkchewNsFulkxpn2s2XWdbONFXbrrjWddJ0oqdR3i4u6qMOEf27BcfpyxgsZ1rH4y69nmEubcZ95ftIIKaLre9vXVPs4FGsD9t6Y+mN/Ot5JwwA/yOAVW9xoT5lsrlqHDHpd7v9I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721163211; c=relaxed/simple; bh=DZxSJViIqyjyo0gMt0iGjDdwjMEXDiS//iIfTEQ4RIg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AcOIC5PRqSi0NcjMM2rnp6cMvzs0cjogN/P51/qE0RuDmTKMLDW0mIrOKB5sjHoVYKOXbkhWbtkmjGVmUx0Kk9NHiadzFwsOc62Del64eyQywgkJK0v0F0x2lDl2MAvsi0J9/tYgdpQ/O2865ZpcyZfsn8A25REtQ/x/rc5EoUI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=pRfDUbWh; 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="pRfDUbWh" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A6B42C116B1; Tue, 16 Jul 2024 20:53:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721163210; bh=DZxSJViIqyjyo0gMt0iGjDdwjMEXDiS//iIfTEQ4RIg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=pRfDUbWhHhZ2m9K+rseDlrbD5NJkat3muuKUnp7ceKD+FMDShPdqpuVB1T8dcIYK9 pyEDhXvXhyEqxsnjlRY7Bc/gkvbbk7VV51MX1/9HeE8gWEv11hnBXevdoiEUA0/Zxi XcL0Rg+WDh4puSYzkE099DqKC1Fnl9nuXrGVQQP5Fwvm7d3bOn3WbHCRvchxVqaggp Shg2xKOAM3jf4tK97efFwU3EAtvc8XhTzpTqHJMg7a5HXCtJ6TABKLHybVP5K0Voap KeCtRl2DNnAWiVSdglL13EpPB6Jz1RsDJpy87InOocfGmSXsdiT4yhbwlxhNUBiIhK umVbj2r2n5LqQ== From: "Matthieu Baerts (NGI0)" Date: Tue, 16 Jul 2024 22:53:19 +0200 Subject: [PATCH mptcp-net v2 7/9] selftests: mptcp: join: check backup support in signal endp 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: <20240716-mptcp-backup-mpj-v2-7-4d50247405fb@kernel.org> References: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> In-Reply-To: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> To: mptcp@lists.linux.dev Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3753; i=matttbe@kernel.org; h=from:subject:message-id; bh=DZxSJViIqyjyo0gMt0iGjDdwjMEXDiS//iIfTEQ4RIg=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlt3B6VBCPaj3k9MxGFTUi5/QkrjjDFsxceF/9 bQVijQg9WaJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpbdwQAKCRD2t4JPQmmg cyPDEACzLMqg9oS36ZBwvfL/Vq5mfoDDdyQxtQbxiG5a6ZQpqX7F8+DuJ1cG9G2r6u2wMnuI8/t A+IMlCV9aJFYRfteLW87xtYRyN2E7SHRSAGqKroPTLD50Usi02+csoQQ4bGEqwRG6idUP2HFJUO oZ6SCEvJJfLCwhIKnMFOjhhzb5PHKs4r+L9kWXtbnxfjxMuDWLEd92WDV+t4Ez8nku3woO1zrt5 wDktgzb9zEnksUFCPzuH2VVzfjGakpsneMzh9NSgHp9ai5G9y0W4vOSLnKwXEMSMProQD7I0s6S s7AZhMa6mPvKxiqOrrM8BeQb4hTNhI6Et0EsgEsf/XSX3J43/uo5+qPrFeGM8ADzpZmqV2mGhxv 7rMgRuBCcKPgAog+QvqFplIg8LJlWclGDaOhRRk5PB14E4L0OyK2wb7fPepPRipEWqQV3Yd7fmI PaGXWDuiVufaIccJfUi4jhBngTc6C4m9gll7OLCN7rybsq1NGQqYSvdH78xdNben172+eVM4+zX ABXLyFhfV87Bc1QM7RuxbQWU2EkwTsZ29tYn1VIrtfs70B6MLmRlDOvCEQk6927d88+zXr7xttR FN1J42mQSGpvZ7Hyi19kk1LiF0IGgoNY1EWkpY+FXTXaL1KIlO4NEiXaD3nbKYZNftBsYfFV2rm ELCjmhDFwJ+3+pw== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Before the previous commit, 'signal' endpoints with the 'backup' flag were ignored when sending the MP_JOIN. The MPTCP Join selftest has then been modified to validate this case: the "single address, backup" test, is now validating the MP_JOIN with a backup flag as it is what we expect it to do with such name. The previous version has been kept, but renamed to "single address, switch to backup" to avoid confusions. The "single address with port, backup" test is also now validating the MPJ with a backup flag, which makes more sense than checking the switch to backup with an MP_PRIO. The "mpc backup both sides" test is now validating that the backup flag is also set in MP_JOIN from and to the addresses used in the initial subflow, using the special ID 0. The 'Fixes' tag here below is the same as the one from the previous commit: this patch here is not fixing anything wrong in the selftests, but it validates the previous fix for an issue introduced by this commit ID. Fixes: 4596a2c1b7f5 ("mptcp: allow creating non-backup subflows") Signed-off-by: Matthieu Baerts (NGI0) --- Notes: - v2: - Also validating MPJ to/from ID0 with backup --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 34 ++++++++++++++++++++-= ---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 175127a9c00c..ffcf558b4610 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -2639,6 +2639,19 @@ backup_tests() =20 # single address, backup if reset "single address, backup" && + continue_if mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then + pm_nl_set_limits $ns1 0 1 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal,backup + pm_nl_set_limits $ns2 1 1 + sflags=3Dnobackup speed=3Dslow \ + run_tests $ns1 $ns2 10.0.1.1 + chk_join_nr 1 1 1 + chk_add_nr 1 1 + chk_prio_nr 1 0 0 1 + fi + + # single address, switch to backup + if reset "single address, switch to backup" && continue_if mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then pm_nl_set_limits $ns1 0 1 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal @@ -2654,13 +2667,13 @@ backup_tests() if reset "single address with port, backup" && continue_if mptcp_lib_kallsyms_has "subflow_rebuild_header$"; then pm_nl_set_limits $ns1 0 1 - pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal,backup port 10100 pm_nl_set_limits $ns2 1 1 - sflags=3Dbackup speed=3Dslow \ + sflags=3Dnobackup speed=3Dslow \ run_tests $ns1 $ns2 10.0.1.1 chk_join_nr 1 1 1 chk_add_nr 1 1 - chk_prio_nr 1 1 0 0 + chk_prio_nr 1 0 0 1 fi =20 if reset "mpc backup" && @@ -2674,12 +2687,21 @@ backup_tests() =20 if reset "mpc backup both sides" && continue_if mptcp_lib_kallsyms_doesnt_have "T mptcp_subflow_send_ack$"= ; then - pm_nl_add_endpoint $ns1 10.0.1.1 flags subflow,backup + pm_nl_set_limits $ns1 0 2 + pm_nl_set_limits $ns2 1 2 + pm_nl_add_endpoint $ns1 10.0.1.1 flags signal,backup pm_nl_add_endpoint $ns2 10.0.1.2 flags subflow,backup + + # 10.0.2.2 (non-backup) -> 10.0.1.1 (backup) + pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow + # 10.0.1.2 (backup) -> 10.0.2.1 (non-backup) + pm_nl_add_endpoint $ns1 10.0.2.1 flags signal + ip -net "$ns2" route add 10.0.2.1 via 10.0.1.1 dev ns2eth1 # force this = path + speed=3Dslow \ run_tests $ns1 $ns2 10.0.1.1 - chk_join_nr 0 0 0 - chk_prio_nr 1 1 0 0 + chk_join_nr 2 2 2 + chk_prio_nr 1 1 1 1 fi =20 if reset "mpc switch to backup" && --=20 2.45.2 From nobody Mon Sep 16 19:11:32 2024 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 512F154F95 for ; Tue, 16 Jul 2024 20:53:31 +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=1721163211; cv=none; b=EZa+PmByR0ZoMOpfo6kQR5+oiSATs6aZTJR/honY6ebqHQIdfq9cbmEzKxMKEESAOCM+JClkCukl96HhZARta+U/CkXW/gXwzh4SIDwb8hYJcWiFAsXv2mojRD6oAtB9N25zHFxeoPkhs5LAW/xLX5XkqYPrX9dBo+DnDP2jSg8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721163211; c=relaxed/simple; bh=o6LlgxvdIEwLce8tmc9hgvLbwZq89r/BeJFILy0OplY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MRBaahZFxLPXGn627VgIXAFp9BfANm1j/8hrLfOKEEklA9ETFn6iABQGnzdVC4OAxzVOQP2nxmVUiBR/MoDeFn3p/0aE1oODissC7ii9XYZ1u28B74T3RAnKOK8awg5zvx/I/EUOgKyE+aK+UiEqE3/hgIgVekIPT/y/dA4gK4s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=L01a8f0O; 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="L01a8f0O" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A469FC4AF0D; Tue, 16 Jul 2024 20:53:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721163211; bh=o6LlgxvdIEwLce8tmc9hgvLbwZq89r/BeJFILy0OplY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=L01a8f0O0noAbqWTOC/DiViGdu1crgsbZydNuWrV7x1ZPUlTprBWRVR4bZunOe+mT oW7LkAYBcjx/iDBSR80GiYYaM3ID5Cffw/XJ6ayk/KaQv8whXl2ifGf/IUVO9iLPaN JvOzTNWVDEMbZjUNASNVf1HFX7SR29ZaOcV87s1Yp8Wvx0qrIK9tWIlxymgPSHbD6t hIRWl5HknKsZ4LNrTkAyPKmxFWif87CONimQeAKjVq42vgm+0Q9YuouGKoX8jj5ydf sPIiDNqo+54wzsY6/DvK7iufqsh7rlhTCKsH0VtkOJiYx7GvtteEdEwU0V/YypjHlM sEq9Jizr3f3AQ== From: "Matthieu Baerts (NGI0)" Date: Tue, 16 Jul 2024 22:53:20 +0200 Subject: [PATCH mptcp-net v2 8/9] Squash to "selftests/bpf: Add bpf_bkup scheduler & 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: <20240716-mptcp-backup-mpj-v2-8-4d50247405fb@kernel.org> References: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> In-Reply-To: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> To: mptcp@lists.linux.dev Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=973; i=matttbe@kernel.org; h=from:subject:message-id; bh=o6LlgxvdIEwLce8tmc9hgvLbwZq89r/BeJFILy0OplY=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlt3BUS6puVxNHHc4vdlsizNScgtQLNIB+cETv U2kTSkwLpKJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpbdwQAKCRD2t4JPQmmg cyN+EACa49qIxYVm3t+5jxhWLuO6Ulef/h3rqKAay6xukdAA6oelTPGHQFWcu9qieClfbaQ/Z8h u3x9fYX0t3fcKtjvMUzrkdMIaWuMg5RzCAHzqviUB2VlBJoh4fOQZeN59Nb2WwqSk9aIAmqIfBg Ki4h6nlo/ZERMqLoTxcgf4eNvBPBWR60/4BmJM0uuWnjMM256tB7JZOZELkvh5xjMsL45HTdP8I 3PyMnqNQF7jqF7YgriI+lj0o/FW6Nw8aGxki9SMZCfDo7SZZmSGF+1w+p1mlQcaRxalVREDSanT yxGTIv9pVsvv2GTUpHgQIW6JZIJn5KlAJtjJJU7opSCvJcpp7UcV4yJxy4cK9l3TsVVnlyUbnkz dkE3ec4yusWYiKTdNYwyV2mF+stVV88lerxTYQhLRATHaO4ZYtDdfMDrQ2x3aBHA9TNTDRYSZZQ jW9/tDIi/nYDVqYKdkl0yFct3r5dA/B9hmUsnmVh3yQZkKIOxsv9/RTyg/ZGMXzYf4NZBcy0RZD Y/EjuETTtXURmL3N9BD8sNMy+M2urFBTHd/Kv2r38pq3PHY9qkptbjAHfwPGXEVhBXbJk1Zs4Sl eELhV6PULccxcNZzhlmLDpOg10Qil4Wq/Em8AtClOWy6fqw2DTi99yMWcplsB6yrwvybz61FHev XGoJ0G81ikGBS9Q== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Similar to "mptcp: sched: check both directions for backup": it didn't matter before because the two flags were very likely set by accident. But that's no longer the case now. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/bpf/progs/mptcp_bpf_bkup.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_bkup.c b/tools/tes= ting/selftests/bpf/progs/mptcp_bpf_bkup.c index 14091bcc4cde..296f0318d843 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_bkup.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_bkup.c @@ -29,7 +29,8 @@ int BPF_PROG(bpf_bkup_get_subflow, struct mptcp_sock *msk, if (!subflow) break; =20 - if (!BPF_CORE_READ_BITFIELD_PROBED(subflow, backup)) { + if (!BPF_CORE_READ_BITFIELD_PROBED(subflow, backup) || + !BPF_CORE_READ_BITFIELD_PROBED(subflow, request_bkup)) { nr =3D i; break; } --=20 2.45.2 From nobody Mon Sep 16 19:11:32 2024 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 B44CD55887 for ; Tue, 16 Jul 2024 20:53:32 +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=1721163212; cv=none; b=WzGhW86XwqA8Cf2C90Gry4V0WKLFZQehYLBjHu8mPLc/xUItGHvxe7SCpcUqc3dG0zmD+S4zJWRe3aaUDfla6WlUOSArRmztYz57IPV0eoYrEqRztfKO/KSFXxJghnLBFrNtxgGgDvkkGgDZGgX4QAdYubpZ7siNkS2NlXigvM8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721163212; c=relaxed/simple; bh=Fn73rImpeWC8EQqc9FknandKAe95OLv5q72DUryxtME=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=spbveAfWDRo/0ZT+wDKqShYG4btoizky3QKCgZE1opFSp7oQVEImzpxTSeJDI0L23vPP9PmoTY8iL8olAaRTalbga2PQo9PMHYVXuZexPfS/U/NGAt98N5wjobWt7G75zAaMuw3WWST0t5Tyl1ilpTmHT3RdTWqOTnWXVhLGyeI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OgPaqhUI; 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="OgPaqhUI" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A0110C4AF0C; Tue, 16 Jul 2024 20:53:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721163212; bh=Fn73rImpeWC8EQqc9FknandKAe95OLv5q72DUryxtME=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=OgPaqhUIUsNtWQ8M8WPKdZVO6bDPdTEojQmRGWhFAT+JjCNPW5Bj4jJIzukisiR5+ CqTcG6yBHfllLCzb796+UdJ0jolzl9FzKPZbnN/FBPzL9wRGx2f3pzOG57PuJqO6ut qo3X8bFn+tN05oetf3Zz2OD206BreWlSdYCkvroGJGaOT0c9c5NYdWAOc0HyK3qHb/ fi2IaoUupmK2loo3/gx2Q5d6wRpzJ7Qt1ZFN55/vdrnIpbqBRV+fQO3DfsSYsrVG9Y fW3GtJvaj3iVBaZRJU2/mKYteLSkL+bQknPnS9X7qItJSk1eqW4oHgJ4JfcC/EgVVa HSHTGja7tTzeA== From: "Matthieu Baerts (NGI0)" Date: Tue, 16 Jul 2024 22:53:21 +0200 Subject: [PATCH mptcp-net v2 9/9] Squash to "selftests/bpf: Add bpf_burst scheduler & 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: <20240716-mptcp-backup-mpj-v2-9-4d50247405fb@kernel.org> References: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> In-Reply-To: <20240716-mptcp-backup-mpj-v2-0-4d50247405fb@kernel.org> To: mptcp@lists.linux.dev Cc: "Matthieu Baerts (NGI0)" X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1833; i=matttbe@kernel.org; h=from:subject:message-id; bh=Fn73rImpeWC8EQqc9FknandKAe95OLv5q72DUryxtME=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmlt3BRdur2vtp1mX/FWaTFkgBWjM2VgG9FwEs3 C70vS2eCPmJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpbdwQAKCRD2t4JPQmmg c7GQD/0UYS2Ksx4y7nIISAffKAo0L9VtfmgbNToU+aItzpxpetIpFK2Ao/yykqHuC8VqGuve4hB LKUoHklhGWtR38NW8Ktp5QYLRcryBLaBEzRBUwCGvnnC0Ezb2AlPNOJ8B0IdJhrJMeCPSgHBR46 dDKUQqHDGr4MLx4hJ9LaBrIXwmcvRlFtlhiRpSaoWJ4Kp0gyYxQoIAuuC9oy10aFs6VKbOKJeFc jocmR68Dz7SmEMR6cnleSN0Eqpz+z8b58svMa9y/BiaVkRfiJHUXx4eIT2e2HscQHzOjnwKU62/ tjMklovgvV3OYfr/gn5Sb5EuLQTIyhth7w5JTzElSVlmgO2SfKG8Au0U8wWdegWwRALlQkw51HO yAij5QhaFgkJ2hH55QPKgzYLMzOnxqkGPz/lJqI0axSPXN/AaLRatQPNeeGeZDyAjHv1AOFxzRI Bmx5hkqHBu4PACo0NYtrr8HAoMgs64YrNJz3s+CSVbCegjgVlYuX9ATWMiADFADrbFchaJk0w7M lRpmKOuuOttBoa7OcL/L0+H7ibJr7K9+W55HMjWY7X60SlZ2VQnDGbP4isUxbleP1+fDn9F7Qvg efF1FZ93HBZIvId7NTiDklu3L78biEB8Y9FTmM8kYAtuLOs8BzVccbU158MUMfHhCdYufEpuRo/ qEPjgaLt3TorRSA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Similar to "mptcp: sched: check both directions for backup": it didn't matter before because the two flags were very likely set by accident. But that's no longer the case now. Signed-off-by: Matthieu Baerts (NGI0) --- tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c b/tools/te= sting/selftests/bpf/progs/mptcp_bpf_burst.c index 0026587a94df..3a673291b4dd 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_burst.c @@ -85,10 +85,14 @@ static int bpf_burst_get_send(struct mptcp_sock *msk, } =20 for (i =3D 0; i < data->subflows && i < MPTCP_SUBFLOWS_MAX; i++) { + bool backup; + subflow =3D bpf_mptcp_subflow_ctx_by_pos(data, i); if (!subflow) break; =20 + backup =3D subflow->backup || subflow->request_bkup; + ssk =3D mptcp_subflow_tcp_sock(subflow); if (!mptcp_subflow_active(subflow)) continue; @@ -103,9 +107,9 @@ static int bpf_burst_get_send(struct mptcp_sock *msk, } =20 linger_time =3D div_u64((__u64)ssk->sk_wmem_queued << 32, pace); - if (linger_time < send_info[subflow->backup].linger_time) { - send_info[subflow->backup].subflow_id =3D i; - send_info[subflow->backup].linger_time =3D linger_time; + if (linger_time < send_info[backup].linger_time) { + send_info[backup].subflow_id =3D i; + send_info[backup].linger_time =3D linger_time; } } mptcp_set_timeout(sk); @@ -160,7 +164,7 @@ static int bpf_burst_get_retrans(struct mptcp_sock *msk, continue; } =20 - if (subflow->backup) { + if (subflow->backup || subflow->request_bkup) { if (backup =3D=3D MPTCP_SUBFLOWS_MAX) backup =3D i; continue; --=20 2.45.2