From nobody Thu Sep 18 08:16:30 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ab0:35eb:0:0:0:0:0 with SMTP id w11csp1814867uau; Tue, 21 Jun 2022 02:54:53 -0700 (PDT) X-Google-Smtp-Source: AGRyM1thckzE4bq7QMBY6pZHbF+X4eTSvQTOHyGXGXkJiofcHfMIQgiWaQZS0OMlq51Xs7e39OJd X-Received: by 2002:a05:6871:28c:b0:101:e7cc:fad0 with SMTP id i12-20020a056871028c00b00101e7ccfad0mr5645961oae.269.1655805293310; Tue, 21 Jun 2022 02:54:53 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1655805293; cv=pass; d=google.com; s=arc-20160816; b=NYdBibZ3Qq07A9tMa4vT68UaR6esONtxcYrXtXx3RUv3l/2yI+nD5SOpqo6wseEXiA 59bfPtBBGc72TdjA2wdY7NtFFysQBH+wbOeWvTULykpthJL0A3/kbk1uCmQq2AiTaFxp FkikTjh3jkkQMvYoYADPA6SgkijTaU88SNh7kiT+umQaFsvv7K1Dp69ws3D87CN3IrHM d50v29qQf1ryS3FQJONpfMKZRx7gidJIhBtmM9ulZV/+b1ELa9y3M99EKIiOH6/07ZRJ AXNJcGdZPXsp481vfPKLKGsxyXElXcGKUATFDwPXE7yXNdx+He035xjZOarTBFDjkyuA rn1A== 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=s2RYVfLJgh0YWdxcdVWjJWezSmKBQCijAZjYZPWP86s=; b=Tya+2bbO0AOfnVz3fOvtFuNbwBAWIPkMm5zkw79LRC8b0t6wyv4Y6wFp/81kWJGVgZ EFfCqghYDc0DxTAf2tN1wYzOWObLdBZqeev9aq/LPoqFO1wBOyGo662lADKZ5TdPzXM5 UNDLBswn/nk5ncaT33sGGRNK3keVzj0deLqDnn4Mb3J8lyyPYTU5QRl/CyT7TAP5gB85 R9HP+7o99YbdXDErZnfyYP/ClquGmdLrrMQJxBFrbxSzM/NkUy7C6B8j5Eqm60r7Z7tX umWMaXAKK4E8nMXsv72zPs7vFVpxuBk/rPzL1dXShIt3iSzW41we5/idFkZIdMDgTBCi Flug== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@suse.com header.s=selector1 header.b=hQrXylTH; 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-5731-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5731-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 gf15-20020a056870660f00b001010134caabsi14947811oab.175.2022.06.21.02.54.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Jun 2022 02:54:53 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5731-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=hQrXylTH; 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-5731-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5731-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 142AC2E0A3D for ; Tue, 21 Jun 2022 09:54:41 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A2862EBD; Tue, 21 Jun 2022 09:54:39 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50044.outbound.protection.outlook.com [40.107.5.44]) (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 17756EA4 for ; Tue, 21 Jun 2022 09:54:38 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Z7s4o09jkNPH7qvHGDtlRrQR7+nIahK8mzd/Z04FkArOjWJrgi3K8GKj8p+4ZavgzLtAG1znW0UEP8Cb4b3oJnG7uGqnU1h0i39nMSeOQLBztL9etRcpYMfa9h/cQ11UmkkPokb8MAwRss2CxElJyR5g2cH5bw0iXOzdf1k1Of1WusaEp6XYN//eDah3fIlZ+3pemjs+dILAgkNB4z6yP+7CdcvxmgvKag3tvouZVoj1ar/5TP5KTlVjyrhMmy7aT+GNOf6+MhJy/2KjwYie6tbr7DJzwJC2XCTmX8WDa7vr9od25uo7EKkIdMeNXo1l3y1VEDCrxii7im4SIzgWlA== 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=s2RYVfLJgh0YWdxcdVWjJWezSmKBQCijAZjYZPWP86s=; b=RuhfSEnREobGa5+azCOMF1EJr944fZjE+dZdQthi9U8mocOWxoM7mJ8dscVyzsrsaUFwBS8OQCijbZmDDvBKxY+xNMtysDBJDx6KdoxrpqApDHzsrG5S0sjGTCfu7wvo6NV68ESVsyB2+h7J9IZVxhBvFJAOz8wmPOr0mjJaKrCq21uzHqI2Wf5r/EyQi+0DPxEAShSaVETEYylZk/EenrSvmIvwrZkOLThrzcAJo30z1b5YNrq5oWk6VmXb2uCVaok9kb9QDxoZ52oswugiwXhzDLvGwNBhNgTWfR/tha2kk5UlEHO67fFUuuUWFG6B3BKI9AkThnz4YEc6xkPsNA== 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=s2RYVfLJgh0YWdxcdVWjJWezSmKBQCijAZjYZPWP86s=; b=hQrXylTHrdySYdHExhSvXKxF0451IViTaRTIw+C/tINQCGAp9tlNatXe98xkYS3rBYj1ca7JmAAhzeLA8uBKi/T48xvnHgl8ubM+hEexqgAKtm1oKahxrI2Mv7e8R+uZ5d/oDf3qrQVS8l5HTBWNG6YZpAoL6/opIFcCsxuhGWiuAOi3lNSZfcR5F8esnOEYkbFpsUFbzRWQQBQSTF5vaviLOceHErI76U9aieZQ7yTku+vnn+vhp1NE0BTmuH/889mNtYDoccLPlqQaEIfXrHC7/UVN6L24i8biWyo3K2s9bGPXH0ZdxnUYy/PSP8t7nDF9AgBxxPgKH5fPn0GUwQ== 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 DB9PR04MB9427.eurprd04.prod.outlook.com (2603:10a6:10:369::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.22; Tue, 21 Jun 2022 09:54:35 +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; Tue, 21 Jun 2022 09:54:35 +0000 From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v7 3/5] mptcp: redundant subflows retrans support Date: Tue, 21 Jun 2022 17:54:17 +0800 Message-Id: X-Mailer: git-send-email 2.35.3 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR01CA0162.apcprd01.prod.exchangelabs.com (2603:1096:4:28::18) 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: 36ccce10-48ee-43bc-c1c1-08da536c0c14 X-MS-TrafficTypeDiagnostic: DB9PR04MB9427: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: jQSRmFPwff8Nrakefp5P1eU3qkgDs4Yctg5DEyJ4GE0sHQdgMfip4bfsCrecJsA0b2IFfq7tCdmjF6QzqmAQtGhYQZbbv9sf2FXxIqPxnwbd9crKtkqSTXnC4hoMLxYxKbZioZc37wnbtD3JblF2SDXOAxOMbQbrME3BHaBreaJyGvlVv9aIxiUb9VgE0P0KrHjF4shh9hXIz8tGC0AOrL6ObRJgX2vxCnO7ukAYUFVzp0k6imIL2/+cJPN8sarF/tTXyzBoPqIymvIUjQ8NetShskg1ldGzVCVDPJv21Js11F7Ej+e+mUawGSHbc90EPi7hb/T6xw8b+pWzWdp9y+4lpoHGGonlY/aCUpn76FAJGpQxCJHZ+DkTD/CgbioBzj2K0vko0dxcLxsDE6+Ecr7l1l6+m4AiYcD+N/6rW6ZkJVDDN3w+xNKnv30vmv0NCGBo+L6ILmWp3Lt4XGXrydDeIEhlQWyE0IZfCajmCYpjmu74lGh1JBiNiOyqCIiIcPC+YVNEGLZhhEexZ+PkKt40G16vG99SXN8oJ/KJqv/r3+HXE2geXUJMSCdhU1lhA+/tp+IP2B14TGd4u0pOFW+oloKvPaT/SDMJhhB+hPCAZtG/yhQUO64nSdoE/lOKkr+71G9oPshbjFV5E80y+6Mjbkt3EWuNm0QPTboJxN+Zs4QksMAa6WzPFkKGhxjhi0DBCDHPT9n3XwWpYcwrjA== 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)(136003)(376002)(39860400002)(346002)(366004)(396003)(2906002)(6486002)(83380400001)(6506007)(5660300002)(6666004)(44832011)(478600001)(8936002)(36756003)(38100700002)(186003)(86362001)(41300700001)(316002)(107886003)(6916009)(66556008)(66476007)(66946007)(2616005)(8676002)(6512007)(4326008)(26005)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0U5ZbnN5fRkoOl9WthxVd5qiQ3UNANDxThhTCEdCu9PD0hZKoILc8MKjpT47?= =?us-ascii?Q?5WI8tDEhNpm4dbeaOpkNkiHxqzaCvdysRhL/w+Y+101sqvGE1wrPFeaaAuw3?= =?us-ascii?Q?gVyeAp2QA7rZnUvifEf8IYGl8la4ruhYIVCbF81mbsVobMH8iGoxqla9oqn4?= =?us-ascii?Q?bK27/NtLEPGaqjK9PnS/pKFTgtL7TBqAoxq60KtFoPaM1DFdaWv3dyzI8+RT?= =?us-ascii?Q?Bc7qA9d9FPIrx69Wr4IKvV9OravXwZqZWcbms5oG7aXvXywxDQX3vP0BHJws?= =?us-ascii?Q?gFgaa6fy5gPVZspFuWTYbgvN6vY313TgQ+gw/ii3qUqfKrb7ofO8njo4iVHM?= =?us-ascii?Q?pX/YJLduczIlkMuZtWl383IgJVFAPcTz3qoaeizmQrVjTBdDAePCfDm1sZ4e?= =?us-ascii?Q?OkaqeOZceUJ5NBSD/vMObaEqb0yVwaidql4iS0xEEBbbZwOEKdnuT4Hr0D51?= =?us-ascii?Q?rxdoic5BhrNgJcAxqxGXjncBcW778GBnawWpWdZpt+i/JXHxONSJ5QkILget?= =?us-ascii?Q?dbGKv7BAQQwDyCHBov77qvWV/hiJHPSYiwWMpc0g83y4j5BNwHxVwXUAz0yq?= =?us-ascii?Q?WbV4/H0gE1W0uf6/KAkwWYmBii96iIOQJYBBRvGNIyIgv6KPDBJlJIris6k0?= =?us-ascii?Q?4bwyrm9JXv2vYRDstuBLtBwGUQoxdVDjK2oAqWBIG9RJ2ojOdUOeSosciuju?= =?us-ascii?Q?u0k41EQyMAivDn3fbM+LCFCCqixsnOlktgfWxt39uuCmD4RfWDp/wPCSxKQx?= =?us-ascii?Q?mGYNLftj0FlLBKKHpTgG2reMfiXs6mS0/F0NOXt9FJNrLKW6Hos3KCouYh3x?= =?us-ascii?Q?65HaAW7ELnqG4ql27/k3NyAaFauxrimz1K2EAa+wkE7a1fXXjG86Fa9qFVb1?= =?us-ascii?Q?2LkW4DO1ahVhOky9D7H6MMjzZwM0D8aNodeYBQXMVcJY3qlKLQMCu68y0Tca?= =?us-ascii?Q?fPHPi3nk4/hszgWVdCsZu9XFntrj8XtBR3mSEG4fhDwquzJp05rTUXWmJh6T?= =?us-ascii?Q?J2X1DLrpSIyxSNkFD3oCRwgv7MbJ+2hydEq8YLctLM/1Q0bBK2bpNLgz5QsG?= =?us-ascii?Q?CQ9C1xRESITaEM69Nq7iT/p0xn7AasWN+le19gGpdPCSQrpAOLZL+oZRPY8C?= =?us-ascii?Q?X1oT0wNXLxw5ObsO9VSJ62rzreTAP/QfV0UpdQORR5HALWxbaV2VTi8MGPrx?= =?us-ascii?Q?C8oUR7vT5uUsd7GupDXHg8KBjdRf90ysXJE3mPnwiixqmeLsqn57k3hf7KYP?= =?us-ascii?Q?TGUP2/h/T7NKpQRpmY1HNuIHXpFFxexQc7zcjkEpYEfOVNsWnQ2pzRZrBJ1z?= =?us-ascii?Q?783+kR6YM9Me2LXZnHlNx4IWcLwRhAEJWQmnkVJVc1g07pdD6bMR4GDoBqeI?= =?us-ascii?Q?8REj4NUM5wTTYQmYH7sd0zL75jhucjn+V7gYJXaFnl1oKNAHLNI6pDZD+a0c?= =?us-ascii?Q?9bnSHdc5SyWpxq8YLBfSG7JGoHmUfhc6EQueoEm9kxdpxMxjTc3IgUUs847t?= =?us-ascii?Q?MvWlJxNmVXdgDi3ncO79NzoL5bmD6DviBt+R+GsTamQFfByHQFs+JQRNh+AA?= =?us-ascii?Q?3+wYG82dXfHbvkCxNl0pckJzNo6eHZxkpcd59xKPLahWzwuS1t5PFEf+5ZZG?= =?us-ascii?Q?9SfbDY4m5KzsGM0pGQqnYzYsrdJ7MRkV1YzkPJAdTLTDpT7tTmpRj7o2JuPB?= =?us-ascii?Q?zY6Co50ZXICTVcIv0lEKgC9PVeajOS4zpHn88HrJEdNinWKl1ig5mys/Rk45?= =?us-ascii?Q?Unxjx6NfyZeyZ11KAsI6aeMIlp8VH2c=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36ccce10-48ee-43bc-c1c1-08da536c0c14 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2022 09:54:35.3575 (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: 8xpW4IvlzDmZXaurMZV0/cmPn8LjalNcksCVCtvQHGkzNgGhPqm0IRZdDCEutlDUd9PJGlw99+0cOC06h/isSg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9427 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 | 57 +++++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 4f5e7f7fa6aa..ad1eb62a9b66 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2443,16 +2443,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; =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)) { @@ -2471,32 +2472,44 @@ 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)) { + ssk =3D mptcp_subflow_tcp_sock(subflow); + if (!ssk) + goto reset_timer; + + lock_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) { + 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); + } =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; + release_sock(ssk); =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); + msk->last_snd =3D ssk; + mptcp_subflow_set_scheduled(subflow, false); + } } =20 - release_sock(ssk); - reset_timer: mptcp_check_and_set_pending(sk); =20 --=20 2.35.3