From nobody Tue Feb 10 01:15:40 2026 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ab0:35eb:0:0:0:0:0 with SMTP id w11csp3164579uau; Thu, 23 Jun 2022 07:55:06 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sGmQiSPi6iEi9A48aoA60Zsrow3fxCiCObsOQDaR4miFzx93FBP+Zp8zLIKneAiHNh+YUZ X-Received: by 2002:a54:4e95:0:b0:32e:1ad1:2d4 with SMTP id c21-20020a544e95000000b0032e1ad102d4mr2484139oiy.235.1655996106101; Thu, 23 Jun 2022 07:55:06 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1655996106; cv=pass; d=google.com; s=arc-20160816; b=upOSXhqAcSt05h3l/foUDX2fvr+ZRmXXyCQz6KYigDli2Iw2bT1WPohoru+GjIpw56 G2+U21rLgerkMCBGFuoy4MFaUrU7fMa15agF012lXoeCGGn1j3vy+2vps5WRoBg58Mz9 z5HdAqhpw+1iBUgeWTiwb1HGU1SAVzXWwxpxoS7U9vemmAM7LjUmw7+kgCQDMKN22h3c KOzl0O8HIXrgADepDNTMF/HUJKnwI99BHwuJyL8sdalGSUZNeaB7DYxVK9wAa70mcVXl 0fDNdvR6dmKaMam27IHdPcgwS/2GWEexz4/X/Pb9zozczqSrRfNobgNHHmJ15nBLccRA e7uw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :content-transfer-encoding:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=YXAPynTVxZu89adkwojsAU7JghYEy10fp7QxGK9ooj0=; b=JjqSM1zJNoM6mN24fcZ6japXYTj/+9Be0DEvjhUjHrs6+umnXIqvFAaNXrz/qEYEjw mTd6Drap0LNqrlNU3Km8Si/D5FVW79fyS0A6ciGRRJ5gMGNlhGYEWErmwQH4iF8yuyz3 Zc9pADFxZ1qV+/IctiTjk8zHeMu1VrjC5dGHozNW1FS7qaxdPWFSudG+00+n9H6MIejR KChzf4BKKx6IRiPFcL/ZyY6LfgukunoDHr6aDzoqEu/bFGtgKI6z7Syds3VGVK7yoj+n Val5F6cc3YU6dssekKp0s7Xm6fEGmkdahL4RugV2tUEsAVYcG0tDExV/d3KuXQ5BarZM 6bbA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@suse.com header.s=selector1 header.b=Nn1T8NuL; arc=pass (i=1 spf=pass spfdomain=suse.com dkim=pass dkdomain=suse.com dmarc=pass fromdomain=suse.com); spf=pass (google.com: domain of mptcp+bounces-5794-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5794-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id r127-20020aca4485000000b002ef0c34761fsi18433083oia.159.2022.06.23.07.55.06 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 23 Jun 2022 07:55:06 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5794-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) client-ip=139.178.84.19; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=selector1 header.b=Nn1T8NuL; arc=pass (i=1 spf=pass spfdomain=suse.com dkim=pass dkdomain=suse.com dmarc=pass fromdomain=suse.com); spf=pass (google.com: domain of mptcp+bounces-5794-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5794-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by da.mirrors.kernel.org (Postfix) with ESMTPS id 4255C2E0A77 for ; Thu, 23 Jun 2022 14:54:54 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A530B43E8; Thu, 23 Jun 2022 14:54:52 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-eopbgr150082.outbound.protection.outlook.com [40.107.15.82]) (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 0F1D41FB1 for ; Thu, 23 Jun 2022 14:54:51 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EPhojWMOTjQnf6ndBP6/q8GfOOejl9NwvQczRDl6/HEhgIsJiKAHimwuj9vwHJJvEwsAg7Xz9ZRjzzqhzcHnuqsy2IGL5SBaGUxOlQCZauWFWJ1Hyqmpz4uGG5hW+1tBrBNpvKcFSvKUFqTV0wGIM9RCfn/PVw1oTSD8n0OVwQstS0+a9NufRfGxSJeTdVKubq6cXOzjG7Ld4uaSBWm5V6H/HbFWRRMkOXoYNjb3gF6KjklPs30sHS8XYKhZvXhfvvmtO7iA6At3uKorsygjCHwVnPOAR1Hh11R0H08BsZl9C+dGh/A9ev0FOCcqiQQ3TGS3PRqBqEFLLlX2XDJGsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=YXAPynTVxZu89adkwojsAU7JghYEy10fp7QxGK9ooj0=; b=hv0KY5HV4/AvqJX6BZh1CY4NPfihh7P2P+QORG6Lopbqhd48hJPH4wySQhmIXWNYd+DlGgxDyjZgsGsZCw0rnAuZkd0URYJH8cbb/JuCBnFPJsDlAwDxGTIQCq5A/LjsjWTvqGtr8YRD9XFh4jA1OoJiSLzZoeF3OAJj9oIU7ePO52ZSoSiNtf7NAqCdftuYsKHmx7wTzPs87jx1gW1qi/ME7N9ECFxS1Q91n10+LK2R1XzEKhk76/1io5hOFy7f1Zd0lJaXBXSBPZWYBfc4iZYQ8ObN27haW+fStfaJQqfPqIiq6mP6pzCyCmAyIsDwRzWsLxbU3J/foiJqtQSUuw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YXAPynTVxZu89adkwojsAU7JghYEy10fp7QxGK9ooj0=; b=Nn1T8NuLb2TyD1AHPyd4hglgaAJSnxt6cOTT6D0Tsw5NxMzicO3rnGK0XQAq9z71kwHfQhxhVpmstmH5oegMlYigUwQpgwHZ3NXRdhr1iZWKichzq7WB7zlr0gNMbPuyNJWPLOAaYYulq8RVInCBEpOEMvYchH0wDxw4VgNbB7iBizfuotNqyT2TDqklGXpidjk+uC9LNlrnT6pF0mP5wTYDZh93jZN8dLif275rJiyrrpGA8W7pgjP38X07sT05Kw+ozY8c0UAqgeHyFz6q8dvi7ns7x2ejlmQwO28Ma5NhvqQrShFczc36GhAy8JiccAfsfq0ejmD36Mr3BSKZPg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) by DB9PR04MB8299.eurprd04.prod.outlook.com (2603:10a6:10:241::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Thu, 23 Jun 2022 14:54:48 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::8002:50a5:a57a:d8fe]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::8002:50a5:a57a:d8fe%5]) with mapi id 15.20.5353.022; Thu, 23 Jun 2022 14:54:48 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v9 4/6] mptcp: redundant subflows retrans support Date: Thu, 23 Jun 2022 22:54:20 +0800 Message-Id: <4e48d578633ac9363ae80e1c8709394fe46b6f4d.1655995770.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR06CA0184.apcprd06.prod.outlook.com (2603:1096:4:1::16) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1d071b25-3f8c-41ad-9bb4-08da552851b9 X-MS-TrafficTypeDiagnostic: DB9PR04MB8299:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9GqihoYmA23YopmuFRy1m/qdQycDC5u03J5g02HXXCd8bogMNWxDIyl3B9ZX5QS+wz3SUcjNG2JhAgaPHrLmNDMZxOtLc0suzjDpwP+gfYqfWYdqz59FdlwogXQdYN7g6aDYOxgTZI/etE968MoyKuhnRn5bCoWYYNCnYkwQbJLO3ISAmmV3CKWTpFR7suVAiyzgKNos5VSaO2deV7OgcZt5gFzXLCv+PYqeTp7zJxcM8X9pcdsdDPEWWaJ+5g3Fswpd7B3W68fYXZhixt2rnUX+ZDmgGvhU94SHLGnIrcIrvReGUP1vc8OMtaFYwZGS7qiFBXXFR75/50K0+PfNT4xUUG47EutLmUYpwAjhvOtDOPp3AvSF/VJ6a884qW+A8wEO7L1ZAwVO54juPcpqHmdsOduTqS80UaV7CJFWv1rwk6b5ohbyXwK7aMGgAsntwfc/0TGCHwAgD0bEwrLQp0q6wLL7oLee9Tsm8weNIIGuJrgo/9axZBxOegrskwAyPXdDDLngB9XuOMz2HfEImLiUigE60DpYYPmA1Qgg4vXP0jtJwaxmKhdkilCAEVkJMZXc7QSn9F9mzPNiztB6DvuCIfPpvaUZ+/OfiKreTLUaEqUQcQyKWe5+Ha6s6MELiQ7slwtxchXO+/kQ4vLqGEiJsVHIEraOHG1uvm+BM6e3aKnZPQvGV+Ykb8KfknqXbYwd70ad+iBCsH7vHGaH9uEFaAqeSh14/94agMZSm3FL3dgetHIUpTUI0cj8jT0J X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(346002)(366004)(39860400002)(136003)(396003)(376002)(66946007)(66476007)(83380400001)(4326008)(8936002)(8676002)(5660300002)(316002)(66556008)(2906002)(6916009)(6486002)(478600001)(36756003)(44832011)(41300700001)(6666004)(86362001)(6512007)(26005)(186003)(2616005)(38100700002)(6506007)(107886003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?KPE2uQuGcSBUY+1l3TUApVuBgd/zQzuWgtxsihMVy/CONbEqMOUI9F6TuJ4X?= =?us-ascii?Q?3js+hIHuHpYKcEte4GpbgG9ydqR0j39dGm1QIOjcU/xA8+s0mSrQR1Pj09NT?= =?us-ascii?Q?ED0vmt+CtaMJyWlTQL9B4d3ydtfO9JuI0CGNm/TAYR48h0DiSr8y++Zwl1Io?= =?us-ascii?Q?fiDWkek3hFZ4drq2KKmwR9FswBRzYZYtNyo4f9Q1ccJQkQCtrqMbDdCERzAC?= =?us-ascii?Q?O3RiKnNDIrjdpEXb/DA+XI2hrLyjRFj9eJGetUTXkueQtUwNmgeIa3NMtbTL?= =?us-ascii?Q?7xhJzjqur/7Mmplqe+dIjYaG98P5802Pd6IPPULBQqyAtboY+/M45D9eL2cA?= =?us-ascii?Q?vFLWVDE3qHPUGJvaUgsqXeAk8iKuudW+e//F2mEQJuGd/VrAtM9/NGGUMrvo?= =?us-ascii?Q?8kzA5dhvknSduCoz+o6yabAAd2hkiZJslvMzfC9F++w+OQ0vGGy+u6kqlhav?= =?us-ascii?Q?dQv0zy4umg6gFU8Rw8dnSKPv9Bl4YzNadZFNn00cZOQPvlE6R3+hfOmGdU4S?= =?us-ascii?Q?Q+Ba99msO4+2a2/aZqV1E2DwL6mosBSGhmRgqgIFd5d1yNwkmvYA3aIkLuS4?= =?us-ascii?Q?Nl/e/olRPTEgQt5b7Wv0cHTdmU+TWOkOP2BURHtXaPMv5UoW/zI7M9F65Vrs?= =?us-ascii?Q?vHmfw7aNsJD55IMuXI4hBIVZV0DZqp7qLmW+BOmvImPm0VM7VmUNkVx2I37s?= =?us-ascii?Q?z65i91ZXITBLfYxTZeKg94fJSkw3RzzFVEoiA2+bgzTrB7hUr+cv5UMpcFsL?= =?us-ascii?Q?/UJrZ8VIA47zwhw2wFsz0njsiw+6hgtY00AciDYFV6r8wql/cdxaVsooqK+h?= =?us-ascii?Q?gXOtdZwlSF8lmmvEXCRLr/B+wiUR/lA8FvSYjI+tXBVxFYGZd5JMbBWZ7pj8?= =?us-ascii?Q?GXoYq6bao5MZVWVXH3RVpX5aUEUCCVqjxHPhgrpMfstpaEnvVzYAknyI3ftp?= =?us-ascii?Q?4qO5WhsvbAMksbDRWvK2lD6uUY9qpEpNiwUzPr53e7d95gW6oumRyijIJ+Wo?= =?us-ascii?Q?y8csIOxeR/O0Kt0O2mfFtNieGZ2RIt+F46aPOZgqArFVhBiLC97TZI96IJPB?= =?us-ascii?Q?vIeFdlLivaefvQL16rZfYNVG9zEKf2Clj6UBi4BVx4/M7ZmJcye5S4AZuXwC?= =?us-ascii?Q?OVOJ2uFRC9DVTXPni3KCwwc7IEBSqSJsHPxsAMhfDsT2w54dz3mw8ThDtl/n?= =?us-ascii?Q?Q49NDn8zRqRTdrZtz+Wlth0ty7zRs9+vzs3kSyAc0oMnGhWqom7E80q0xSs0?= =?us-ascii?Q?McDRVIAZ+jWvcJdtw3pfVuLwcShsvXLXsLyJ0Mh+ApblBZfCIqtj3hXUzM2J?= =?us-ascii?Q?jD2bCOEgjuJZLpbCq3ErPR2kUxdDqahE2NPRsC0c4b44P3E7DYNWumO7Du32?= =?us-ascii?Q?HVWuaJaiCpqSZdQ1ngpcyYfyfNA7aUcxrltxpMb8lCusehgZOyFy+VB7mdta?= =?us-ascii?Q?jq+3yMAuGaRtDeeXFsq8akM4UN4+i+VK/5WpfHEl3fLVkFXAsM2GjhoYY2rF?= =?us-ascii?Q?OvhbFQmmZxpkzrKi+3e4Su6tKevsqZ57w7utfFdd2hy6nyYOseyDlork4BFH?= =?us-ascii?Q?sULtPM9lAi7ni7bX/3Lwn0mgVcs+Zm11BpI82SVsdpR6uPRm/2VdT0Aw5dDX?= =?us-ascii?Q?L0SnbISL5kqvBRsQ9tzoouo0+7ZP02vu3Vwu1kt3wCw/R2LV2pIMWAAJ9UMH?= =?us-ascii?Q?udojA9IpoaTrjjblkAlUHzNXIN7kjebBnPCGGYDO/vgeOWfzwgv3N4OVRJlg?= =?us-ascii?Q?PDNBuP705cwyvVwsVzb0RFQmB2sgblQ=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1d071b25-3f8c-41ad-9bb4-08da552851b9 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2022 14:54:48.6548 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: K8SklWeywGNg3SgcNiQLDlSBaN2IBu+YGDXYnNY+WeSC+j9U0W5ZLaF2Ljk/6vFDAQkyovifNf+9pAjBthbQtg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB8299 Content-Type: text/plain; charset="utf-8" This patch adds the redundant subflows support for __mptcp_retrans(). In it, use sched_get_retrans() wrapper instead of mptcp_subflow_get_retrans(). Iterate each subflow of msk, check the scheduled flag to test if it is picked by the scheduler. If so, use it to send data. Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 62 ++++++++++++++++++++++++++++---------------- 1 file changed, 39 insertions(+), 23 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index d09b01f1dc29..0390f3d951ca 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2415,16 +2415,17 @@ static void mptcp_check_fastclose(struct mptcp_sock= *msk) static void __mptcp_retrans(struct sock *sk) { struct mptcp_sock *msk =3D mptcp_sk(sk); + struct mptcp_subflow_context *subflow; struct mptcp_sendmsg_info info =3D {}; struct mptcp_data_frag *dfrag; - size_t copied =3D 0; struct sock *ssk; - int ret; + int ret, err; + u16 max =3D 0; =20 mptcp_clean_una_wakeup(sk); =20 /* first check ssk: need to kick "stale" logic */ - ssk =3D mptcp_subflow_get_retrans(msk); + err =3D mptcp_sched_get_retrans(msk); dfrag =3D mptcp_rtx_head(sk); if (!dfrag) { if (mptcp_data_fin_enabled(msk)) { @@ -2443,31 +2444,46 @@ static void __mptcp_retrans(struct sock *sk) goto reset_timer; } =20 - if (!ssk) + if (err) goto reset_timer; =20 - lock_sock(ssk); + mptcp_for_each_subflow(msk, subflow) { + if (READ_ONCE(subflow->scheduled)) { + u16 copied =3D 0; =20 - /* limit retransmission to the bytes already sent on some subflows */ - info.sent =3D 0; - info.limit =3D READ_ONCE(msk->csum_enabled) ? dfrag->data_len : dfrag->al= ready_sent; - while (info.sent < info.limit) { - ret =3D mptcp_sendmsg_frag(sk, ssk, dfrag, &info); - if (ret <=3D 0) - break; + ssk =3D mptcp_subflow_tcp_sock(subflow); + if (!ssk) + goto reset_timer; =20 - MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_RETRANSSEGS); - copied +=3D ret; - info.sent +=3D ret; - } - if (copied) { - dfrag->already_sent =3D max(dfrag->already_sent, info.sent); - tcp_push(ssk, 0, info.mss_now, tcp_sk(ssk)->nonagle, - info.size_goal); - WRITE_ONCE(msk->allow_infinite_fallback, false); - } + lock_sock(ssk); =20 - release_sock(ssk); + /* limit retransmission to the bytes already sent on some subflows */ + info.sent =3D 0; + info.limit =3D READ_ONCE(msk->csum_enabled) ? dfrag->data_len : + dfrag->already_sent; + while (info.sent < info.limit) { + ret =3D mptcp_sendmsg_frag(sk, ssk, dfrag, &info); + if (ret <=3D 0) + break; + + MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_RETRANSSEGS); + copied +=3D ret; + info.sent +=3D ret; + } + if (copied) { + max =3D max(copied, max); + tcp_push(ssk, 0, info.mss_now, tcp_sk(ssk)->nonagle, + info.size_goal); + WRITE_ONCE(msk->allow_infinite_fallback, false); + } + + release_sock(ssk); + + msk->last_snd =3D ssk; + mptcp_subflow_set_scheduled(subflow, false); + } + } + dfrag->already_sent =3D max(dfrag->already_sent, max); =20 reset_timer: mptcp_check_and_set_pending(sk); --=20 2.35.3