From nobody Mon Sep 16 19:04:58 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 4CF4516A93F for ; Thu, 11 Jul 2024 15:39:55 +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=1720712396; cv=none; b=Z4psZyTF4vf5toZ3BSEBRoaQQRENgl9TcPzAsqZohQ6Bm00V8XgnPAhARN203LvWpVocI88MpcCmFyZ2XgxgUXERixmUusf0o9bJOsWd6EGfthvJOCdiZVLJHqz5Bm/0B3ynoXg4JEwQXZr77gbFFuxfbCQzvmkUGaXP3gCUgso= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720712396; c=relaxed/simple; bh=/8hfjipBRbGO/JeaUmL3swIPSyyfYZ6/wCbBD5jA8lY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LZsHijeY9seDYO9q7DBJgK/mc6bBl7T2Tfl3X5STValpsEMSMEyq9TNI9Rs6kNNk9oQCwkh/yLJCAuv0cD+cRPKP9cKPalVhIplfeVzIG/3ISZhs2/aOtpUWPO4qu8bXE4GsVtlx8CbbBNza31BVlmWTO5MAfaL3EKiiWTZf1hI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iNypbzcO; 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="iNypbzcO" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E5A7AC4AF09; Thu, 11 Jul 2024 15:39:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1720712395; bh=/8hfjipBRbGO/JeaUmL3swIPSyyfYZ6/wCbBD5jA8lY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=iNypbzcOByWlUa3Eas0X4xE7uivChc35+/TDNWOTlqsjkvRqYhnnmSWYgTccVTG2E SnlTJqo6WIaChm8tH6m/YoABjGP0LOhQOc08o+87/BEFTJ6IEP31IkYTuy4tbQIeRR YrCipmLrvQF5VVzxYqFtf3Cufd+uEQ/q9a5/Akff/SkYzTWWuQbT5adQfIyB+Ceuf8 QQOPnDbDwHU3KJlPnJlM80c+si9C6oGFh7dtS5fCkZVMjP8YMPIsu6VcT9V86/HoG1 1Y0LNikZonLqFHHjlJ8kUptJkcOGO7vWhk+6aVS+uLfixcapeLvMHZyYwVxQH/H794 EnPiARW/1Zz2A== From: "Matthieu Baerts (NGI0)" Date: Thu, 11 Jul 2024 17:38:58 +0200 Subject: [PATCH mptcp-net 1/6] 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: <20240711-mptcp-backup-mpj-v1-1-d45506182a9e@kernel.org> References: <20240711-mptcp-backup-mpj-v1-0-d45506182a9e@kernel.org> In-Reply-To: <20240711-mptcp-backup-mpj-v1-0-d45506182a9e@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/ZANAwAIAfa3gk9CaaBzAcsmYgBmj/zIvsAR31P5iK9DeRpEfHgVfIj8dqpmcsqxb faYLpuU5GWJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZo/8yAAKCRD2t4JPQmmg cxjuEACqLWjn8Hjp/Nolk69MzaP3mzN/rQ9HUZJHaEFkuzhlQJXOiS+lBFWU9KwWVWT02pNS+zS Dn/DcEbiVcpt9zRc3lmcYy7GPmIHbfsS2OAEZDTjLECMlfO4F7qs5bAkv0ZNzC0qjVfT5kUuRew JBpb5FebtvyLKS8t5cWBe7ld7gDZh90DLGqvDo3//+w4V1fWjZATcClmmN0HwEad/bG0NowdKv5 0Rk7VxV6SI0VN9TJhzw6g9rYvICCQSMbHVbqFw6zjyyR66fY6mB045mW5LjrsuCogYYg/0RoJKQ Zn3lcRiFDc4mP63/KfKB52sP0nknn1BZ5Z2aj4iH/BlJID/9Kupyxj+BiwJFp4KgGkLzbEo3M5M ZICEvZm8HFK+Ik7F8ArNKa2yx6uEG6nM6WPvNedXdMigesHrkfWiEWN8Q2j1dfgTnAc9W8mnrIi R7mFaujaQNo9YYS+NhlFmbE4G+8IwWIJnA+KTSwHsxvwICLkT9qAVN8nELckLIzj+dBLxz5jbTo yy3U7GWg8GbxEjXD5oRhr3TKILNncI0UgsKGgFnL11dmaVQlpAhJnh1IuPsdw7cv5yjsYCc7P27 EzTTIVOd3vuPAgktPX0ar2bFfe+X/QhmBCiCRYvd2D75aXvUyy9MD6eW4CFW8PjXGIRqoh87RBj F/vQTC/P3D+pB1A== 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:04:58 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 925B928FF for ; Thu, 11 Jul 2024 15:39:57 +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=1720712397; cv=none; b=En5Y4rDPTz+uPqLUg+vsA6hm4Ou5LMWVlxxanL2zq3nhXMoRsbvQY4mbMD97OvGnM+0kQG1GxCgGx7MtG+BMS4CDg4kehbni00jYwSpuCX/60/MHrw/P5atvVoCIHVe09fNGqGzLhwHgFLF/RUMmiVsgu1ZJBvcXPi6tPsf4aZc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720712397; c=relaxed/simple; bh=x3ZEThtNs38wRTpz2yLpmSS6NLa42FjFsoITlWG7NIE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NRtzBS9jrh3pDrr+1tuDF4GS95LtIcLGMuHQjnbqF7nWNecL7XbfSqhrQA073LyofLBtk3zUx5QdEVBNmmJUk2FMeqZxYQl2gwY2N0Z6JEl5p4B/i6itkP3GzW6gF7ykeTPBWytg13/lmYIEuxTu9CkSoxAOa6+DUi/YBECOOmc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UEpv2XRf; 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="UEpv2XRf" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 580CFC32786; Thu, 11 Jul 2024 15:39:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1720712397; bh=x3ZEThtNs38wRTpz2yLpmSS6NLa42FjFsoITlWG7NIE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=UEpv2XRfiEHPUaxdjfcsZ52tcJTJ9knuLL3SWOn3PiAo3OXgWiNwvkX/VvRw5wfx+ 0cs256vUC57jVbqe7vNcjXmEfFiJXcbv3WhVShrn/maWLvwPJiG5ADYSUj9xXug7vT OKjqegEPXhA5J3KKSDlnRJjhLEdL6uKS73AVfTlSZK/75ibDcqrg2/KYsaucTRcXIh IRNghyyLddgAcCYpmyCYXwjjgSYDywhyET6YjsHqfi0wq1j1lPnn1SdHB4BY2JPhMt //TKRBDVZkMMUDEI/Qp5fQd3W1+uVtvB4ZY70nVyHfE3iOvlDjKkVcV4ACwV3hy3SG XlN4acy6GaP6w== From: "Matthieu Baerts (NGI0)" Date: Thu, 11 Jul 2024 17:38:59 +0200 Subject: [PATCH mptcp-net 2/6] 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: <20240711-mptcp-backup-mpj-v1-2-d45506182a9e@kernel.org> References: <20240711-mptcp-backup-mpj-v1-0-d45506182a9e@kernel.org> In-Reply-To: <20240711-mptcp-backup-mpj-v1-0-d45506182a9e@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/ZANAwAIAfa3gk9CaaBzAcsmYgBmj/zI3emiMTm+PUH1qAwLi5xZPIq0qjlhlZz7Q 0CcjUs7aiyJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZo/8yAAKCRD2t4JPQmmg c8eyD/9KJVWvx8YaQIEvVCEWSSOdpaBveSScNTVyfVVtiB0nQRC5mTjJflLDLsK0Cdche7I6kVw WoPr9U+Nn29cco/6+lfxJKbi9piJkGamIp4io+KjXashxjjQ5mGuOT5zL2oZ5CZQar3DcDo0RD9 Ih7r17ZejpmMhLYwIffYvKmMzBa/V+fjIx5cSwsnT0hfJvc0bKVcu3XxuvgL9YR1mV8RH0AS+lo xKY7yvU415KpezobNgvC4Pj2PzR1SrHH99gfWTpTOPSSynszSHA9JNEpmCK/mELxhHIPcodHbcB LqvI9+6D9gdnZVa8TE9HD3j5jUG9BOQQw1jtShiXlrc3422TTzDTvTMQnXiqBgoTidrpcdxTBv0 yBqAb8DS/vKWjtJmp6yIgcIhS4/z5DPbSi8OrNOxQbH/lQP44X7GTPJ+jIPxCBT04DyXqISYFgd C5bKhK+1zutmIGI08jGbMKgO6k6ajIptmROidlGb6LM6xKQ1Jbu/HwZKIa4134gDtkua0MFPKA1 9ZYn/zYPpQ+U+xgpKYUYluIa82+Jt7JXB50gKrgNbsa5S5UxXGHXEyP9krrfTcR+20UZCRqLQkq cj4rklDgRLZyHuHWykpK9JBQPncVTzAscj5yhx0DPJlZ+GOosva5Arh0oopBt5bAhJvgvqKPUS9 +jVBBXdPcxqvNBA== 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:04:58 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 2908D16B753 for ; Thu, 11 Jul 2024 15:39:58 +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=1720712399; cv=none; b=kqtThglJyAhCoFkGglXApW8kbTXSavjqPG+Q5eB0qb0tPqj7/AiX5WA8h/D87oG69eNKmafGP34OiAmGQ7/PzxwwtmeZA/Mf+BQsQgMGtmhVjvsuxOIbB+MFWTO0uW9xviFNwj6Xg/renH/Ijo0Hgp2tN3AiPYFwQXaTusN7D+I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720712399; c=relaxed/simple; bh=el4qRlSZNNEra5/72bcgxC16DUkc+vjJu9h9eGeb9RA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mgHGmnK9Klw8D5VZPO/Hd49aDlopfOaRaOU3GPSaH+iRxd15irBKs47tLYRXeAXIfuE80918DP/y3I8z6Rw+C2f5kQtvLusOkfGVz/xld9xoHTIf/Rjw+zQSg6PA4+GaS1u3ZfggMQILXfwjdiw4VB9/ohR2mWwe6PX3oizkBT8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BDmgvo16; 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="BDmgvo16" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C6001C32786; Thu, 11 Jul 2024 15:39:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1720712398; bh=el4qRlSZNNEra5/72bcgxC16DUkc+vjJu9h9eGeb9RA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=BDmgvo16fsII/ds2O9GSugpsd7TD2JBmVb0Oxi2ZGOAu+/2ZOkFJ/He8NHtc+S/15 vckz1cjpIWWcdJq6bhffuQxzSjwrnIhtS0N1lv0WY8+szuZirk6KKmW2LdJUPr+DtY cBvWw5rKP5RmX0xVpdbDLYo5ypQxDGb7zpnv9n16fvAwA+IBttPo5JjVhThHYk31FQ 1EK6BOZqXw4ytzVuSv4HofRz85LjwhNe3iqzj7xJ9TxYtHK8aPvHlx77+vXPIjsEOk U59BK5SAa1i7pexnPbdctOKiTJaF0QrNoAtgUTBysCDc2vuEXzBsL9A8Kp6F26piTy tecIztCjwo3yg== From: "Matthieu Baerts (NGI0)" Date: Thu, 11 Jul 2024 17:39:00 +0200 Subject: [PATCH mptcp-net 3/6] 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: <20240711-mptcp-backup-mpj-v1-3-d45506182a9e@kernel.org> References: <20240711-mptcp-backup-mpj-v1-0-d45506182a9e@kernel.org> In-Reply-To: <20240711-mptcp-backup-mpj-v1-0-d45506182a9e@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/ZANAwAIAfa3gk9CaaBzAcsmYgBmj/zIShhjpEYStI3YvQbgQ2nDRsKLCSPsCcZT4 +lSKoR62HaJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZo/8yAAKCRD2t4JPQmmg c/tqD/sE1Wn7U3ZVnP5qV/XVMPd6bLivWSfbchsn3MrAKCqIb/zP4G9ThO7C6+SxljMYPly4y4h r0NTxlr0CuOGwFLQTauROAeeAtIULnapOeyPdFFtl3L9G+aNSzDdH/NEHpi/pu09E75DoH3+LHM hn9vPIHDOJxS3gZ4UQ1du/OkWH/jf0FMRyhznNc+IOT5ppzkae133kAAxeeBeZ5sHVhGdkLOIqx UNVEpiUFMxZvnoScF2D6Fzwqhlk+ZxcP82wjjWhDPsdFi4uX5uJLudJdtFt6E5RdYagdG+5mFGG 3l58n06VBcRxanDzsSLmP0AS3251FvwdZ3WCS9eVRmcIHy+G1bEkPwk90ANa7Glq+rSHjRay0oP xik5Vcwt9Y/dvz74W6XsCqO5vhg/SZjtqCIbRoqtAkvuHrf2FpezzaoiTHztdl9ZrSEhdqVLfoZ j1pslAde5uDaPriLq8jrskIuQEeKKw/lUTVl8MLVqUZpv3p165umxypKS3XmG5ou54KGg1mbEZ+ 9qXDakzLuIuTWJovbi/8iKBiDQzkOW9mfq3P/72V6SYXhQhf5CQ3LRrFHaQq3xjyUkh1LYHb4x/ bGnXHKXLRyO/d3PPU1+NhZnPXuWzhJVCWJYQRWmxuEERUMnZ0/f4ZFj8GwGWuRTQa3DzLEUxJ5O cYGgMpfcvZrrsYQ== 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:04:58 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 0F689158216 for ; Thu, 11 Jul 2024 15:40:00 +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=1720712400; cv=none; b=NHB28+KmjZV7coJn+HsjvkCk2BBxfv1HWXXlr7Ts8oSqJP/B8Kc28S3vvJBoR9AnZVU7RB/CTzQsCyRDvedpqs9Ajmo2R5BeLwPG8lHJyYyGcfOuhbB/hlXCZrsgrLm/iq1fTUQagesa5u63s5uGr/GKtFKHTOaS+46GHqx6ylk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720712400; c=relaxed/simple; bh=rVEoTPXpClW9o+6qpeVgg8T7rCmEkl4/v7SO8/jQFgI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tQir3nfiQsIvTsIs67sX2ziRU2/dPE8yn96vqFx6HsNMYZzyGrU1mhzOnq4AHs4ZQFW57kxNFPZm1DzFO8vdIxnbsQBJy8cs0hP3siXUFIvgJB8Gb5UqyfnbP8lR4iIjaphALD53+fu6mpIQzyCw73MBraAlFES7RCrfoV1Qhmo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UJsHFmyR; 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="UJsHFmyR" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 537E7C116B1; Thu, 11 Jul 2024 15:39:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1720712399; bh=rVEoTPXpClW9o+6qpeVgg8T7rCmEkl4/v7SO8/jQFgI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=UJsHFmyRTbh+QD3x/l1BjJmXBdk231iqBE6WbVJD3OeA+ZXzNIBG/3vYQ8orsfYT6 Up+s84ilgIhDjXzHxadJvkitUzJq5F1U9DoUJVhr0LplWQ8HkUowHHr87rONzwzVMf auD5a0KSQMGioi5WHPSqwQjhlj4eY7GeqcNFXo5UZL3WMnDwWS0U4zPeaMpiYvChyB 0towPBB2YPmqBA8nx/usfYf7TRMKV1YdFEG3WdLBS0pNBO3MVEKNfsMcMWALworb2M 9EdIcnkuYH4V+gBTDIAacgbImPqovZAuhm+XBI6dpXwCtO8xlclDvDk2U4QG4JASPy uyJlBXgANv8QQ== From: "Matthieu Baerts (NGI0)" Date: Thu, 11 Jul 2024 17:39:01 +0200 Subject: [PATCH mptcp-net 4/6] 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: <20240711-mptcp-backup-mpj-v1-4-d45506182a9e@kernel.org> References: <20240711-mptcp-backup-mpj-v1-0-d45506182a9e@kernel.org> In-Reply-To: <20240711-mptcp-backup-mpj-v1-0-d45506182a9e@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=8883; i=matttbe@kernel.org; h=from:subject:message-id; bh=rVEoTPXpClW9o+6qpeVgg8T7rCmEkl4/v7SO8/jQFgI=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmj/zJ2dclTO0ppMU/ot5GUjVrbI/BW9edM4uBI xrF5Z4IFkqJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZo/8yQAKCRD2t4JPQmmg cwihEACNlwzfYdGBxmHgBi9gcwsUcZgkbVaZTCg0LN+UakzPtex9KRQcqZIB0XCDrN9gq30jCst CyatzaodB2lWzRnkhD7xDW3EbhiwnfSfCteCa60BDDmFPXtuUgAo9GMIaKS+8ISMEj1RYEHFPqz zr4Umg21E/N34PfO7nNUoy2FrIoDkGEN3YLZ3gkr+t2lmWIpWNsTob5FMckDT1ZYBjUHJ5iRNYE oF8DKe8qdHl6cVmDLWbeDyKiX550RBeKrjhcHuQQzRFSs6AAMvchZoXDhieQC0xOcsrIuOC+3e6 khO2t84gHGQRddt5jHBABWDXj1TyvVlKFh9KU2d78wYJJsnEQBxZjfzSEir5EAzadlcq0gcJGCs bpcrjiL5DhIPhJ/uNEnW+ZKuJ+rjUGa6MKGEtB12dtw4i5SdFJCDfoSuSoiv0JhKzLM223PK64n zoLxMQ5q/+UE/chzczqx/1K+yfXX2g9MlE/J71BNBXTqwrbGHFlAkhsJMmuYxnjnR8p2EuftbuE GE0XXv6IQXI/iRUxlvGn3nNb6gIL5O6ul3RkvqQHGg5dd/Zk0CgHyfra6Gohz0VdBOuKfOzUC45 tlfoLZT6AKQjkAF26Eo2t81MqQXvg27Votrj650e4he7nLjIhFYVdx15FLexeuRw/kTGvCF/yzp yYay3jriEu3VXaQ== 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. 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. The MPTCP Join selftest has been modified to validate this case: the test "single address, backup", is now validating the MPJ with a backup flag. The previous version has been kept, but renamed to "single address, switch to backup" to avoid confusions. The test "single address with port, backup" is also now validating the MPJ with a backup flag, which makes more sense. 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) --- net/mptcp/pm.c | 9 ++++++--- net/mptcp/pm_netlink.c | 4 +++- net/mptcp/pm_userspace.c | 6 ++++-- net/mptcp/protocol.h | 9 ++++++--- net/mptcp/subflow.c | 7 +++++-- tools/testing/selftests/net/mptcp/mptcp_join.sh | 19 ++++++++++++++++--- 6 files changed, 40 insertions(+), 14 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 55406720c607..98b0b31e3b8d 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; @@ -413,6 +414,8 @@ int mptcp_pm_get_local_id(struct mptcp_sock *msk, struc= t sock_common *skc) if (WARN_ON_ONCE(!msk)) return -1; =20 + *backup =3D false; + /* The 0 ID mapping is defined by the first subflow, copied into the msk * addr */ @@ -422,8 +425,8 @@ int mptcp_pm_get_local_id(struct mptcp_sock *msk, struc= t sock_common *skc) 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..44bfab351693 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; } } diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index f0a4590506c6..adc015af168e 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,8 +151,10 @@ 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; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 6b6b76152db5..cee0a8098b41 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1111,9 +1111,12 @@ 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); 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 a3778aee4e77..955fb9aa2ce5 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; } @@ -604,12 +606,13 @@ 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 diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 55d84a1bde15..167914df05fa 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -2617,6 +2617,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 + 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 @@ -2632,13 +2645,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 + chk_prio_nr 1 0 fi =20 if reset "mpc backup" && --=20 2.45.2 From nobody Mon Sep 16 19:04:58 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 69D8028FF for ; Thu, 11 Jul 2024 15:40:01 +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=1720712401; cv=none; b=AvncA41eD/Wx18TGwOVOIQCNWHf+Ycj5ocW31Gkk21Y3ZfYUDuWIXdSLORYHPhvXKHsQKiWhTjltxmLN4vzjpbof2WM4PEZHWCsx5oQTI0EptQ1iXMoiZEO+wwho9ivCViyDGNfkZPoK1wdWLEZ4b0Q2fJMANwW4zT9APSJCJEU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720712401; c=relaxed/simple; bh=o6LlgxvdIEwLce8tmc9hgvLbwZq89r/BeJFILy0OplY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sdXMLE7cPqJa4RzUtzrlIzecPYt7NOncRifPh9hT5TVPfouD7cSNfAqE7JGVF6SEJ4sYKU+QBhs9SkvQ7EBaInzhPpO9nfGoNk8Lw2GUqDuN5XRmpB31qicgDVgw2ve0peSC+2Hn18WToGkJ+4tYg7LsozwXeTwxe4XBdcUWeLs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=usL9ZWC7; 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="usL9ZWC7" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6F9CEC116B1; Thu, 11 Jul 2024 15:40:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1720712401; bh=o6LlgxvdIEwLce8tmc9hgvLbwZq89r/BeJFILy0OplY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=usL9ZWC7KZuJ9ufWkyDxBxH7oE3Q6+5MYopQyMQEaLNHKkL7l5/u9yI5m+IHYBYlT lNX4jFgTF2oWnAzHPcc6SWKxH+//FwK42lm10l8l/geaZHY3s378ZtGsoq1P57oUiK OdCQfK8joAElETyFm7wLlhrW6U/CSZAeXAUYkuQ/sYLIHgyp9d55EBsJCcZfzBNWl4 uQi8GTMtftDxG5aQC5Uyf5rvY7g9viMn+X2axFG79fmxFp1iB9IziUOJvNQNlJ1XCw QXQgpQ2FK2xXQaFHHbulJAe+yhwzcexPDPSterPt6CNEH1DF2wLqchOjhBl6IOI04y QPQkYghgz/INg== From: "Matthieu Baerts (NGI0)" Date: Thu, 11 Jul 2024 17:39:02 +0200 Subject: [PATCH mptcp-net 5/6] 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: <20240711-mptcp-backup-mpj-v1-5-d45506182a9e@kernel.org> References: <20240711-mptcp-backup-mpj-v1-0-d45506182a9e@kernel.org> In-Reply-To: <20240711-mptcp-backup-mpj-v1-0-d45506182a9e@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/ZANAwAIAfa3gk9CaaBzAcsmYgBmj/zJ4x3+18g2X5SUPE3XcamKluhRbAlosdtrN OOuQYYP3veJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZo/8yQAKCRD2t4JPQmmg czkYD/9eV1t/9jOHnf3Jqbj0RyIBBTfQN6TBNzG0WY3/dQvQTbie2PYgPyF+B9oNG7UhFlCgnab mzfJVbfNYyyV8ihy+9TjxIazL1+UdRDMhDTpKE4zGu7IoyjgZ9PKK5i9qY7cMs5z7SwcDBwK3CF 4HFsQam2BQb1Ikon4VwCkdiZZpmDsbZwJr/bjxVHrxt6HPNz9yF9FU325cmvYI8T40Ep4JwCyeo 4HOvUTxkQcqw5cSpZckxSj4g9WxDI3EAVuaSY7aB+wpcPo8Fcp8KLCYiZQbMVB+IEgpir0E55M/ HPizUpN4/SXQtYJe/wDMVf0AtWE+4HR9dD2G+ORWZACDKSmz1hshQliatJPTgfr06jqkGAD8CWj n08QvCWjPdtp9M+hRc4UXcUCwzor/iEbIBADZoUlOBDh8dmIO8Y/BtOCLJDdT7FPEpQ8DWP/VPs 2bQw3uOMrzzMBHjVy78ulZLAqDKigfbSy0EAhvZCg69ToxwEM8LRKGPOz6/tQTxaDoybWtu4GFy 2nOxE+097eL0htvItrjiXq1fUx16nx+ridD7VHZMq3oIdnadY4IWr6DyQN6GVec/jfEI2W6bjnl PE/tyErkFb3H/vXtA5nttQcDNc7cWU8Kn5XsNYRB+t7YHNLbrdoUtJ888572oi8+IOh5uVhIQDn uHtKY91zNP3H+GA== 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:04:58 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 00D6B16C6AC for ; Thu, 11 Jul 2024 15:40:02 +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=1720712403; cv=none; b=F4QfgVeH5vyIyunMpm2dVxiNGLv4wk+0xn3ZUgJy0LuZVf9OIkr9t5n+IWd18rMKhUsV6OcVEUYTYxHIktqR/iZlandaWZG5ZBb9vwc+76vBWIp/4YmEPemdFDaZ3UAz7+VYn4W6KE8sILDf/q7LzhIgRfVWupiZksv0AXFEDnE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720712403; c=relaxed/simple; bh=Fn73rImpeWC8EQqc9FknandKAe95OLv5q72DUryxtME=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=h2DDUikOSdeG8mxmC3aF230hMlps2VUq67lKIIkHQylYAeGQA8HgV1TirnRYHAryhWV93qLNVv01TXKadYmdiZPA4JowCeikCCicW3x5PtUH3bY0FUKANuefE/jgcIZ4yrRjoI7sjoQI7ONLWVl5KFsDtz/CXM7OwUW019fVuHA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=d8Sz308I; 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="d8Sz308I" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AB67EC116B1; Thu, 11 Jul 2024 15:40:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1720712402; bh=Fn73rImpeWC8EQqc9FknandKAe95OLv5q72DUryxtME=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=d8Sz308IKfipO7JqZy7v8zyqzwVzGm06jQujQNDnjWd/3qxGk2id4qrSV7FhelZ4T GoZE40X9QyasY9WTgBdmdBDT2c0Qbx6ijPjGz9KPm82FSpHd9xLN8odnv1LnTfu2I0 2MC0owJ5yd8ljlS9GfcOqnfdBqL1u4+GmCrkT8VQrwMmXD0oSxaKlASMOohEbF+pHU YpYNAoz2u+cY8u/Z/72kc77dn6z3QzWqt80BJw8MEsqe1jqh5sJ8zmZQC0xKRMkI5N D6m5/wrPN9wFKz749N8GW6iCwvh2GxzqTLqrDVReO+F/LAU8ih1Hr+7HuwTSb+aNkf DHZTxxs/rpd5Q== From: "Matthieu Baerts (NGI0)" Date: Thu, 11 Jul 2024 17:39:03 +0200 Subject: [PATCH mptcp-net 6/6] 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: <20240711-mptcp-backup-mpj-v1-6-d45506182a9e@kernel.org> References: <20240711-mptcp-backup-mpj-v1-0-d45506182a9e@kernel.org> In-Reply-To: <20240711-mptcp-backup-mpj-v1-0-d45506182a9e@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/ZANAwAIAfa3gk9CaaBzAcsmYgBmj/zJeDY1+Gf4rUjiz+HKVip2O9ViekbCk0j4L F5efaQwfh6JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZo/8yQAKCRD2t4JPQmmg c9cbD/0RkDbfJY6vnbn9007yuN+uANxQlRuHl0MfcCUYaea+v8le7cYt9T24WuQtP2M2vLo/C9E O7MbKRFhSYuTCESpcuHAshCuxrgsl0xDwdefsxL+/kNx0UIeBFgzNSmSQ/2mGyTaBCrDA3j2f+S sC2HKurOV8217pB78FS/gMENO22aAVb8bvlHR/BUkcibpbXZAZzUvTTkyJ62jYSFngyBJatD9TA EPSLhTpPSJyctiuCNlbgeioGR8WUHFUftI7//jiDV1cCFa2Kk45z6ccObhP5ikEdzajrSUukrgS 3in+LmVkSG2VWy7ZukXP1IMauWGH0R/qpCAnqax3oq18Gobsyux9iPkQh74VvVkOlq6u5trIcgX wy+g5ai1x1LE6VHtodAjxyc3oneXj5mpPd60ItiQRmiZMiYKr9tTZx8iq08b26A/iETlkceKbKu wwaaNl/xABNqi0oRyiL/URxqDNBbaldgI9FUw7nSlQQ99/dOhwg3lCAIDGnReeHmpNbL8CnJqt4 y4mEkl8hlnQ+K4FWb4t02qOntPVpGFuxSNXM3zF5BdY9ibYsFTNHBRpMC6syRlhCnGRx+MDSZrr y5MIXmmTlpM9AvbS/io00Fr8Yue10vgUmE6IYHMCVNsOVDybY8kQZRsMBQpt/7+vWo6A6ZVv90k Utb6Ep9dNGLYd3g== 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