From nobody Mon Sep 16 19:13:34 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 736664D8B7 for ; Thu, 18 Jul 2024 15:54:05 +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=1721318045; cv=none; b=Q+XWSRHjfTs31MXVfC7s0nP9MKvoQ1/ATjVCFXOUzSEe3v7GsDB1TDyXFav2eLrnvyiP9lNKqVIJ4wvgIXmfALiBhY0FLRjI4WaVLCFsofEcbZDbj0uIG9J7MBQ4mIBikB1Mrd/sxt4mEfeyIEF5C4M+S3qkE12B+8dPzZvUrcM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721318045; c=relaxed/simple; bh=jxs+sMDe/TzeRdp0PFolqjDs8IFlQ6G3fzAAb/EajMY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=S8GArjMwc/0k7rEBtR4Bpy2djlWZ1gQ9MueXDRrXisHEXRMKh1FDdkQAT6SwnW8nfuGf7WQQISkafb2Gtt2tpVn6Crp7RVqbiEGyc+wU/IieclLVMx0OC0wFiT6iXAkV3hF2JRBwagSDXs5SiDJjeEUvGEsSyhItTQ0Ih+O6ec4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PsB5F5mR; 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="PsB5F5mR" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 93777C4AF0F; Thu, 18 Jul 2024 15:54:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721318045; bh=jxs+sMDe/TzeRdp0PFolqjDs8IFlQ6G3fzAAb/EajMY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=PsB5F5mR6e9Snd0mVCGQnwoqqa7HHOHa86ZbF2BlGIujOBwQL/EtpDS3eXZsvfviz CK0zPYjjgT1XxvIvZth+HRp6sO9fZzvLFpd21Vd4iSzYyQMhR347SVQEkVrH1RIFJ9 2XM4TMocRbcRpeqjukzldtJpYc5cViokyY4ZNI4rgf34IjTlVS5xhxebfP55R3FInE Th6J/ePmbZl3uksx7Vv2D86W/Cjt6Siapbbu8/yO9UOpG3uMTMNf+qtn1GX8w8IXpf /8gWry+hdiAF/jltpDh772NQPUXUd+pOa3WoVnXiboVgvSZSO7qaVWD7WJBLb7JmWK sie514xbr4SBw== From: "Matthieu Baerts (NGI0)" Date: Thu, 18 Jul 2024 17:53:58 +0200 Subject: [PATCH mptcp-net v3 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: <20240718-mptcp-backup-mpj-v3-1-1f6cd9b89ee4@kernel.org> References: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@kernel.org> In-Reply-To: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@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=2908; i=matttbe@kernel.org; h=from:subject:message-id; bh=jxs+sMDe/TzeRdp0PFolqjDs8IFlQ6G3fzAAb/EajMY=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmmTqajsZsW+Xy40SRkZNiNHb3Aw3+AB3xdkuzi hzdXn+syuOJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpk6mgAKCRD2t4JPQmmg c7iaEACrFfrKIXtKBX38Xh8Vg30R7q7fBRgNZhuLzISk1l198fXanqIf3+Lzly20tq2W6FQLZXy az7j6nHOybNJT2o0rNFOrVy45rBlnZ2TpPNlv+b9tbwzJKbLDp1B/VsBqkMziOZUmv8G7TgPh0O vml7IEDQEaktZOkC1qDV+Nbg/Y1JxgiFz827hN5eLxOfIpIT85On3Ps1Ufs7VWbiFBR7vxKWiJ5 Nut6QgIYobnQhtnEV/PfMMrjlg4Tz5v4E5QkBfMBArXAQUn86ORjUhe5wzmPkKb0AArOIaFWld3 St0jW1QYtRDuis1RQ8vJ9dpQmnGMttP8ThkSMTEulwJP5y3dlGyqsJzodUx10xCUUNG9nCM5FfU p7RtKErdIyfH0ZPEZRsjsL+bOBy4L70oBFxyiGqlvxFQmqxvno/uP62inYxC2JDy1rRQbH11xDf lrcGg6Yxb4cL6nffFjmwK9Z/D27F3LdsYMATZYMUAd3kgMxkuiTKZAeRwh/XKyfQfcTVdtbnrwU xXOFNb6Yqt4Sf34CvbLnA8UWdYKU3S+Sy2P0ooBKoOkavfVBbZ/jAjcL14jRVMxDspI/AsBsVtS sMaq+yrtqg1NeAC9qtND6xV8MKgRezEkY4KvMl5gizsUF+cUx9s4ZwGy4mqXnaz0eAMEWoSZ0sm KhiHg+o3/fwn1Rg== 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) Reviewed-by: Mat Martineau --- Notes: - v3: - fix indentation of the 2nd bullet point in the commit message (Geliang) --- 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:13:34 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 77A794D8B7 for ; Thu, 18 Jul 2024 15:54:06 +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=1721318046; cv=none; b=u25E+B+oMkR9Cs3VSVGMpJ4/4N2eB8Vx52D3ll2yEQfGGz/XJRTL1dYuAkLB217GepSgjs4zpokhTVikEw2wRU33fw30fbud7/rfAHFtmbj7AxT69/XoNHN0pnckKUQ3VOUAEXBA6dmohTTaCAosAYioHizfEP04T8RcElUZdoE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721318046; c=relaxed/simple; bh=x3ZEThtNs38wRTpz2yLpmSS6NLa42FjFsoITlWG7NIE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ALksv9FWsE/otGaverzsYsRWNZ4BG1jI3rri2uOBA/mTJ236Zph5mw3Pi4lapvdXdBFZtJ5WRBGowiai2Ip94YqgaDODxZ7Kb8UdvgGLAwZXfLl4zMjhzxefPVYWJ/SMOy3AD2wO3ofqGKIgaQxSfpZvDBBQElQ09WaPDmpzEBE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BW9GhOM8; 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="BW9GhOM8" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 92A4DC116B1; Thu, 18 Jul 2024 15:54:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721318046; bh=x3ZEThtNs38wRTpz2yLpmSS6NLa42FjFsoITlWG7NIE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=BW9GhOM8fm1lih926vfgoJRxGUbHxb5NcYfoUwwi4Mmz+ZcvjxKqVIJzEk6RBafRM Dt/1KWRQpBelfz6c1vHAIdBJAvTR+YOSbST/RLDQX+La1Krk7QZegjrP38qieY7Ywz Kh2SsVkJoRnzS5EZ2AX3x4KoSxCzhXD9s7pBXXUcF7nvW70jnvrxBSxC8Rg+G+7fcf iAyEqr+sprUU2UF3frZAHxNIDf45U3lMidbH67YRFwrxcTyGfY2bSkm2VrEjCXVQCp m7HZtYl6KC/BboORjrH2z0UDT2yiDatsYd8CP03zuMnWPHOzzR6jKBVWiKbNBp2aCJ Afv3Hsq02//6Q== From: "Matthieu Baerts (NGI0)" Date: Thu, 18 Jul 2024 17:53:59 +0200 Subject: [PATCH mptcp-net v3 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: <20240718-mptcp-backup-mpj-v3-2-1f6cd9b89ee4@kernel.org> References: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@kernel.org> In-Reply-To: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@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/ZANAwAIAfa3gk9CaaBzAcsmYgBmmTqbA1CPT87t/0kZimUqQMo2XuwEunOyr/8q8 bsxr+0855GJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpk6mwAKCRD2t4JPQmmg c3JBD/0dnx1qSi6SZEtV5taqwxCc7ucxwDtmDwdU20l3D9YslE1EtSRUJL1VvpPUdPf//GwLo0I DD09wM5lmCDX+WrEKV9/KR8W2MxqAcWp88+6y6HaPxwZMp837HqTBp8kM1TEaSqkzai1oJWUNSS +esjNPV3JwC6PoktDVSPS3561UUuwcjcJ1yEG1rLuhDOCkCA227tvQVFup18/vyF16XlnAFncWG ERUBonMMSrqx2G1+Y1/+OT/YoprOPUDndfGKjrv55HxZhnK+Gu1FCUAwqiBYJ+dtFBPUdkcY+WB jki3UA4nA+n72VPk4L8ZcdJG4CkFiclZ92atnkvl1TpJK3qNpyUryYXVqaYjZWpJdq9OdM4TXUL aj0YUjzvWgJScwi0zMwyeLmqtbUIN+dQmP27Ij5/aZhyoS3MQlXiKEXWDRtxjUIauzMBzprs2rE Qj7n8D04+BLnFuGsAUx+Tw9KJ0K+3xY8DqYllBjy0yaPUwNcphbIcBlxxibaSnMx3n6+53rfFgS DiYNAdTMn6ug0X6gmtYdNlFOb6Nel5JhdywPEx1FVDV9/+PKIew/k1He/c+VmQckuKj8aGaioaA HtupgZvaIoHampzrSyDHwte/MhiQd1M6rAnn3KZm2sbN0jYxkfS/FhvHZAR9amL2xrh+Vz+HI2x j9BViaE681aajZw== 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) Reviewed-by: Mat Martineau --- 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:13:34 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 3A7954D8B7 for ; Thu, 18 Jul 2024 15:54:07 +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=1721318047; cv=none; b=BuOi3Raf258j/gpMI2LdScS6XfGtn0qdJm9sP53KMo+ErpuRoMZJkwRgoimkQSyj0lVf59fACqfc/9SFsovr2jzuRyoA9xrEJZ70K3xK/rAGUHg72+YBhA+jdWI6XZS8Wd4DUbzZ7dCupsUKqsBxBvfIgd6oJsge6nZf/JbN2t8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721318047; c=relaxed/simple; bh=el4qRlSZNNEra5/72bcgxC16DUkc+vjJu9h9eGeb9RA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jJp7JDGqfhPtyJqovk/WH1PDLPx4IMFXFpczw3p9WeAuYS4KpdVoR3JWofRBUsvZHBRW8J/jJOtJZ4ynMtqcgre928hTFk3WHwhErQQEOGblRFM2VEONazrlrCLKNWgv8D6FoxMZAkuYcMsd8K44T7Q47g2b2nJ22BPduoSLYhU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=s/5jKuzV; 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="s/5jKuzV" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 915C8C4AF09; Thu, 18 Jul 2024 15:54:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721318047; bh=el4qRlSZNNEra5/72bcgxC16DUkc+vjJu9h9eGeb9RA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=s/5jKuzVlw1tepxtZxKXHyn9KlAdTKCQ25nzFZ8Bwl1jorycNYMctE5RDH2O5fns2 2wuGjOQW2EnUHd7V9IoFBA61jSwivUgv5fBEt06NC+sNFfKTkIFBNUxQlG1mWzNz1Y fi8owYU6yRoel80nJloeOzsL3u0Key3cGSmdnakbWdGJRSRnyU7eA51gb/p0uyieMW 7atWQ3fmdWvcwKRLzqhQs09kgBX2fwf6EKEn15P+bcmTMnjep2KenoXoaXSmjUsSpH MXGzCY1E8rY6qFbO7wFmz5KrTRmgsX6RCytGOLL83Mc3K5pnp99NRh5NZoZ9IpgYn4 9bM0vSMaVZ7Wg== From: "Matthieu Baerts (NGI0)" Date: Thu, 18 Jul 2024 17:54:00 +0200 Subject: [PATCH mptcp-net v3 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: <20240718-mptcp-backup-mpj-v3-3-1f6cd9b89ee4@kernel.org> References: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@kernel.org> In-Reply-To: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@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/ZANAwAIAfa3gk9CaaBzAcsmYgBmmTqb7uX/aOctNxO7LKqqhq5lDaF99T3g8SWgF fr0fzosfruJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpk6mwAKCRD2t4JPQmmg c9L7D/9eG6ioEdmEYEdRnq+6ei2riU7hdeXQ1o1qIiLtrsunnq5M8p5r5y7YAXTlC5Sf5BXrzoL I+qoxrtX5o75yieHU0kf3sfmMfzxKk4aL5DUBwT4HPVIoPzOGGnC0CLkNmoN6NuQK/J880uPidH 3cHw5GfI+VTMjl0VK5kyMHVXwouWmhYB8iZVnlU7V/KSB23u/QqBpMlGGahMVFt32vwEuYTsp20 QfwWJS71L5Qyfw7iEBdCw/GV1Dkid0vXQrWlEgQcl3tM86ghF0gRDrGb7BfeO4/H3mCuEqLKGx5 Xb0uYQOTvP9SAio35JsJSFv60W2NcwkmcRjadSo7sXN7DG30zVrU3KBP1tRMTJUzeMIaDMH+CaU k2209XPVWaeZ2lmhc3r+jc5RkKbVGLH5rwDSOF4e/qScr42eTXrwixmMhH80k9i6F0UlkuqzBHv N0a/SmfpPomnhrofCRkEiLjYz1CwUgluYMKRljPt0A2goKjbUJZ9GF8uCYqjiYE2Np4VSS0LF7c FmxsFLYRlTgf8DlT5dSpG6PXNcW8513O0fy0TKbuzT2MdH1kA3DTkdcX1OX2au5fRqyysNErnw4 1kabDOAE01xZz/d6v+F9TAUZ3zVZ8W4jK9IKiW4/QLjVQbvHaDR+0Wuw65v+qNWQq39P5Q0r+oy qUXec0au9+/JpuA== 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) Reviewed-by: Mat Martineau --- 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:13:34 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 946784D8B7 for ; Thu, 18 Jul 2024 15:54:08 +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=1721318048; cv=none; b=J+uzhFVCVzTNAya2Uycp2vxsydw5A5kAQ4Yxo+acpXNFddCPKaiuS4XpWlFqq8/1/nQKz8owvdHZY/NhmWjLJEA0+pqE2bOsFZ0a8wOsXQSYx6LFPdoihNmm/+qDPQJhY2vVC6lG52tDllkcs4za2On8IeNH9FZdU9ZCKeR+P3U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721318048; c=relaxed/simple; bh=3DozdXhaVIzx/Ieb6dDuffZMch1nXiGqG38mwTcBDMQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VqqnHcb9ZQRA/6eBeHCEMM3cvIsY/FS/AfOTjKRcDE6pEmilqQqyLeK6GOf9fOOgVVoDUdRu5FREsg+Jqi+bRknDNTr8tAbSaWKbAlS1FvEh+GETWq1kaDN6w68UU/XzBhhQ8MV8GKXGiM1C3dMxZtdD4mceiaOANoExumyHL1o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=cL0gpwXp; 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="cL0gpwXp" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8F055C4AF0C; Thu, 18 Jul 2024 15:54:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721318048; bh=3DozdXhaVIzx/Ieb6dDuffZMch1nXiGqG38mwTcBDMQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=cL0gpwXpE2jteZ3C0Lyap/5GTylZgSSj+K3WSv9S7Q6Kvv4KqbUEbC1om6QCpm+vX kNrMg4lzIAvHxvF+JVuMGfvgEQ6rnF3zk/VITrxNOI9S7MJoBAvbBjIJ6ogDCzGBwz b+0C2EUKOm7LyfGzeARMoR0GYAaSulLxdKpsyrib+7HJugWKUOIYWi2VYyOcDMGuXK JYR2ghu2qEZ+byqK3eHA92JfEGIwrZW5t5t0hhDkk0h6JXzdNpcJEjpSZ8OmQGebKF OAwumPsHKowZAd51TsiHyQz03oRnb/RGtXVo6zJFv33MkNvVesjE3ydtBz6IkQzJ2I 69XfryZvYMuEw== From: "Matthieu Baerts (NGI0)" Date: Thu, 18 Jul 2024 17:54:01 +0200 Subject: [PATCH mptcp-net v3 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: <20240718-mptcp-backup-mpj-v3-4-1f6cd9b89ee4@kernel.org> References: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@kernel.org> In-Reply-To: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@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=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmmTqbJsWv7GKDjC0mY0lCIbvekU6AqrGGhKM9t aVmKX/Pn/mJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpk6mwAKCRD2t4JPQmmg c0AJD/9vyN3hZqg8CbJ0lC2lUgTUr9lMxHSRkftaaSEYgp7CLGgDUGZ7WK1X4UPF77sqnVg8DuD DpRjl+/rM+KJfAAEl/bawniGTujxqR4LZT4leCQ96XZErno95K1xSCOsFKTLGjZ8Sql3vZ3dOhx 8cVIQopLx9g6yK4YoXc05z1wtPlzF3qAahKKiy4Y8wjeBqD2797LztoCrNjzRdVPCRBqvzvQ+Sw 1Mpz7GDJlJW6ovTotupoPCVp8JM3JkxDPKemIjJnIFjVSOtJM9iqHjuRJBIhbj/ou3Xnrjn3t6I idntWLc0pl9J8f1E/KmqZP3SjhVvVHKymbK4+B2eGtDesBwPNAtCgbE03m5GX5igu73riKBV0Ss sAqvry7p1y4bX1qMcmJgt3O5zhXQAKbqOW4vwzw46fCys+Q7bnRvUg6PCQ3B2wIJiVOoor7BHfO BiVw28ABZVZ9vsiEWNqtCAABe+5lfcVmt4RsnD0ytK/i55/iDF7rTQQtiaJBhPppiSWt8ZiOLn+ PCEKj3fOKlLfOysfPIBglotrhUWs2ogtFMtLMYjkY4oYXj2kXsATuQrvJqb6EH57pFJzLb0qF4Z 2PJ3hPFRmKpwozbRAMyfdM916pkEe8dVlkK67PhacxhuxzxP0sbZG36Ycnkj0WY/ML9Z/HXMr05 jLjeNK7EeKnc99A== 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) Reviewed-by: Mat Martineau --- 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:13:34 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 42B8C4D8B7 for ; Thu, 18 Jul 2024 15:54:09 +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=1721318049; cv=none; b=BrA5JU7hYFzOdRkM8CfWXPVQCtK2yCE/EM+jNSxA5q1T95S/nk96orT+ZPSYn7wz5rOKzExDqJpUkGMUKqHrrhXU9smL+dh98BlImzjBQIVm911aGcTym8k0JXZDLu+XOn7IzkUbB5TT6oEJL2E0atomaBqll0L/mhTWz/9lVeA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721318049; c=relaxed/simple; bh=+4+H5hfHG7pX8V5vvNtS+y8btcJQ02UXCvlFX2Wpseo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mpG8hyR+qOaSvT0Nl+4OIO1hVyq6UkL8SzhC9GtxvPifQ5bqqur4/fsVBVx5LXnpvA23vjQ6JwFiRqpuXIS+fYAW4qvEyMKl/r/49qrwiGnr7xONpueKwThGtXuVotPNwisyd2HQVBGbmKVJMQHEHO5M8fmS3xHDUq7t5ELt28s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=K12YSB8/; 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="K12YSB8/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8C83DC116B1; Thu, 18 Jul 2024 15:54:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721318049; bh=+4+H5hfHG7pX8V5vvNtS+y8btcJQ02UXCvlFX2Wpseo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=K12YSB8/DKyv8uhxYX9r0d6CKOfpHNQLpXS4WV6wd69aUjCT72XxlEaa8BTSN+lVV mwxlDSq+ghUOqRh54MzIUpbaKzGW5MK5o52rV63SbweBfMGNbhTmhVVtpOCsODuj/E mzQME6hFVClHK36Ly043NPWYarnWofOVUuUYY6NMBs5PDboPzlcDA1i4baZHvpxf26 q995/505z3XEaySDZ52NMR4ISeAVnZDnH1rJHfmzKlTQuckSH0eCUGy/V28NOPIddl 0Fll/ClgYOT0fyp7rxMWSOagl+tIYjahfd0D7Pn6u/E+9ezU5OLicklv8oEl82vlM3 5g05NiroAjQcw== From: "Matthieu Baerts (NGI0)" Date: Thu, 18 Jul 2024 17:54:02 +0200 Subject: [PATCH mptcp-net v3 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: <20240718-mptcp-backup-mpj-v3-5-1f6cd9b89ee4@kernel.org> References: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@kernel.org> In-Reply-To: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@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=4231; i=matttbe@kernel.org; h=from:subject:message-id; bh=+4+H5hfHG7pX8V5vvNtS+y8btcJQ02UXCvlFX2Wpseo=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmmTqbxjEMUeDX7LhfmB/eVRhZjPjz3WRK7Pvxf dbortchMM+JAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpk6mwAKCRD2t4JPQmmg c2tBEACOqbIsK3QQw+755XnZzK8aVgUFyNOayyHOQzUcZLsGXly7JH33PYJqdcFRYOAiVepsFdZ X3KZi2kCkxrRixsILDQ4R6354oFEtQP4Tmdw1yDmQ7SLoaVDQ3TczG72+H3fj0w2MStU8nWvKrB sziQJ7Eoyx7UBP7VoiDmnn9KX4k/cNeoIwQn2M9Un5mv2wHzBfYGyXzUe7/Ej1v6fn3mAwivgM6 OwVmnCPb94JhiNgMFLhrO+k8KbCto6qnqhshleJB5SM1III1JIsRQtZmCRw8KdjNfQP7k+HfhOi Cg41f7/Q994GUip6skAEmJp4tzIVkPt377ePLxC90fzxJlawMIPUHkDHrkb1fyRZev6mfHr2hL4 9i4yXKX53AIS2NFStIiJOmdWKO02sqz6mIFCOSjzk2HQxMg2U0OfwtZG4rvr6wD4A+r4zjjS5Ka iWCQovhHf1oMyRQgRXiiNTsqMmp0afnzJzB2ZxYn9+qK55WOSXD0kens8SVeSo+Hr5MYO/1wdNK yT1lC56kM65tF9qa2TQvA2PiCpX65GUDXwMHJJ9mdPt/0UeSvbv0AIECyVex/r5hoWdEva9do3a 7d+rgCbbUrIh1QeGlrRg/VYnciW724UdNIyauMIhF6SASLXmp/iHEI6ztaZ/p4FQu4zsay8SrBt uKVI6+U6UQZHThQ== 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) Reviewed-by: Mat Martineau --- Notes: - v3: - Use error message similar to other JOIN tests (Geliang). --- 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..e6c8d86017f3 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 JOIN[s] syn 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 JOIN[s] synack 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:13:34 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 38DEF4D8B7 for ; Thu, 18 Jul 2024 15:54:10 +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=1721318050; cv=none; b=Nole6mCBMeemuSMHDwFZd4qvvHOziLR6xUl/7x+IvHXXRAAh/BxhviqjSy2VDud0xWNisTUjkCDmkyUBi/+x2T+Pg3QrTIJi6YQDxhOyjshVqiRs1OPUD9fpYL85mObZDlWscop7dwc8jC8YsU4FmPuPsbxlDjuwaS8PEkLQ2YM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721318050; c=relaxed/simple; bh=ZDZ8Zs9+UnNJsK4rttUm4nEmmnD7uvT6+ABRxskRfWI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hgmVjHQpM2G1Ko+EN5eHFK/PUdfgkkEKM9ri9+QeXHZVN0ZF94Cvwgx7LLI/Ys8eflM51O+llDuDQu8IIFfYcwWFWLaObrNqH1hGpPhFoy3FG6/lcE6debi8J32K8ZsN+Vot8PwA4QDaDu1Q2swVQwXcVr2ztj22FXGMW/+Ju98= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Vpkw39SM; 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="Vpkw39SM" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8AC83C116B1; Thu, 18 Jul 2024 15:54:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721318050; bh=ZDZ8Zs9+UnNJsK4rttUm4nEmmnD7uvT6+ABRxskRfWI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Vpkw39SMLE+MR30Sa5kdgnaxDa6sHDwFoIVd9+Vu3OFSmJrFmJO9DiLQg5sL2MFtK l7LIRHpWIZ0adNzL+/bHqSLeHHiKVB238bSYLrHJaF6ivL36WevMpy6gSZFVDtV2xe rJTXEg/8veON/lCdLr0vmm2jVcFVcIoq2lmO/9p8p4cfKNnJ8NFJLPVJPMaoZrB7hn MgDWCqU3eKwhXavRJPzfxz/3JHHDLfko8Qo7D1ICTdQzEliF8NgbV/x6mU6oDe6EIv ihuBSGSAMDbc4HcTQ96t5swgvZzprokr701bWXeqpTDCjt32HR97VT1EVxUspHwTef ohbTVX3EonoAw== From: "Matthieu Baerts (NGI0)" Date: Thu, 18 Jul 2024 17:54:03 +0200 Subject: [PATCH mptcp-net v3 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: <20240718-mptcp-backup-mpj-v3-6-1f6cd9b89ee4@kernel.org> References: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@kernel.org> In-Reply-To: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@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=5681; i=matttbe@kernel.org; h=from:subject:message-id; bh=ZDZ8Zs9+UnNJsK4rttUm4nEmmnD7uvT6+ABRxskRfWI=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmmTqbx6VfHXPV16uDzRUlRVp+CQqbeqYsSDQA8 +E+yPTyDiaJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpk6mwAKCRD2t4JPQmmg c179D/0fpVIbVG3kiducXs/Y54kDxU/nYh432JrRHvnXQtRvOP1InfoNRoEySCP36m27EHoxS5x oElJ76t9iB04VI9mjsCpqx1MRBse7JHkmVwyte6JOLVLi1Gqx6xzcr3YVpwNtZOttPf9OhLtRPj bg2VHWThxREkgT6eZmkkLQALTIeLCUrvNdpaR5sTNPhjiuhE0pdAHkKIyfxcOh5/nQkJpV66z7A EF+sQtRoAxH3dOE1+dRY4K0v+LbWP+qUzwr43WLyPVtatkfPZQjpS+mSL8z7r4TTxZ20QDRrPqB JbeYAg7rHbNb7If9q7jiVkJ4KEkB1XMXqdQ1uMijEVPTY3d6dHyrWPZua8t59QQQw+Y6aA+OFKj xlqVL5Wlvp5oBlYeeIJVw3XjIuUPnzr/2wHETeNZ0dkzqqnWtJkDAN0usfCZ/79C2O7pksQjmxC OZqPIJ4soOcN/FeiwVBScBSeGHjeEcFlck/BYvIruRlVxyYBErXdVx3cKNhSZBdfd5v0DjVVqDx DhFiiRkyGYEAw9GAsaSu8qZ+BVMVnnPn8AXlxQmzkY7mOB4XNXo3vfoQatRHRoSUFvQSX8D6pRg jTqhaL9rNf9IyT9umO8VDi1RuwhDAN9mQ/k3vxQ9+wnfO3l6swmwBMCZdk/OJ8KlB+WBzQK67dU dKNegT7QEniwjog== 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. 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) Reviewed-by: Mat Martineau --- 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. - v3: - Use a new dedicated helper instead of re-using mptcp_pm_get_local_id() (Geliang). --- net/mptcp/pm.c | 12 ++++++++++++ net/mptcp/pm_netlink.c | 18 ++++++++++++++++++ net/mptcp/pm_userspace.c | 18 ++++++++++++++++++ net/mptcp/protocol.h | 3 +++ net/mptcp/subflow.c | 3 +++ 5 files changed, 54 insertions(+) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 55406720c607..23bb89c94e90 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -426,6 +426,18 @@ int mptcp_pm_get_local_id(struct mptcp_sock *msk, stru= ct sock_common *skc) return mptcp_pm_nl_get_local_id(msk, &skc_local); } =20 +bool mptcp_pm_is_backup(struct mptcp_sock *msk, struct sock_common *skc) +{ + struct mptcp_addr_info skc_local; + + mptcp_local_address((struct sock_common *)skc, &skc_local); + + if (mptcp_pm_is_userspace(msk)) + return mptcp_userspace_pm_is_backup(msk, &skc_local); + + return mptcp_pm_nl_is_backup(msk, &skc_local); +} + int mptcp_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsigned = int id, u8 *flags, int *ifindex) { diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 7635fac91539..37954a0b087d 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1101,6 +1101,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..8eaa9fbe3e34 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -165,6 +165,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..23dd0ecd5fbc 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1114,6 +1114,9 @@ bool mptcp_pm_rm_addr_signal(struct mptcp_sock *msk, = unsigned int remaining, 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); +bool mptcp_pm_is_backup(struct mptcp_sock *msk, struct sock_common *skc); +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..0e4b5bfbeaa1 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -100,6 +100,7 @@ static struct mptcp_sock *subflow_token_join_request(st= ruct request_sock *req) return NULL; } subflow_req->local_id =3D local_id; + subflow_req->request_bkup =3D mptcp_pm_is_backup(msk, (struct sock_common= *)req); =20 return msk; } @@ -620,6 +621,8 @@ static int subflow_chk_local_id(struct sock *sk) return err; =20 subflow_set_local_id(subflow, err); + subflow->request_bkup =3D mptcp_pm_is_backup(msk, (struct sock_common *)s= k); + return 0; } =20 --=20 2.45.2 From nobody Mon Sep 16 19:13:34 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 7474C4D8B7 for ; Thu, 18 Jul 2024 15:54:11 +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=1721318051; cv=none; b=hNpK6cPu6SGjxp3+jerdpExRDJF0xIA/w2t3Osq9BIJJW7e/I4RJnsw2bKnMZWzbakUXUUr8yHcSbiizJaiDmZPRVtB26Ngj7zcCfWLEzm4WuJkzREdMt5OOP3zGw5USV/O38C+7MxrdgICuFEYk6BYeYmk7HAjQETJofUmrjv0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721318051; c=relaxed/simple; bh=8JLLnKMqljQzI6JGwmBICIuuJvxiD6KinxFxILNjiWs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jAyIDIN7iCc1y+yE3lf7L/Bhsy5P/d/xoWcQlIrzDT6ae/cXhHyMRBnh+xFUc1otKOXlvepH7IHGgh8bJnj5DANXtF98am/uGU9Np20EjiVPNwDIVRgzwkQVxXSzh0DhC7CRnQIaqQiZaHgZMei1k5FgRHMMNnWFwARTK81i1yM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gi21LgIo; 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="gi21LgIo" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8AE14C4AF0A; Thu, 18 Jul 2024 15:54:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721318051; bh=8JLLnKMqljQzI6JGwmBICIuuJvxiD6KinxFxILNjiWs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=gi21LgIoNd/j00IF8USmselgX6dNNaWkMP3mAra7KvXsoQ/o697ZnGcBtVMCAoRQd NLZRj+8nCa+OtCWAcDWhBNOIa4fmTYnbGQ4OYAQ1zh7Xcwc6mWgK8Licsna3QQelJd X7Iz4MHsguSDi2UZsoGTQfP4exOAOftKi4lag4efdtA84QcMHh12Z0c+i/sBo/qrcf NSBgEgTD9t6RyCzud2Fmjuprcs8AtN8eaXwDzL+2/eB624F0/0hFcPeyu8V9Qodwvu uvnb/EFGciSDcfh7DvZh/yWzrgLVKhU0XEtbLmYj0kd37qsfG8j9+pR4Ve05+Eabhl MHX6KXpqy3fHg== From: "Matthieu Baerts (NGI0)" Date: Thu, 18 Jul 2024 17:54:04 +0200 Subject: [PATCH mptcp-net v3 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: <20240718-mptcp-backup-mpj-v3-7-1f6cd9b89ee4@kernel.org> References: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@kernel.org> In-Reply-To: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@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=8JLLnKMqljQzI6JGwmBICIuuJvxiD6KinxFxILNjiWs=; b=owEBbQKS/ZANAwAIAfa3gk9CaaBzAcsmYgBmmTqbs+1Wf9RaI70zemVWSmdiquB/2gxH3dxQG MazFNVCBnaJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpk6mwAKCRD2t4JPQmmg c4QNEADIO1Yn9S/kneodeT+U3+QgcU8LrXILqJ9lhLBo24OX7L0tVAgnBm+eQnux6zkQvmCQAO/ 3oXPF+7fx1s/aHYBiyhqovcKQvKtPgkpfJ7mD2BjQLNLUmkVrul2Ny9aAa6m7Ptwkr3dpi+oqph O5WHvA0kumGqnM8Dn26ySZzS8Ch7rhSJPyn8il/HuXQcFMHSJf7jtjGnMwGEP6AjWUoZ5loBCZW ZOCEkIInBY1ZAnD/FP2iVaWS2P9A9vHh+5i1re4SCvPtvQfFVvPMLE2TpgC4cLYmyyCesIaIwlp 3lSQ5LiyuTSiACn7iyaAzYhFUeNhSQ7tskNwA6D0uWxqGi8+tAG7ZNL8c14SurzPNh7z+OIV/Kb 7KqtF9cQ36p6hm411XwIFuSlupL7q94tVtS53q9oCU7tYk9eAfeaQu4N9zOQb9m+YDPdO+yDvgR D4S+d4zEor63ucObk1cSpwH4mNGL5oY08sz/o4ShhfXQXwAd6VEgJrYrKetuwYe7LF1fK+sAYNV T4ZyXXAkPshZir7fzK7TL1x0NPlFfdsdTrQyXVYmLd2uTjF+q3DboNAMVPJsh7fUQQU4asScVml hyPr0+CCQnqES/2GxPqJ5gfh47Z1JHmAb0KvH+pj7dOukc2gRsjVJmsM9thdx5hbxmdpcChznzc ryPQdqKqTUNlAjg== 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) Reviewed-by: Mat Martineau --- 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 e6c8d86017f3..4df48f1f14ab 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:13:34 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 33DE14D8B7 for ; Thu, 18 Jul 2024 15:54:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721318052; cv=none; b=VUyLCjCZ3H+owm9qL4SfZpC5IjLBOVKFlbItNUmu+a9aK8bUkXSe/RVXP9sbr5rw5bkHpPNLHsJX5gdVL3u7iC+T5575PGTkAv1+9ZThqpW+Du9XGmF2CiCUytEDSBuLEeTPAXe2DyAvE26Lbj25op6vdwJwz/1OZG5HiMDQ2hY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721318052; c=relaxed/simple; bh=o6LlgxvdIEwLce8tmc9hgvLbwZq89r/BeJFILy0OplY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bIPdCHhCtGubtsCJJbUKiPXHLs23knQusWeow6KeM91WgXu8x17y9IYDdAZV4g+yydhdbcAh28Ma5+o9XADESrsePJIP00d5ypVcm93y88xSU8W/bjByritXwQr3BwYSsTbQMU7Hy1zJp8GP/AsUnfFh3aNKgN9iP4PKvV4IIAI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dVU5nbPW; 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="dVU5nbPW" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8A11CC4AF09; Thu, 18 Jul 2024 15:54:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721318052; bh=o6LlgxvdIEwLce8tmc9hgvLbwZq89r/BeJFILy0OplY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=dVU5nbPWDnuP7nXq2tR+I7GIrTLzGmivxa99PPwoe00vXqvr131Ep2Z2HM1sQVTmF FEorshqi0xN0f9be9UfpTALPz3XFyCpvBTNxn3pwFZtoh6wqmsssiJxbfjzxPqFU/L /v4MrGpR7zzKhJ9coC63OWT9D3t1+iH5VEJ5XVjG2XLUVY25v3/w5yg/lbhnomKpAe cr1laZigT2OdNGXoeqiHzauGgI4KDX804jfSFuIR+S5mqV6B/uSCBiLZ0U0AtKiDup rlbt82Oz5T/bVOACqh6zNXICiU762njzXdIrhkbc1QttbvOybudjbtyVWgRKt+hAMw Rm/2P0SAvIy0w== From: "Matthieu Baerts (NGI0)" Date: Thu, 18 Jul 2024 17:54:05 +0200 Subject: [PATCH mptcp-net v3 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: <20240718-mptcp-backup-mpj-v3-8-1f6cd9b89ee4@kernel.org> References: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@kernel.org> In-Reply-To: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@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/ZANAwAIAfa3gk9CaaBzAcsmYgBmmTqbCJ2HwpDVYEk9CzL0gM4tusMzvJWcRKHAy j9h9SssDNCJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpk6mwAKCRD2t4JPQmmg c0/PEACSWxL0dsFOWxR3sMP1YlZOzNY1tdsI3AtD1rAOx1hbKKNFlxZF971FUo2zgcJWHG/s1Dv 1pKkkAwywd+JMG2fGKm9xrqRCHU19MK0c1fJsGvb05gmKefxoahBs9ZI3l/20uMjXzwaApvLPa9 m0wz4/fdibNNgnK2+tR3TV7e2IecweVp/OcqfLm8Uf0Hwbs+dIDRl0imah3J48uIOSuik/JayaA EMvWeNcPiUhG3tNg5WYXSLSOxdcXOSQKeFoEy+JT1UoQ53jTeUb77ddKYr1cj2hy9eKcabVgYhW YC+HXWrrkdhWKpHIP/JK/0dgmqu058NrN0svEtyUfXwqNkhzEKof5QZ8mPSbL19SavF3b3TlBwf AdOjhtinPJtH64xZqxBIvYlHaG9WBnAktJ09N7Bae1vfZx8ctVGj0it9tEulYeH/6Oybyiy0Up7 QWRbtLl4nPnNGlLs60h6IBESgpv6F7CuwJXlkM+J7lKTwG9zcJt65rJodekOHxH5ELvltp21SO8 1/gC2LK0rtixftGH3uDPo6ZLzYTawS36hfIfwLTLO/noCPQFWOzpeNI2RsqzKdDfyxl1IC+iA9h lfx/bvKqzYkfJENqu/KhHJX/6KruJSFD62WzdMIPHL2y5al4bktXQeaKYuXOOVfrjqkh9amfZge 9UwtPANx4RFhCeA== 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) Reviewed-by: Mat Martineau --- 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:13:34 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 769384D8B7 for ; Thu, 18 Jul 2024 15:54:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721318054; cv=none; b=eouMymBd/C2Tu42cqlFIc8CNtgx4/LbaaUIxyWDTP0HYk+nrbOybf7RdH5m2dUPrCGPt+LIOuEYjr5g0HXyzZFmzfSj4+NMQwnVoE7qhk9lT2pnSN0S3Mg+ZHsSTWCHA4DN4b84grYvVtp3QiwD22YAmofokb1wjyTlMeHJew3c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721318054; c=relaxed/simple; bh=Fn73rImpeWC8EQqc9FknandKAe95OLv5q72DUryxtME=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EJEA+/hY2sRu1DuI4aU8GYBnYdm0MGx+dbxd5MuP8/o8oUEYEKwOkg/wCHehGk12jsHjqDKlxu6YylVCrJEwAVaFQJH+KOP3kUaujxPNDs9gkYA4Ezr0qWEMi/ijKeLRGYbxORkBE5MPeArXaqoh3gq0iGDeN68nSDPhoXHpLG8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Vx18+0TX; 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="Vx18+0TX" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 86F66C4AF0C; Thu, 18 Jul 2024 15:54:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1721318053; bh=Fn73rImpeWC8EQqc9FknandKAe95OLv5q72DUryxtME=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Vx18+0TXOLHhmHHp5qATjM67IedMKTuTHucWn86FIvGDLPEs0Pih7vy7dYodoFppf 0wIkkUwdUgBZyoHJu1Ht9kwcFk7Sf+fENCdcG7cVlsBVPXutMtkCmfDwlxyIFkYr0B 2RbKia1Z9d1ImxirsH8haLcLkVMhVQvJYbTkcljdOmUl2qjxVefnbEMb6QEbU6HKhR B7utt9IB+fH4DcPHuSc9Fd1gEyflaHXT6piDl3nCBhyyvcVB0Y2EjqJElCpq818Z69 GDQMZGrzWq0wm8wXjZnyPcDEeSfrdGpsjIcfI2UbKzUhEzN497a7ckTI1tFiI/MH8x kPueYP1lUCv5Q== From: "Matthieu Baerts (NGI0)" Date: Thu, 18 Jul 2024 17:54:06 +0200 Subject: [PATCH mptcp-net v3 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: <20240718-mptcp-backup-mpj-v3-9-1f6cd9b89ee4@kernel.org> References: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@kernel.org> In-Reply-To: <20240718-mptcp-backup-mpj-v3-0-1f6cd9b89ee4@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/ZANAwAIAfa3gk9CaaBzAcsmYgBmmTqbvRyP5z5HhM8q0lhyvhnZRZ8stOzsL4jWh ud6vhWHqtqJAjMEAAEIAB0WIQToy4X3aHcFem4n93r2t4JPQmmgcwUCZpk6mwAKCRD2t4JPQmmg cwSGD/9o+gn7O3FYQtJQxdMJkrff4EGmEG66i3j5SzgddfAhnD0fa42GY0kqst1/x3Fe/Q3Sifw tj2Q09FJ+7LKinxbvzJdA67sNp0ihZCv7bX1sGG0pTbsBm7VE4rCUeXszekpN6XriXjuf/YR4St EJ83/sI2usLLBjXoNGgZemqilCH01VdBKosU54kpFYlsyk60YMrwejzIVLHyn+fiAaQWYpVZm9N yds99KqK2wz9eDG7X/omPAYuhwkCK84eddaMPkMXpQAZWYWgU+EYOYjVeV91uRV4bql+yulBLFy lYcJ2b3Z/QLHmoJzdBcPwUMgqtT3doRUJyPGksrP5W2G6TG6mi/iL+AZuvkVkdZ5/OLWp06lz4j rAfB53JB5sTfLpRMXf7IgYyMiERWE4rF8EH253/Aqv+lzEs38MAnU1j3F/b8gRWEAifQJ0tpJPt 95yYQoeuY07L+8s6z0HaKus153DIks028/pUI4we4vUOKVGMZcKc6wDRM0PIE8SwwmmuaRzqR8C YLebRHr6DRwj/QFeqK6ETRB2xg/bf4YUkHaHxRaWpJggAscf7al+9P7iKEao76q4zjfHoumsOwJ fiQmMd1JV3KKneKkLbve81N0/GdNBVqGjIlr8/+vYZ+T+pFOmuKLE+0I0BLmOie9xFVqETiROCa 1n69tamANyQhOtg== 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) Reviewed-by: Mat Martineau --- 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