From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp148534pis; Tue, 17 May 2022 23:11:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzgnZpJFcJOkwAlP3Kh8zA+ozPbTkI5psG3PHV/0YkoUwU4ZzX12bfmb+8vnkT798tzlCzJ X-Received: by 2002:a05:6402:f1d:b0:42a:a08a:c7d9 with SMTP id i29-20020a0564020f1d00b0042aa08ac7d9mr20534227eda.159.1652854273197; Tue, 17 May 2022 23:11:13 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id i23-20020a50fc17000000b00425fda3ac71si1231302edr.523.2022.05.17.23.11.12 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 May 2022 23:11:13 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5351-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=mimecast20200619 header.b=gDC98QHa; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5351-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5351-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 A49722E09CD for ; Wed, 18 May 2022 06:11:10 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 62C551853; Wed, 18 May 2022 06:11:09 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 A7FD71852 for ; Wed, 18 May 2022 06:11:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652854265; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VDer4OqOAnhFLKe6qZkMc2yuzSwSKgMjXWqfcXB39rE=; b=gDC98QHaoq6SVUdRjW1N2/p4jEsMnRJxSCa97R92Yj5893DBMiKu5/p7cAjl1ekkps70Nr BtEW/M0G4C1RKwfIC/D17bNjh6j0svjeR8IcPxk2SjmF1Br/huDWVDXmJsf0/EqH18RW/1 D2ozmiXchslXd4JN74EslQMz+M+RAKQ= Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2051.outbound.protection.outlook.com [104.47.12.51]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-9-noPZp3f_NzOY1o_dnQVL_Q-1; Wed, 18 May 2022 08:11:04 +0200 X-MC-Unique: noPZp3f_NzOY1o_dnQVL_Q-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lNl3vEn7GmshZfra9+0EnOvQpqaCO43fbOUckxZxLKu2XzqyZLT/y3zU8cXhS0FAFODbupuk7+6OpGtwfywM+YuM4y68tkY3JJBowDrOKuIo67wVK78MDXA2/PS+zljtxKxlJc31RVDlU4H4HWQRAWuUHa7dCdknZQXHh80iyfpvSpldMWt5uHWMzS2Y/9DvnaBgE7eC3Q/JkZpNxugnC/ZeDur6UfP383jBLu0wVA7U2K77zQrzDyTQ3pL1TjCFaY1AI31xJAN0FoEMYW2CoJQRhp7CZLrZwd0WbUYN28pq0gUf6ZkOCurNGs3yyVAMZIE3DNQXVAA/NDR8OGqZeQ== 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=pGPqsItZ23w38NKVcVgJeRqxVq3mbEJKY4hYVDAJVbI=; b=Gq6RPteGEZ277z22ju0/9jnBA8DZbYub9QgszQhQq2OyKKJg0snTi261Gak4WgY9Dyw1ptE6/g/eT3wBw71NTENlCa+a1imRqXXE2TrDrvLSqJsm3NC9AWXofMeoIlpKnX6qJNyckmPYKHFyOEMxuA7Ti1zhaygDrMXKwRMReTZWoUlWiArr2dBU1WLkJMeZzU3k9UfcRduLa0Jnjw1tt3Mh6Lp6lejBVvfv0bwd34F7TNSXY9sUX1w/imrIFaKaASI/Wfq8VJtGJsxbVZiExn0oVRXWb+vV3tFlLoS9t3rA52LHJSQMN52z33NMH86oWQhgSRLEBL3tDM271zwDOw== 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 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 PAXPR04MB8256.eurprd04.prod.outlook.com (2603:10a6:102:1c6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Wed, 18 May 2022 06:11:03 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Wed, 18 May 2022 06:11:03 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next 01/17] mptcp: move MPTCPOPT_HMAC_LEN to net/mptcp.h Date: Wed, 18 May 2022 14:10:39 +0800 Message-ID: <9128762ee54d7f8f5755067bbdd7511e1ead1f1a.1652853898.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HKAPR04CA0015.apcprd04.prod.outlook.com (2603:1096:203:d0::25) 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: 0682c465-b0dc-4d4e-1789-08da3895303b X-MS-TrafficTypeDiagnostic: PAXPR04MB8256: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: jRk3tFrDovRWlrzDa7FgAvri+ibu370dR9G+B4p+AVVSk797Ki9bH/ah7c+wyVzWBiAi/44S9RD31JLM/W1hXCbIQtVbkCbOy5VW5vcfkavJVl0IEgyOopE3lw9TeboXmBtBJA1pdwQeFa6n9tmlZW1x513GzIOdiLseETUfGJNv8IusaIq0MjD3bs6J5T51LDJ9bmnXSD8oKAkQNvkzEyqM9ndisbudkeuspQ5F3aSe2Wa5rTYFH7B5FhZdtLVdVpLaKL3/WipK3oZrirrcgzWcQVM3tDmHnW6Z0rakn1pt88a38pWP41gyW7mJp2CLHNC0NKdl/YPFZ3BFusCWSS4HAARibk6V+fc3H18CQxo4kTqTLQaflaiOvr/OGKRoxGa3LXXtIOD830dLGBOaSTrV0P5ZZWKWq/VnqnynEZVQLY2zoXif9rS7N+wfwlSpwJ/GbCijpoSJcetMa9mcb3B9BjAipefquYZaZPzjEtEu6n1vlNh5C6GEzLMd03olGDRHMWZLPaAy244OHEZREKAVHGIIAYO7ZBxCYbAUPPzeNNpt9keDU9cKuX97K8PJlNERAWNeKCGuFSMlmEIn6jlWHAxf2czeC/ARnl6lvnENlj0/B2NGLb1Rmvb1f+cW+G/uoPKISLCOmIRKBuDzQs0L/6cEfIUKNR2iJxf+gLYXx1NjlGG9joMUL6kXOSEblAOqj/FV0Ba+v175G2Fi8g== 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:(13230001)(366004)(6506007)(66556008)(6666004)(2906002)(66476007)(107886003)(8676002)(4326008)(36756003)(66946007)(316002)(6916009)(508600001)(8936002)(38100700002)(4744005)(5660300002)(44832011)(86362001)(2616005)(83380400001)(26005)(6486002)(6512007)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?dHvkIXZgP3Lo0J4UadTmn+uE4+JaPsp+20372U3u+ffv4pGecW0G1Ngk85jl?= =?us-ascii?Q?/N1qqj5VbHN3SFSjcPkk1g6NM4sNzF5Xdx1PCNHHZ9TqLE0mBB1NP6lqMGpw?= =?us-ascii?Q?X7+ES9dRR2q1A3F9tXv0Fleh0E0BjHs3J1DBcgZ1rcu7iXyF/onUXe4kftcu?= =?us-ascii?Q?X4M+po+24iW6dbDTCZaNmyqGO4k22P0nDpMfX/xusFRL9zFC9jaT8CDTkOWi?= =?us-ascii?Q?M1eugEABP+7URjt2xtBrTlqPVA4qkEaItAtbJMGXYZAdXI+B6Opjcm3nWz45?= =?us-ascii?Q?uxVPT/RB4MlzPuch9ln5JnZGJiMZfktCCEOZM9RrnRwcGgxwyJxPIeQ8ygmr?= =?us-ascii?Q?6xLWZAI+QQZiwiuQkEIGRNyq1LaQGygRd/m4STiWL5mcNn9X+XLp0eAoC0Yo?= =?us-ascii?Q?goJID+Z21SpWwHcQCUpr0iIXfxuzTJvKQWmT24m6RPzC10snI11brm8sEWNI?= =?us-ascii?Q?t0BXE26DaLCFqEfMd8NsFIIp7RlhfViM7tV4Q8N1pEcrkqPI6f/H0dPhautc?= =?us-ascii?Q?acZ/IENUjfHe+6xgnIRRUsqe+jMs0EqySGZTj7KK1X8knH5QMYJ6rrnzhU9D?= =?us-ascii?Q?8UpjHj3wWxYfxOx9bd6MFC63PmEtGE6rzibOM/MCMWPLGNm62ciBqsOKBJE6?= =?us-ascii?Q?ngS112dm/8gZOBsIoXee9CSNYI7kAEJERcEg0YK+MGLrVTY7GfMMgfVW0bTA?= =?us-ascii?Q?dapsPln+GyMHV3BXUK7JTMvyChffU4BzPVo1L46NUzU/lBx3Ho2GvTBS+BsB?= =?us-ascii?Q?c4L3qnuFgyWAuKYucqJrovbMUIJSvppZihOIgbK9/LwN1jbJgN6pBQ7oc6Ri?= =?us-ascii?Q?ps3ecvjCOfnIBe0EYgZEjEbdcVBtz6Kp0NNWjpWTNmpbO4mWNLKisHO8mk6E?= =?us-ascii?Q?KJjdq5eQpUolE+Ndaisinx2oiP5v5WYW472OH75wmr+CQBziHoN3mo0gfzao?= =?us-ascii?Q?khx8bpRX7zD9EoPMpbVmM8tLvIIUNIXnddYtx9M4j+0FXfXL4dqBUueMUkk2?= =?us-ascii?Q?ivbqLKmXL5iFKkRXXYVaw0oB4H9pWzu0aGyVg7F1aitVUSMx9Eq5feiQbN2s?= =?us-ascii?Q?MA5hjB0YAuWs5/7EMI7aTDkvgoWBFIgIJp/ayb6BMFy+XKpyk+0nMIFCc4vd?= =?us-ascii?Q?SNPuZ3oJ0L6eK16T2/KXjVOXvtyW4T8+9/qYe3dm2m7UI6oTj/A73ffgrIkw?= =?us-ascii?Q?D/aMAEwiPZPRJ495MKNGWB+Wmv6jiZajB2A1QyZk5tF2exFgCmiik7ahsmHG?= =?us-ascii?Q?9AIiYBecEHgDfBj54lAyr/q8YKw2EMPoc70Xnl9jOzhFe+7NXYK8H3rFfcJE?= =?us-ascii?Q?7L/q6vq47uGzse2h/de8kxDigCZ/lydznTOlgseWeaXcw3+NhgGhpfwUXcxL?= =?us-ascii?Q?8qku9P01x6Tr424tChuQZbgZhhRQNNetkw34keV5Oh8x/maODex3ajWjqf0J?= =?us-ascii?Q?2sEw/lRWU+B+woM4m12Yj9bzS1ohx8RvV40k4GMPq4E3aP3aSMrIEDyx5fYV?= =?us-ascii?Q?NQoBDzRiJn6MneeL5LZyZ1tchdF/CRwNiCP+zv0AQz8jdYoYOTlSZ39pr4kr?= =?us-ascii?Q?Ub5oTP1PqzavMoWySp1aiy/Qurwk3KOaGUg/+VrbAL5u7KBDImDnT60BdEvj?= =?us-ascii?Q?mpR6Le5c0iCZnDSXNEkMlX6pGL4S70P2PY4MPVe6thbuZsTo3VDvwPjzttxv?= =?us-ascii?Q?22061QFtn2pCSn7jkOxznGGAMBo7l9gJOO/6PovEgAOhbfsLGMl8FNly/izu?= =?us-ascii?Q?7qH9p964AYlmoAvq2A1yEP3P7itGjII=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0682c465-b0dc-4d4e-1789-08da3895303b X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2022 06:11:03.7745 (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: 4cxturAXik1RoWLsOlzufpGLk2qhLsfBlLyazXK75ECDRyGhkAkRIsSJdnv/ygKXhzoE+JQQ28lhK6qGUcp5BQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8256 Content-Type: text/plain; charset="utf-8" Move macro MPTCPOPT_HMAC_LEN definition from net/mptcp/protocol.h to include/net/mptcp.h. Signed-off-by: Geliang Tang Reviewed-by: Mat Martineau --- include/net/mptcp.h | 3 ++- net/mptcp/protocol.h | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index d4ec894ce67b..4713757e36c1 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -39,6 +39,7 @@ struct mptcp_ext { infinite_map:1; }; =20 +#define MPTCPOPT_HMAC_LEN 20 #define MPTCP_RM_IDS_MAX 8 =20 struct mptcp_rm_list { @@ -89,7 +90,7 @@ struct mptcp_out_options { u32 nonce; u32 token; u64 thmac; - u8 hmac[20]; + u8 hmac[MPTCPOPT_HMAC_LEN]; }; }; #endif diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 200f89f6d62f..8f03775a2f22 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -83,7 +83,6 @@ =20 /* MPTCP MP_JOIN flags */ #define MPTCPOPT_BACKUP BIT(0) -#define MPTCPOPT_HMAC_LEN 20 #define MPTCPOPT_THMAC_LEN 8 =20 /* MPTCP MP_CAPABLE flags */ --=20 2.34.1 From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp148567pis; Tue, 17 May 2022 23:11:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwWaUNTSpe4lS3NsqWfnjkJBLJV5CfX0R8OQoZY4VupVPX9/Yqg7O4L30a/+YGZwMC5Sq7E X-Received: by 2002:a17:902:e74a:b0:15e:cbfe:690 with SMTP id p10-20020a170902e74a00b0015ecbfe0690mr26069966plf.102.1652854278864; Tue, 17 May 2022 23:11:18 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id z18-20020a63d012000000b003d8204b5cd0si1496715pgf.305.2022.05.17.23.11.18 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 May 2022 23:11:18 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5352-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=RMSemGD6; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5352-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-5352-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 1A3422809AE for ; Wed, 18 May 2022 06:11:18 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 592981853; Wed, 18 May 2022 06:11:17 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (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 3C28D1852 for ; Wed, 18 May 2022 06:11:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652854273; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/kE5K3LJtvaSlHFEOPro+dyB/B6Kn+Xo7E97H/DNvy8=; b=RMSemGD6gs0c1ZAaCEXgXR0+AAmozzK9uM9N+qIUmXD96345oavT8ynfGz7uMkkSEmg1Yf KnZpc4eID/nmu1EbWoSpjtE2hZpf9jQn8QKpPT6hQ+SEX6CjiU7NC1f9BCKAbTqqu5JiR2 HIIZjwGqC04pO5ULGkpZopFrNvODNrY= Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2057.outbound.protection.outlook.com [104.47.12.57]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-34-fgj1tlAXOKeDpojYAZCKtw-1; Wed, 18 May 2022 08:11:12 +0200 X-MC-Unique: fgj1tlAXOKeDpojYAZCKtw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I1TN2bUh+Wxr5d6NND/R9/0AUmtqaERkCkdiwbBivFnjrtBUep2B8fyWLlUFsjmxvUMvXtCDKdj4q7aTzZWs2LELtJkTAM/DNi4uMs7LB9UH2so0A8L/w6DWkTqbCr2CHnz+yOKS3+tc+RbT3rxibnMkW6MWCN5gbWVBsDiW6IQNv9d0LyYqU0x7UAI6qeBpcO+LypjeSK7U7hwMa249+NEymQH20e9vW3BEebU4fC3UJdvTHcABTz1b1VOYKDqSh69T6cGRjjIFriyZIl/x9k+LAVHYFnyGqEPnSQzlO5wTLcZfwmXe83ry1km6NRII2SSgV0aFFo/dL0JgLHa1gA== 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=pYBjAn9+yTK30ZvPUL3nzWT8LbwZdcShrO/YMsWLix0=; b=MFB/nrhu1okeJ1KDeJQwrOABOGfbpPjS4kd1RpctlvVhqYIv8rvtuC58EUETszB1/7lbepjhqlbBHAEVOCqjW9/ZEChF8v+4z4d8LdnrtSHUIl5e239kZ9zxjXfRY9SZ2IEaudyI/fL2+1tCAx7xX/Okk5hWyOHc8wE7NVBRJmQIEe49/7d2xICHNdzeNOEs/ToourD5b1pr3NVqxSAGjSRvXAH7pcVxm3+SyirkYaysljjP69WRQWb4nRJQ8wZBFqKT5kUpSRb5e6Z4sx+ZAmaHuinCZNMnQpxqZpHNlo/4A8izrrT7ng4mA+ot81hu/byyhBmQNFktI4v9bqJGpA== 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 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 PAXPR04MB8256.eurprd04.prod.outlook.com (2603:10a6:102:1c6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Wed, 18 May 2022 06:11:11 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Wed, 18 May 2022 06:11:11 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next 02/17] mptcp: move mptcp_subflow_context in net/mptcp.h Date: Wed, 18 May 2022 14:10:40 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HKAPR04CA0001.apcprd04.prod.outlook.com (2603:1096:203:d0::11) 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: fe227587-b583-4d61-08ce-08da38953492 X-MS-TrafficTypeDiagnostic: PAXPR04MB8256: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: yg6zOb3KhXKo5SDsb6Mz8YLD9eprBOrsy6ctJV86E2WtMXH+EUmhGSGAmeXKOoyj76vnNxfTbkNzvc0YVSKIkaPtHXY6yUN9qLIOtG+87zURxEv1XW+E0KzsINUGlGNFVMMzpWZoCiHZh5FY0ye4k+/Y2ftsAiNUHup+lLApRhkiGMCgzGTtKoywXo/9OLc0cwXgGKoAnPIdC7l9R107tYvMWcMcyd8HaQYqBqqoDKglVHylR8s1sp3jTe25u/IS14Cz2vkK/Cq0JApHXI+giOriowla1ARXc7JA6oc/Z0jNmvbTYGERNpuZaSsT671PDla/20K557xwQIm6YNlVjnr9Ym/Em826q/dxrXyqvcTE9gfpKbZAseKYoLjjlfCBJ/tYVey+DFurqHMcllWyvb0KRh6oayV3JRtuJoQ9JABc25RzjbT6NTZmUwufAe+IJoTFog+KFFh/+FVlXeV3xtW3U3jGSyNUBd0FkaiETvliLuFber46PxVpfWQtnZwY0wLRtdpubFoRvoELVN9ejcfH7vNF7lLm/NbcU8QwUMaj+tCVm2ZZUK7Ko4m7i2wcusYOlD+Vs4KMA4DOOAI+YF5XVmCtMn+LoePuUGgqLGbPeP4M3RpHsLYr3PdeRnu+j0i1VHjclzGPUbkNl8yESOCdoEFT0iHIbhJ4nG25QXE/T4SPpWcMRjriww4L0QZKtK5pp23EOyECdAFwOJJtVQ== 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:(13230001)(366004)(6506007)(66556008)(6666004)(2906002)(66476007)(107886003)(8676002)(4326008)(36756003)(66946007)(316002)(6916009)(508600001)(8936002)(38100700002)(5660300002)(44832011)(86362001)(2616005)(83380400001)(26005)(6486002)(6512007)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?v4BoToXAOmnECfoom/milefFovO415lMXrT/YksAMR7mtiAf+9Ag+bc/whKm?= =?us-ascii?Q?h8rznwQ5cqwj+dEiJ6UdSfFBnbuuXIlWMCPGcqCVHW3HTSX4QcImErHzbmlX?= =?us-ascii?Q?OLBz+PiyE+6OMvAzRDsdJoW22exOiCD3xo6G2CKMkUufzHH5tNDXmSkXKG4T?= =?us-ascii?Q?q6JFtt3kvbXaK8s6LOR1YVeyhU8b4dE2rQENMauh9Nlgl2U98/Y+Ac7FzeXs?= =?us-ascii?Q?wyveWKiB1gXQAaaAozffWzxlXlslZdnxe9iUMIo9umyNEkDWg/Jxm4XxMGBR?= =?us-ascii?Q?Hru0ruU9EkAFGR92g+qPnkrQz+zZmw9PTUv57aDAyUNRq0UT+UfVdDO6SxnU?= =?us-ascii?Q?m1SyUwIoaFdtBYx8nNmcoLUI1tEawEOA6/bUb5JjYAz8LwCxun2mmg6M/Zm7?= =?us-ascii?Q?oFJOCgEApVyniFzCYYLOkNVR+sYqciPP7gsFUAkeb7rsUxmLRqGWK+B9cwG9?= =?us-ascii?Q?5AXE7kY/CTWCmp8aGzbkbFkZMcybic3t3KYU3LdnSOXW/X1zBf1NwqxH8Rmn?= =?us-ascii?Q?AbuA2uq31h2PEVXexCKHWqncZBn24ZXTILtvbScxahpxUrlyI+hMRZ89cQdI?= =?us-ascii?Q?18YVuKBKo4nSrbhg4qnZJWe7bWoO6BwXE3H0e1u8RbuW8POcn1UWSbSGgDQE?= =?us-ascii?Q?N2qvVxX7y6P+rICJ03QDl06qh3gGwuv8uZQTTmSiS3kOVTyme1j48tFKR7RH?= =?us-ascii?Q?o2r21lxRFGb+79pK8jQdYrkq9daQmD1rriU4a3JBTr8QlwZ+lMw5u9KZEVqQ?= =?us-ascii?Q?+KBNcBe9F5ia9CMKEZchjivcxuRfdpoCI355axoA9A3VVkoUkw14gNfr1EQg?= =?us-ascii?Q?TfKIb5KpI/0F/cQaSyOTb4koPI+BAucNPGa2ETfEswCsxS2xOHVHUdir+0UO?= =?us-ascii?Q?U/B5W+dVk1WEqWQ4SON+Hclt0fOU/AZ85HES64+IaWHOnutlIhuSJ7yu8CRn?= =?us-ascii?Q?g4IWdRHpXSxSvMCTw9B2+aSc2Ig4b5TFUjQHeFJ55t6z4NOwT+DzyzubQBhG?= =?us-ascii?Q?aSEIz3IsQNMKsbpFXaADVhZiJDXAObEscqr2O442fJFOftrIDm73GWwn/nPU?= =?us-ascii?Q?YbRaMUdvha1YA9U+yUv1GtgzKF2v0DiJ6gAfXZlNeb8Qua4ySX5CLmVZnh4E?= =?us-ascii?Q?rYZul6l5zW99V0eVjXUT32MC0PNUgLb9YGN6KyDM9NtHEqk4iovLC2iBDjqv?= =?us-ascii?Q?eg5DMHBadoMCH3Hvz88hxwNq+1IAIGbMehTog3PPE+y+/3EfgIwJfH/5vzEg?= =?us-ascii?Q?7P9WSnUk822x1Fh3GbMbQF/USvEm3mMnY+CrQ861VvcBMcTDTl7Hi0SAFu4B?= =?us-ascii?Q?/PfFH6w54GoJQlklgsJVgBqwxvr6tpu9mWjM8YD/S3WYhHu71YhwJK7/uqKW?= =?us-ascii?Q?jexIYVTSF8YeVKc3PvFhomPBDLL5g2fOqskc+rF5SCIwFMp1gJSiRz5ZuL5+?= =?us-ascii?Q?tjhylZYPrf75O+5u3Xpbuur/P5Ud+JBkls8a22zklq+PYxMLszer5CxueX+n?= =?us-ascii?Q?NKYXkrgJDq764oTp41uSHS5EB2pJLojGV1Of6Jc+Lt0jSNB1dWkOk+oh8s0t?= =?us-ascii?Q?PoxHPxFFlh1NemnvBCW2NUmh8PCDxwbrbScAbAo799zEDu3N5lChjD5YxFdo?= =?us-ascii?Q?Xu/GcalxW9owR4TsZwR1kVBQVVu+2MIGZArKsTUsDSn92G08Q1z7zQdoBSb7?= =?us-ascii?Q?87mrjw5vR2bzGTHdhs0zVWJffeEt5hnTDS18JF3EH9nAlAVvny6QCtm43sKY?= =?us-ascii?Q?gJIJG5H32PZfMLSYc5RUqCCGQQFRaH0=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe227587-b583-4d61-08ce-08da38953492 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2022 06:11:11.1958 (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: A5bmHTsDSYYqz3ybNbN/E6C4ox+OMGgo8JRcmIO3YPGXac9xjtIhPxJd7B33Qza3LqkaAmm8PsG0iWi8KUOfIw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8256 Content-Type: text/plain; charset="utf-8" Move struct mptcp_subflow_context definition from net/mptcp/protocol.h to include/net/mptcp.h. And move the related struct mptcp_data_avail and function mptcp_subflow_ctx() too. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 91 ++++++++++++++++++++++++++++++++++++++++++++ net/mptcp/protocol.h | 88 ------------------------------------------ 2 files changed, 91 insertions(+), 88 deletions(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 4713757e36c1..9422b6d2a268 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -40,6 +40,86 @@ struct mptcp_ext { }; =20 #define MPTCPOPT_HMAC_LEN 20 + +enum mptcp_data_avail { + MPTCP_SUBFLOW_NODATA, + MPTCP_SUBFLOW_DATA_AVAIL, +}; + +/* MPTCP subflow context */ +struct mptcp_subflow_context { + struct list_head node;/* conn_list of subflows */ + + struct_group(reset, + + unsigned long avg_pacing_rate; /* protected by msk socket lock */ + u64 local_key; + u64 remote_key; + u64 idsn; + u64 map_seq; + u32 snd_isn; + u32 token; + u32 rel_write_seq; + u32 map_subflow_seq; + u32 ssn_offset; + u32 map_data_len; + __wsum map_data_csum; + u32 map_csum_len; + u32 request_mptcp : 1, /* send MP_CAPABLE */ + request_join : 1, /* send MP_JOIN */ + request_bkup : 1, + mp_capable : 1, /* remote is MPTCP capable */ + mp_join : 1, /* remote is JOINing */ + fully_established : 1, /* path validated */ + pm_notified : 1, /* PM hook called for established status */ + conn_finished : 1, + map_valid : 1, + map_csum_reqd : 1, + map_data_fin : 1, + mpc_map : 1, + backup : 1, + send_mp_prio : 1, + send_mp_fail : 1, + send_fastclose : 1, + send_infinite_map : 1, + rx_eof : 1, + can_ack : 1, /* only after processing the remote a key */ + disposable : 1, /* ctx can be free at ulp release time */ + stale : 1, /* unable to snd/rcv data, do not use for xmit */ + local_id_valid : 1, /* local_id is correctly initialized */ + valid_csum_seen : 1; /* at least one csum validated */ + enum mptcp_data_avail data_avail; + bool mp_fail_response_expect; + u32 remote_nonce; + u64 thmac; + u32 local_nonce; + u32 remote_token; + u8 hmac[MPTCPOPT_HMAC_LEN]; + u8 local_id; + u8 remote_id; + u8 reset_seen:1; + u8 reset_transient:1; + u8 reset_reason:4; + u8 stale_count; + + long delegated_status; + + ); + + struct list_head delegated_node; /* link into delegated_action, protect= ed by local BH */ + + u32 setsockopt_seq; + u32 stale_rcv_tstamp; + + struct sock *tcp_sock; /* tcp sk backpointer */ + struct sock *conn; /* parent mptcp_sock */ + const struct inet_connection_sock_af_ops *icsk_af_ops; + void (*tcp_state_change)(struct sock *sk); + void (*tcp_error_report)(struct sock *sk); + + struct rcu_head rcu; +}; + #define MPTCP_RM_IDS_MAX 8 =20 struct mptcp_rm_list { @@ -198,6 +278,15 @@ static inline __be32 mptcp_reset_option(const struct s= k_buff *skb) =20 return htonl(0u); } + +static inline struct mptcp_subflow_context * +mptcp_subflow_ctx(const struct sock *sk) +{ + struct inet_connection_sock *icsk =3D inet_csk(sk); + + /* Use RCU on icsk_ulp_data only for sock diag code */ + return (__force struct mptcp_subflow_context *)icsk->icsk_ulp_data; +} #else =20 static inline void mptcp_init(void) @@ -275,6 +364,8 @@ static inline int mptcp_subflow_init_cookie_req(struct = request_sock *req, } =20 static inline __be32 mptcp_reset_option(const struct sk_buff *skb) { retu= rn htonl(0u); } +static inline struct mptcp_subflow_context * +mptcp_subflow_ctx(const struct sock *sk) { return NULL; } #endif /* CONFIG_MPTCP */ =20 #if IS_ENABLED(CONFIG_MPTCP_IPV6) diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 8f03775a2f22..cc24756cedfe 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -409,11 +409,6 @@ mptcp_subflow_rsk(const struct request_sock *rsk) return (struct mptcp_subflow_request_sock *)rsk; } =20 -enum mptcp_data_avail { - MPTCP_SUBFLOW_NODATA, - MPTCP_SUBFLOW_DATA_AVAIL, -}; - struct mptcp_delegated_action { struct napi_struct napi; struct list_head head; @@ -424,89 +419,6 @@ DECLARE_PER_CPU(struct mptcp_delegated_action, mptcp_d= elegated_actions); #define MPTCP_DELEGATE_SEND 0 #define MPTCP_DELEGATE_ACK 1 =20 -/* MPTCP subflow context */ -struct mptcp_subflow_context { - struct list_head node;/* conn_list of subflows */ - - struct_group(reset, - - unsigned long avg_pacing_rate; /* protected by msk socket lock */ - u64 local_key; - u64 remote_key; - u64 idsn; - u64 map_seq; - u32 snd_isn; - u32 token; - u32 rel_write_seq; - u32 map_subflow_seq; - u32 ssn_offset; - u32 map_data_len; - __wsum map_data_csum; - u32 map_csum_len; - u32 request_mptcp : 1, /* send MP_CAPABLE */ - request_join : 1, /* send MP_JOIN */ - request_bkup : 1, - mp_capable : 1, /* remote is MPTCP capable */ - mp_join : 1, /* remote is JOINing */ - fully_established : 1, /* path validated */ - pm_notified : 1, /* PM hook called for established status */ - conn_finished : 1, - map_valid : 1, - map_csum_reqd : 1, - map_data_fin : 1, - mpc_map : 1, - backup : 1, - send_mp_prio : 1, - send_mp_fail : 1, - send_fastclose : 1, - send_infinite_map : 1, - rx_eof : 1, - can_ack : 1, /* only after processing the remote a key */ - disposable : 1, /* ctx can be free at ulp release time */ - stale : 1, /* unable to snd/rcv data, do not use for xmit */ - local_id_valid : 1, /* local_id is correctly initialized */ - valid_csum_seen : 1; /* at least one csum validated */ - enum mptcp_data_avail data_avail; - bool mp_fail_response_expect; - u32 remote_nonce; - u64 thmac; - u32 local_nonce; - u32 remote_token; - u8 hmac[MPTCPOPT_HMAC_LEN]; - u8 local_id; - u8 remote_id; - u8 reset_seen:1; - u8 reset_transient:1; - u8 reset_reason:4; - u8 stale_count; - - long delegated_status; - - ); - - struct list_head delegated_node; /* link into delegated_action, protect= ed by local BH */ - - u32 setsockopt_seq; - u32 stale_rcv_tstamp; - - struct sock *tcp_sock; /* tcp sk backpointer */ - struct sock *conn; /* parent mptcp_sock */ - const struct inet_connection_sock_af_ops *icsk_af_ops; - void (*tcp_state_change)(struct sock *sk); - void (*tcp_error_report)(struct sock *sk); - - struct rcu_head rcu; -}; - -static inline struct mptcp_subflow_context * -mptcp_subflow_ctx(const struct sock *sk) -{ - struct inet_connection_sock *icsk =3D inet_csk(sk); - - /* Use RCU on icsk_ulp_data only for sock diag code */ - return (__force struct mptcp_subflow_context *)icsk->icsk_ulp_data; -} - static inline struct sock * mptcp_subflow_tcp_sock(const struct mptcp_subflow_context *subflow) { --=20 2.34.1 From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp148599pis; Tue, 17 May 2022 23:11:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyb3oOQr83RxYQ+0rA+S3WF4fWS2FX5WTqp/+OoY5hWDeX86+oG7cF6r8wHpq7I2q7DoJvf X-Received: by 2002:a05:6402:34d3:b0:428:2dd3:162e with SMTP id w19-20020a05640234d300b004282dd3162emr22924403edc.260.1652854288079; Tue, 17 May 2022 23:11:28 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id dt19-20020a170907729300b006df76385c64si1397075ejc.260.2022.05.17.23.11.27 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 May 2022 23:11:28 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5353-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=mimecast20200619 header.b=f+4b6vSk; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5353-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5353-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 886332E09EA for ; Wed, 18 May 2022 06:11:25 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4BC111853; Wed, 18 May 2022 06:11:24 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 5814F1852 for ; Wed, 18 May 2022 06:11:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652854280; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ObPwR5jbkeTgzrj66kEsF+6m7SwV4LhCvqir9MbnACc=; b=f+4b6vSkL+8sBa9Bsloc2XBRIU9txVAUxcmTqE54gzcT4b0rMLE7KaXw1adOuAQZTPhW3d JvqWuUQyKMS47f+LRbaVjhkF2Wn10/3YrqurI+bzSw+RXAAcEJm9BFt71kn17B6Ubxesbe AOOBmLatNi+8+pRPtIpXMYMMbsBaWug= Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2055.outbound.protection.outlook.com [104.47.12.55]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-39-hIPToKJhPweMvQ8WKbOWCQ-1; Wed, 18 May 2022 08:11:19 +0200 X-MC-Unique: hIPToKJhPweMvQ8WKbOWCQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gyvajc230ZDK8KJ6KcWtmzPLq7Hfw2HjkvyMuhka0vGJnq4FiamJ9Lh+xL8HKxOjXX96s1KUPaPhqwxCgd9FRpmW0DHRI2sqU0RCR8cWmJBnrDN/HYqXZ6xTVxHEHKURvaYcAHMnfqxkBSEdi1E3aEUi+kWtTMfq3gk9+CMfVknOq3TZCUfGpFLj3OxxIO0WJfo7Zf2iw1HJmEIxeaYtELKkRGVOA/CiSbhSi7pdASQelHoaNezkaf1FWrchUzPQwArv8/2/M9kE4rPcvXei+PVlxwomXSAVxdYOnfKI0ki4f1zoex0pTEhNDK5ZA9wUohpYwS+BxtUVc82wjDN1mA== 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=6R2G49GGmKhcHfbNIWk9QH/pxnptfN3X2CQbusP4GDE=; b=jsYPxAC8Xp3Y+9jSMdcgj8z55GTQTRfN2bUOayrBE/kdnwXH7wfhB3S1XKA7hO8FQ3p7otkaapeGQpgeK8ZJ89ur6LuvJAsSgOMa/69bHetzzpS3xTEZrdja6nPCFv050MRxh3jYfwHpMQznYpDtiH5OyOrHtQBYE+4aKiU2GfhtxfnEon7dMN+48IY59Ug5+lvJZtlxkoqeA0BKG2boGJhEL2GhgICrQR7zTF4yRYMsg8bIj1EdG0BHf8d1mbOhSIj6UNdteiyUUbwzNltn2WKigMUAOTeuT9KEte9DMFFUuaPEi+QSSLhRybSqTxWRLoKealZigKf/FKVrqvhNrQ== 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 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 PAXPR04MB8256.eurprd04.prod.outlook.com (2603:10a6:102:1c6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Wed, 18 May 2022 06:11:18 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Wed, 18 May 2022 06:11:18 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next 03/17] bpf: add bpf_mptcp_sock_from_subflow helper Date: Wed, 18 May 2022 14:10:41 +0800 Message-ID: <3b4bb11cd5d2a3a3d017823eda1e7a079043f71a.1652853898.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR0401CA0020.apcprd04.prod.outlook.com (2603:1096:202:2::30) 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: fca32ec8-a27e-4410-97cf-08da389538e6 X-MS-TrafficTypeDiagnostic: PAXPR04MB8256: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: DpE52jgNXXQ2oT55soxUw8L1oQlpNKRNQVXvAoPTiv6zlJCqinQS0A9I/NqY1gScEiBpQCd+JTKVJClRfQlnpgUApEBo/reA4asHQjUvcUsE9wZh/RNHRhjRpDZthJbOTSHePc+Nj5TqoMQul8j5iV87ujdq8IHQnB5utdNhpOBfhfuym5tyvVCJcZCslz9TOYHbQ6Q9+i//usSBGKsbOIllcmk2E/gXgEd6Z2xSoKvnuecRX5GbTc/VZ7FB6iroxG2ZvnqdbUCaw2ZjfByGt76P/jReezT+JbAiEvIPnsb82hcoCpdk0lSQOCQpQmzp4r4/TyNYe2MRMB/I2tKA7rYvNRPvl9GW9cIrkFXq9IsGL1mlITrDvfHK+4d/+G2QbbK81tVrtu4rmD9SI5wCfpxDgoXeUSk7tsShhtlyGmqhHFnV3y9/PjdVGim29m5wH5uZtFHEr1uytLfWV3Br6wZ44ctd0lOFOMq8y50FRZO/O9pcKNXSdjOEIGnyJlIGC4J86TP0EvvQzJ6txJ9R6MPDDKI2Sj16mBQApBziTJ+o4TiBFun9xE4GunouWAYsPmp30T+SFMMGyRHSfjORN+C1IPGkYOXck3WeSIuejSer+fi7FBIlo6x2x9QAWXhZy+9BiW+aEA0oijsDzUwVw53GDgOCeCr5dwUVoLvK79AqOzedSzv3BrylYpvbw3tvIakiYQ2HOsQqOtF8TGBeXQ== 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:(13230001)(366004)(6506007)(66556008)(6666004)(2906002)(66476007)(107886003)(8676002)(4326008)(36756003)(66946007)(316002)(6916009)(508600001)(8936002)(38100700002)(5660300002)(44832011)(86362001)(2616005)(83380400001)(26005)(6486002)(6512007)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?AY7/u9VkkAg/nJGI48RFKL+mJu1Yxt6/MEWuTu9jdBSVbaXv632vibK/w4Z5?= =?us-ascii?Q?gIYEJF7rwWikffvZ5qi0yjxTQx9rC7gFIuWa9cCi4qK3EMjL1KBDMhzWhfGx?= =?us-ascii?Q?zBOb/6TqCo4R1jImR2PzFNRDHaAGiOEqbQxPImB6uLxmcFqdauFWiByiWAFX?= =?us-ascii?Q?uR8aTmIzBA85VZ1AfYzEjCh3DZOwkgSO/8mrJB2FQvqVX4QuW8cibLYkBP40?= =?us-ascii?Q?5X17menoTQGJhywfnnqDO2Fcc0TCq1M2Rf77DJB5oUhcgxAu/cewAhriTe0N?= =?us-ascii?Q?x8iFDworMEZ1QLAlolZtcnCCvvTYPC+odD0LB9XdrpvdnmduEKVuwwFIHh9O?= =?us-ascii?Q?dragPcGgFKrqLdr/QkELGvTxNEIF7izSz60MmPobM601kaaAn9oeVWKoxv01?= =?us-ascii?Q?M1zHQrSz4joaNgv8t1jRKdDf2KSU8mo+2XviOaRhiVK4EHKXRowagd7aa4Rf?= =?us-ascii?Q?2MQnS4S7Wz2TeDaSNsXhjJtDbaWAdivwpMpdQ+elp3Fd57r8b3UgmlbdqhKh?= =?us-ascii?Q?tMFfmbdwz05iVyQFQlGoNG3xDb79gNUM/wOVQ/n9GVKsQT+QWTZxlp/DaL4d?= =?us-ascii?Q?LlJRtEoaZKuy7acKZP0FRCp7jZBknBgHgiTPL1iLu7eRl5+jG7zBqxRir2Rx?= =?us-ascii?Q?vzepQlHeuNgglF7WcCShWhFe/hXvroHyg9gwYxSNL2iTbzo0ZxcHFd5+bKMe?= =?us-ascii?Q?Xn6j1jDc5p/11MhMLOOnjTITy3S240hjAd2ElOtmX/T0iuZctsPa9GaAnNbB?= =?us-ascii?Q?n3C4wX1/pqAeiVDVdQfHys/yvFlxTuse5Apm/hYPqpii/VeHACXTO9Rjr6SZ?= =?us-ascii?Q?jziB6+xhbxeF2YFxKCCmK1KvMC9kz3W8/iQYPNdES+TtBz8W3ppHFt21s+uO?= =?us-ascii?Q?GAafrNItcfbwC9whMA0NBVMYVQnHJAbO7erOj6V2vqs+JfNsbCkKP3e/ddms?= =?us-ascii?Q?UQjB4/HGc2SgFfXgIRTVrpOotwVOh6pHtDwIzzmdObtpS+9M+JLaH0/fs/5W?= =?us-ascii?Q?SXOHbZjY8WPYVj5Fs+F1uOA1tMrKvmRkrKggS+2MXC/T926ZZKZX6R1uNr5F?= =?us-ascii?Q?S07K7OaigAlnhLhKw8Cohu/h0owC6/4/fos1U82n+aYa9f4TmuTCA4AsvAJC?= =?us-ascii?Q?l+75FILddbI9vzkO6t468GPEiXA/yV2bw+ruBeT3j7gSKtb4OWR6wnPJSlIL?= =?us-ascii?Q?h82d0ZW2og7Zm7xN+/pDm8gPeW+XkzLdDnbYd/p/4hOFSDxtTBy7IWRIyye6?= =?us-ascii?Q?GUMbfQ2POhP7dpu2GCQNNtd0MlBqE3bqEUOQjJ/VPGhiwye/i4cfkL6TW/i6?= =?us-ascii?Q?CRG29rRckrVQoCPWGWOgzu50ApMxmKJijLrzUv2lnwK2bB8NuH5d4C0s3ErL?= =?us-ascii?Q?JS1DZZxRxyblQ10R4paVl8sqP8ILDCA4Z5UUh96ml09QEbxVOa1qKc0LfCED?= =?us-ascii?Q?jJrcxdOdc8Lesn10ZxizMYzv9EMbChwh7eDwx7vfofCC6x2JnsFksSccqWf5?= =?us-ascii?Q?BKfchvdIjK05puvUlH+Wh4Wn456BlQNlK6N+dwwsIx40uKJ/4qR7opGuUDwM?= =?us-ascii?Q?0oeSZ/7b2L6p51a/lEV/msnzJ0KQOz5QULEURE/oVKiGk/ap5XrvxYFv6164?= =?us-ascii?Q?f7BM0TlWr4/VPA70KytykW7vQLmk4EJ2FYwaGGcn58TCyQnLvVLJCfIAIkJs?= =?us-ascii?Q?1U6BxmbyW4LrGqB7Cf5PP827iM7oUH41+YQjnYvXzqn2JGx5xG1u3u0mY99C?= =?us-ascii?Q?TlBOy1o46o0IWbgPyD1Sv8eBbXi+ZFM=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: fca32ec8-a27e-4410-97cf-08da389538e6 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2022 06:11:18.5390 (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: 8X8tolmaT0SHMjtVB8sXXLABVNBXmtaNjrZwMRYjgtPEqXJO0ov1ACWPCs1dLU5n8QRepJ0eZsWZ+s6eZnec1A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8256 Content-Type: text/plain; charset="utf-8" This patch implements the helper bpf_mptcp_sock_from_subflow(), to get the MPTCP socket from a given TCP subflow socket. Move the inline function mptcp_sk() from net/mptcp/protocol.h to include/net/mptcp.h. Signed-off-by: Geliang Tang --- include/net/mptcp.h | 18 ++++++++++++++++++ net/mptcp/protocol.h | 5 ----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/include/net/mptcp.h b/include/net/mptcp.h index 9422b6d2a268..a267cff36197 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -287,6 +287,11 @@ mptcp_subflow_ctx(const struct sock *sk) /* Use RCU on icsk_ulp_data only for sock diag code */ return (__force struct mptcp_subflow_context *)icsk->icsk_ulp_data; } + +static inline struct mptcp_sock *mptcp_sk(const struct sock *sk) +{ + return (struct mptcp_sock *)sk; +} #else =20 static inline void mptcp_init(void) @@ -366,6 +371,7 @@ static inline int mptcp_subflow_init_cookie_req(struct = request_sock *req, static inline __be32 mptcp_reset_option(const struct sk_buff *skb) { retu= rn htonl(0u); } static inline struct mptcp_subflow_context * mptcp_subflow_ctx(const struct sock *sk) { return NULL; } +static inline struct mptcp_sock *mptcp_sk(const struct sock *sk) { return = NULL; } #endif /* CONFIG_MPTCP */ =20 #if IS_ENABLED(CONFIG_MPTCP_IPV6) @@ -376,4 +382,16 @@ static inline int mptcpv6_init(void) { return 0; } static inline void mptcpv6_handle_mapped(struct sock *sk, bool mapped) { } #endif =20 +#if defined(CONFIG_MPTCP) && defined(CONFIG_BPF_SYSCALL) +static inline struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *= sk) +{ + if (sk && sk_fullsock(sk) && sk->sk_protocol =3D=3D IPPROTO_TCP && sk_is_= mptcp(sk)) + return mptcp_sk(mptcp_subflow_ctx(sk)->conn); + + return NULL; +} +#else +static inline struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *= sk) { return NULL; } +#endif + #endif /* __NET_MPTCP_H */ diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index cc24756cedfe..2fc8aaf5cb05 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -318,11 +318,6 @@ static inline void msk_owned_by_me(const struct mptcp_= sock *msk) sock_owned_by_me((const struct sock *)msk); } =20 -static inline struct mptcp_sock *mptcp_sk(const struct sock *sk) -{ - return (struct mptcp_sock *)sk; -} - /* the msk socket don't use the backlog, also account for the bulk * free memory */ --=20 2.34.1 From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp148636pis; Tue, 17 May 2022 23:11:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJymrTKMBsffiOkVivTlNbs4kCsbEQRzL+k3pJeQmjbohlRsUfXXyW/SKZLWWsZMVWI3Evq6 X-Received: by 2002:a17:90b:4a90:b0:1dc:4122:6a70 with SMTP id lp16-20020a17090b4a9000b001dc41226a70mr28356137pjb.216.1652854294962; Tue, 17 May 2022 23:11:34 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id ob13-20020a17090b390d00b001dc7b989160si1608912pjb.130.2022.05.17.23.11.34 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 May 2022 23:11:34 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5354-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=WMjrfYpr; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5354-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-5354-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 4627E2809AE for ; Wed, 18 May 2022 06:11:34 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2E7961853; Wed, 18 May 2022 06:11:33 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 2C05B1852 for ; Wed, 18 May 2022 06:11:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652854289; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=t52O9fH1kPKxXbF79YHidiaRra2Mm/xvTLNfOoSYyLM=; b=WMjrfYprkmfmCPVzvXii50Ei5WE2+I0Pgj1F/BvDE8HxV2TTHkRanhlE0Qil2A7XZylxQO owtRgn7EQ5JLLT3D8Tosc3D9xlGdewvFoajbG+zkge0Pyx/YRp3Bck/ob64NNpaHvh6Af6 Ga/iml135rZ1Zeb8jDJD1C0JRunNCjM= Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2056.outbound.protection.outlook.com [104.47.12.56]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-19-9Y21-GfuOV-XppkPJl27ig-1; Wed, 18 May 2022 08:11:28 +0200 X-MC-Unique: 9Y21-GfuOV-XppkPJl27ig-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bex2xbVKhHRdlaphEdZIYxIIuDKeBjQsC32bpvNkbisxRSlGVqCnmoiwWsGUDlvoafuSmXIAOmJW6YDkfwDg9xovsTlPeDDTDjYry0zTUyHn2Gk5Bzp8RJ63wmrl2rza7YwX5donvxG253KxPmlgzY1DCrtfKeoI1hKxXkaQWG6LTnuNZwFdCeWAfWKbhCUpKBo1RXwyHNWZ/3PIdQ9OJVX5LQhh32sCvhlRHKFDJuZSaz82rIURjwgfTV4LIgaUG6S0nqBC1gP87m//j2hAVi2pHAArdA28Px6CCP7AXudWDw2BrvKLqTjskPOWkHFc8jhwC1Uhcf0y22n3iMOGXg== 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=1UG5docKwYtHN13X5ollLBfj9pCQmIHlstq8pe38WZE=; b=KDTcqJVSRyTwcy80eWwhho7jIYxLbGOSjdhqlB9pq/yVJK/vCOF6f1cMAU7fHcsX+VM1W4C+prwt2cUtV9h5hIzY41AFX6bmOO87AnNsmVgIPHyNQ95UZBdgUQNNqKY1o9AuWW+U69GYDZ63wwUIjtphhYQZsrHffHFnME8rwNaGm66N9rsVQtsK7yh+FCNKiMtOl8u5AfMP1IpWrfNIquwbzw1mSGOsI98csQItHBVkXLTsmPeKo0yteMHQ98yqWMnfcEOtaTqKjhiKLiwPoWXYiLmxWDtTdCd5hziEjqF7v+/0AG8eExQ7IsiE4bMAEWzfgLKk5+yts9BRZ0KyZA== 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 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 PAXPR04MB8256.eurprd04.prod.outlook.com (2603:10a6:102:1c6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Wed, 18 May 2022 06:11:27 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Wed, 18 May 2022 06:11:27 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Nicolas Rybowski , Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next 04/17] bpf: add bpf_skc_to_mptcp_sock_proto Date: Wed, 18 May 2022 14:10:42 +0800 Message-ID: <37a37833b37af5f05a261ed4e609b061eee4d2b5.1652853898.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR0401CA0014.apcprd04.prod.outlook.com (2603:1096:202:2::24) 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: 571cad4b-8ede-48d4-7ab2-08da38953e16 X-MS-TrafficTypeDiagnostic: PAXPR04MB8256: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: FONx35m/3wopMKXA9qaVpc1+N2GFrd0Ltln9i/JCnesj/E3F7i1GuAh0u3VOOBB98lQ4Osxesk39yI+RWGCb2itqkuxmirrrCyOcyc1JBcwHcRhRmsADTur/uFyZvE5Sxk5YafPiGP5kgDQ4S/zC28w4s16z2ng7eX7VnAS2AwOInVnXpFQRfXgYox+EfAwwRZGJii+5U+YBF5jJkYDsc3w4Y6DXWEISNtldHfzAHWBvMSyXPLohLAspuBEcU7CJyWHjZ1WfO3vJRKoLUgz+L7s+yDtIcNGWPfR4pymiXqfKgF+owdGa8y2+ceo2iJbXXegwel6zUpjRYTsaa+eglWRm7EwGFwrT4Y5YH66SaiPV3xDnDM1Iw3LhWgPVf4i0TFESFWV0IHjhEs7tOSafBeErBB+A6jLDywPWlQs7RnlqPLDDpcMzIL/WSZNJ2vQkbT6rD6/dW9emM+H8yoqe4T8uR3GHCYzlO0F9gNQrjPG24cJDaMn+74lA9nlE4gvfw2jJanRm/v8BXWGloXMQugezwqp7PHoHUfvpTc3H7TkEgHne/AYIjcUgOz5YnLPbkNLhP1erNLt5ZlgmLBLxjiyvqQcRnK0IvyUqxt6iAOPq+lfbrFDRrd+FXSYGz+511iNTd19r3fUOIeWYK3FwTlqCqvynq+1OLzee69LxLZuXxc9Um4zNhIZZ2mT3FBKc+aBlhw40DhulrhBeYcrTLg== 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:(13230001)(366004)(6506007)(66556008)(6666004)(2906002)(66476007)(8676002)(4326008)(36756003)(66946007)(316002)(6916009)(54906003)(508600001)(8936002)(38100700002)(5660300002)(44832011)(86362001)(2616005)(83380400001)(26005)(6486002)(6512007)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ZWejwpIW5ViH4j+oSpM9ZgYoLikBhLHMUs44o3nvvdcKJQ5+lkpZZd/a1GFG?= =?us-ascii?Q?w46A91JRPyvTtRXvYgxnquj/9P3U/0XhI/GXknJ9UMi8+XzrYl6aifke85up?= =?us-ascii?Q?kWvoaN1qHdQHM6IObCkG/oq/wyCEeFznNDJpbF60ynkf6ppb2FLKuM10D+Kv?= =?us-ascii?Q?ygbQryvTRwmnz5VkprL9g7FapUsqzXlZKiiCahyFSIC4Irof/lAFLruT2E9d?= =?us-ascii?Q?WVT4Fs9t4PrjnLr+8cwJ+MLiRRhU4pT/nvddclrlMFfFzWp00eNAWVoJnkkb?= =?us-ascii?Q?Ublkjjyb7I5smwtnI/qogCI7rzjpifidelUAwJgdq0at4ZViCCYOFRyATfhs?= =?us-ascii?Q?b5/AE7nyFJqXT13CJoXXHmLkKVvQ8ruL5S+ZCotC6VNs7gJiTsek383M3nkj?= =?us-ascii?Q?2HX137PlxaXuLKMV2N95loa6TDNCaDof9Lc2205RJR0oRuGAxFxL2T3RcMSO?= =?us-ascii?Q?7vdj4Rx065b3b7/5Qoo4YVSUcpo4sz/H/E/OLOoAwY3071wilWeO1e2xDxed?= =?us-ascii?Q?t0nkxyL9JcZ3BKQqfjk/Z9Q9jEqnzlbWI7Mf7+F6zzb2f53qdhOz8Qtq88WE?= =?us-ascii?Q?UDE07mtjcMHgO0s9Y8gFPUFqbeftwVjOoFhxd+NEJDzbZQG41nRQxRi2t2pz?= =?us-ascii?Q?GnHTc9FO6hTZOT2tPvzp68IiDDlYHUNc+JUFtMYogVUtvv0bTJhdfZDvil06?= =?us-ascii?Q?lVsnYSuMg58oFGbQBp6mT+v3hv+ESlj1B7pmmsjwtBpBbSUHd2pT4MlHf333?= =?us-ascii?Q?27vTfh/HGc1E+RT52RAiAA1zHo49HsDgDm2eWTyM3eMONiS4pfImu6Nld1wZ?= =?us-ascii?Q?dxfdSo9mLQp/2NhAd7J1gygjNkY4YJ7xVttWeLE1G1Td38kL3qLLc417TG7y?= =?us-ascii?Q?mU/C4+3KjLb5VRrxEbk7wzysUBRiB21Xp9NXKn2o3ye0bSPNpP2i8bS68pgq?= =?us-ascii?Q?eeHPnyp4LMdJvVmfr8EsOo7IuQw78mk8MrYdJwlmZsNNjT24rBqIUCk+al6M?= =?us-ascii?Q?TsPy/dzOKb5tGZYOpuxC2sTCbKb8ySGUCX5H5uA7PJ8zGyCxYKYjVhLpp1sF?= =?us-ascii?Q?V/3VdHn9XQOvNMpvFJca/uYlXEK66sowM09QxKpr85LIPtGd3VE6D0ksxIHo?= =?us-ascii?Q?A3pfPbBFnyZsYKlJgkDEbdEO0nroBkMXyEqksym3kjwm4pFuk0zAeby3aPwK?= =?us-ascii?Q?d/m9ewAdvaVPTXHuKPik0rt1mUJF4ZCjfRuKx4EXz2nQ6WbGZWhk7lGeWVjz?= =?us-ascii?Q?szxnppf436PD6Zh0jDRipm5cb+OrR5hS1QbQIK16jp/BR6jorglhkOqHr50X?= =?us-ascii?Q?M9KyhtD7LEVnc9tBOQBXcMcEZVPC5EFacLGazvMdYb4k3MTbNfR1hhTJRzsR?= =?us-ascii?Q?s1ASZcAvaIKqVeENGjQLxSGVjfrk3zdoZfPLL4o4m/N/5K/rwtxw9sgyhBiC?= =?us-ascii?Q?+GF7FKTddBdQY/+SI4AIcO5eecVU1ccm1rkUeIhdgo0VfEhRz7D4pF5LO/X9?= =?us-ascii?Q?LuFAKJcddJtikiM+M/G4myjec9K1086PlVZp1Tp5TDNfQHzZMlGvAeY5XiEL?= =?us-ascii?Q?Wdcu3lJf0jdIsk5UHu1MxMWvCwtMV8bjFtRL4+JkcT8jUIDADd4VUynR5F1s?= =?us-ascii?Q?tOmCOZmC0njr6/+Im9K5a3woIFYh0Ied0pKoCQv2PRDuZE8s4ohErow76gjQ?= =?us-ascii?Q?yykH2ykqN9flt2pVUmrtoEDoFfmwb4clmJQbllefnh94fPdE47iyjmHOhAhH?= =?us-ascii?Q?Kvfahsxxk2N7w0OQJ9duvl62Lao2sbI=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 571cad4b-8ede-48d4-7ab2-08da38953e16 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2022 06:11:27.1476 (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: 3PDryCaEdUTMKOeDqYHy/FnhL2u1rnM1HcxAl016S6y6J67XWJH1ATCr49/vzbu7jRJSJwqac/SibHaO4OaTng== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8256 Content-Type: text/plain; charset="utf-8" This patch implements a new struct bpf_func_proto, named bpf_skc_to_mptcp_sock_proto. Define a new bpf_id BTF_SOCK_TYPE_MPTCP, and a new helper bpf_skc_to_mptcp_sock(), which invokes another new helper bpf_mptcp_sock_from_subflow() in net/mptcp/bpf.c to get struct mptcp_sock from a given subflow socket. v2: Emit BTF type, add func_id checks in verifier.c and bpf_trace.c, remove build check for CONFIG_BPF_JIT v3: Drop bpf.c, define bpf_mptcp_sock_from_subflow() in mptcp.h (Martin) Co-developed-by: Nicolas Rybowski Signed-off-by: Nicolas Rybowski Co-developed-by: Matthieu Baerts Signed-off-by: Matthieu Baerts Acked-by: Mat Martineau Signed-off-by: Geliang Tang --- include/linux/bpf.h | 1 + include/linux/btf_ids.h | 3 ++- include/uapi/linux/bpf.h | 7 +++++++ kernel/bpf/verifier.c | 1 + kernel/trace/bpf_trace.c | 2 ++ net/core/filter.c | 18 ++++++++++++++++++ scripts/bpf_doc.py | 2 ++ tools/include/uapi/linux/bpf.h | 7 +++++++ 8 files changed, 40 insertions(+), 1 deletion(-) diff --git a/include/linux/bpf.h b/include/linux/bpf.h index be94833d390a..f53e39065a6e 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -2204,6 +2204,7 @@ extern const struct bpf_func_proto bpf_skc_to_tcp_tim= ewait_sock_proto; extern const struct bpf_func_proto bpf_skc_to_tcp_request_sock_proto; extern const struct bpf_func_proto bpf_skc_to_udp6_sock_proto; extern const struct bpf_func_proto bpf_skc_to_unix_sock_proto; +extern const struct bpf_func_proto bpf_skc_to_mptcp_sock_proto; extern const struct bpf_func_proto bpf_copy_from_user_proto; extern const struct bpf_func_proto bpf_snprintf_btf_proto; extern const struct bpf_func_proto bpf_snprintf_proto; diff --git a/include/linux/btf_ids.h b/include/linux/btf_ids.h index bc5d9cc34e4c..335a19092368 100644 --- a/include/linux/btf_ids.h +++ b/include/linux/btf_ids.h @@ -178,7 +178,8 @@ extern struct btf_id_set name; BTF_SOCK_TYPE(BTF_SOCK_TYPE_TCP6, tcp6_sock) \ BTF_SOCK_TYPE(BTF_SOCK_TYPE_UDP, udp_sock) \ BTF_SOCK_TYPE(BTF_SOCK_TYPE_UDP6, udp6_sock) \ - BTF_SOCK_TYPE(BTF_SOCK_TYPE_UNIX, unix_sock) + BTF_SOCK_TYPE(BTF_SOCK_TYPE_UNIX, unix_sock) \ + BTF_SOCK_TYPE(BTF_SOCK_TYPE_MPTCP, mptcp_sock) =20 enum { #define BTF_SOCK_TYPE(name, str) name, diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index 444fe6f1cf35..3e996e097084 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h @@ -5154,6 +5154,12 @@ union bpf_attr { * if not NULL, is a reference which must be released using its * corresponding release function, or moved into a BPF map before * program exit. + * + * struct mptcp_sock *bpf_skc_to_mptcp_sock(void *sk) + * Description + * Dynamically cast a *sk* pointer to a *mptcp_sock* pointer. + * Return + * *sk* if casting is valid, or **NULL** otherwise. */ #define __BPF_FUNC_MAPPER(FN) \ FN(unspec), \ @@ -5351,6 +5357,7 @@ union bpf_attr { FN(skb_set_tstamp), \ FN(ima_file_hash), \ FN(kptr_xchg), \ + FN(skc_to_mptcp_sock), \ /* */ =20 /* integer value in 'imm' field of BPF_CALL instruction selects which help= er diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 813f6ee80419..3d8790e81c48 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -509,6 +509,7 @@ static bool is_ptr_cast_function(enum bpf_func_id func_= id) func_id =3D=3D BPF_FUNC_skc_to_tcp_sock || func_id =3D=3D BPF_FUNC_skc_to_tcp6_sock || func_id =3D=3D BPF_FUNC_skc_to_udp6_sock || + func_id =3D=3D BPF_FUNC_skc_to_mptcp_sock || func_id =3D=3D BPF_FUNC_skc_to_tcp_timewait_sock || func_id =3D=3D BPF_FUNC_skc_to_tcp_request_sock; } diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c index f15b826f9899..8451fc83d031 100644 --- a/kernel/trace/bpf_trace.c +++ b/kernel/trace/bpf_trace.c @@ -1688,6 +1688,8 @@ tracing_prog_func_proto(enum bpf_func_id func_id, con= st struct bpf_prog *prog) return &bpf_skc_to_udp6_sock_proto; case BPF_FUNC_skc_to_unix_sock: return &bpf_skc_to_unix_sock_proto; + case BPF_FUNC_skc_to_mptcp_sock: + return &bpf_skc_to_mptcp_sock_proto; case BPF_FUNC_sk_storage_get: return &bpf_sk_storage_get_tracing_proto; case BPF_FUNC_sk_storage_delete: diff --git a/net/core/filter.c b/net/core/filter.c index b741b9f7e6a9..ef84a9087651 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -78,6 +78,7 @@ #include #include #include +#include =20 static const struct bpf_func_proto * bpf_sk_base_func_proto(enum bpf_func_id func_id); @@ -11272,6 +11273,20 @@ const struct bpf_func_proto bpf_skc_to_unix_sock_p= roto =3D { .ret_btf_id =3D &btf_sock_ids[BTF_SOCK_TYPE_UNIX], }; =20 +BPF_CALL_1(bpf_skc_to_mptcp_sock, struct sock *, sk) +{ + BTF_TYPE_EMIT(struct mptcp_sock); + return (unsigned long)bpf_mptcp_sock_from_subflow(sk); +} + +const struct bpf_func_proto bpf_skc_to_mptcp_sock_proto =3D { + .func =3D bpf_skc_to_mptcp_sock, + .gpl_only =3D false, + .ret_type =3D RET_PTR_TO_BTF_ID_OR_NULL, + .arg1_type =3D ARG_PTR_TO_SOCK_COMMON, + .ret_btf_id =3D &btf_sock_ids[BTF_SOCK_TYPE_MPTCP], +}; + BPF_CALL_1(bpf_sock_from_file, struct file *, file) { return (unsigned long)sock_from_file(file); @@ -11314,6 +11329,9 @@ bpf_sk_base_func_proto(enum bpf_func_id func_id) case BPF_FUNC_skc_to_unix_sock: func =3D &bpf_skc_to_unix_sock_proto; break; + case BPF_FUNC_skc_to_mptcp_sock: + func =3D &bpf_skc_to_mptcp_sock_proto; + break; case BPF_FUNC_ktime_get_coarse_ns: return &bpf_ktime_get_coarse_ns_proto; default: diff --git a/scripts/bpf_doc.py b/scripts/bpf_doc.py index 096625242475..d5452f7eb996 100755 --- a/scripts/bpf_doc.py +++ b/scripts/bpf_doc.py @@ -633,6 +633,7 @@ class PrinterHelpers(Printer): 'struct socket', 'struct file', 'struct bpf_timer', + 'struct mptcp_sock', ] known_types =3D { '...', @@ -682,6 +683,7 @@ class PrinterHelpers(Printer): 'struct socket', 'struct file', 'struct bpf_timer', + 'struct mptcp_sock', } mapped_types =3D { 'u8': '__u8', diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h index 444fe6f1cf35..3e996e097084 100644 --- a/tools/include/uapi/linux/bpf.h +++ b/tools/include/uapi/linux/bpf.h @@ -5154,6 +5154,12 @@ union bpf_attr { * if not NULL, is a reference which must be released using its * corresponding release function, or moved into a BPF map before * program exit. + * + * struct mptcp_sock *bpf_skc_to_mptcp_sock(void *sk) + * Description + * Dynamically cast a *sk* pointer to a *mptcp_sock* pointer. + * Return + * *sk* if casting is valid, or **NULL** otherwise. */ #define __BPF_FUNC_MAPPER(FN) \ FN(unspec), \ @@ -5351,6 +5357,7 @@ union bpf_attr { FN(skb_set_tstamp), \ FN(ima_file_hash), \ FN(kptr_xchg), \ + FN(skc_to_mptcp_sock), \ /* */ =20 /* integer value in 'imm' field of BPF_CALL instruction selects which help= er --=20 2.34.1 From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp148673pis; Tue, 17 May 2022 23:11:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxOs9qB1srsoKg7csTptmmQcWWyOYwlx2CWNPbaJ4KEBU2jeLJ8Lzib4d+LCgnlNnBsvgAX X-Received: by 2002:a63:dc12:0:b0:3f6:da0:9a64 with SMTP id s18-20020a63dc12000000b003f60da09a64mr502386pgg.129.1652854301836; Tue, 17 May 2022 23:11:41 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id s19-20020aa78293000000b0050cff7b2666si1687059pfm.241.2022.05.17.23.11.41 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 May 2022 23:11:41 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5355-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=aoEN5W6j; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5355-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-5355-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 6DCD12809AE for ; Wed, 18 May 2022 06:11:41 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5F9D81853; Wed, 18 May 2022 06:11:40 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 5AE681852 for ; Wed, 18 May 2022 06:11:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652854296; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Atk3G91JSSNUe+UIEuu8GjmY3hMPn56dEBUsv8p19hs=; b=aoEN5W6juanRBGoEK1NXALHPbyJxjfcLs/n+Kcexe96zLexIuHxR55vfNHAmRT9gwvMGk/ uNx/RGW4Pc+G29PKuGHQFHl8zn8AwOh7eaAToITbycZ268ZaUQuMAQQs9OXkxjFCmOlZEE 8dLjNo4ElzDdga43tPghcDcgWHQR2zk= Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2053.outbound.protection.outlook.com [104.47.12.53]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-31-8ShW3gt5OnyFbcSjFF_kWQ-1; Wed, 18 May 2022 08:11:35 +0200 X-MC-Unique: 8ShW3gt5OnyFbcSjFF_kWQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M7y2EN6j72ABGOeeVHdtjygcQzyoOoLZDKc6uZGOtlINwtjAPkDmGoKXRgDTvR7k0mzKMlTWX9chTDJm73w7GJsmjaHzrkvCljiNAZiU3IvomOoJtacqZfZ6VpkrWjGThyHdSO94IVKsO1IVEHNaI7onuyt+45Klpu99nmYvx4dVOSow3z0gJxExVwreU8g0A5Id8t97XUuGCLFFYo+CPsPcz5bXPbQE5BtKOhgdmxN66163AooHoyfGB3XtsFXlP2zskWXSeg144lVYwLZQg+8vxhLNeciXcqmcbi0n4Q78gcrRvuUvLXbZ1/f8HKUWjO11xTbutOGP/ErzBvjRsA== 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=y27vFa5j/lSX4Ma9newk9esbxK4aYDN13I/rD70ttUw=; b=dIQALP4aKHE55/MogmhEwLZ17lNMla7P0xyojnsE4+3qtEfZmnxRHX2b0vYA0Io212AhGxfLrRRr86iWUyKqV2yfstETFkey0xAx8m6pnXQlTlAhKP8F8yXUR3LbKIPcmyxtr3HuWfSZ5L3IeGlmzQWAk1n82HehTTPykUeOM4JFmA9ajCg4MAiU/jG+P1dcNJbArVVHFLdvII4B8aENwDGqBQwU7jqWMyyHp+KySOCUQVKsTLhuayChkR+cLsQjspUZgLLyD9YF1LY76IusCbYLems73FPApfHEM0064SZsMoWkI+qR1smix76wPhUD36b6ZA4fySOHycZKM40tQg== 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 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 PAXPR04MB8256.eurprd04.prod.outlook.com (2603:10a6:102:1c6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Wed, 18 May 2022 06:11:34 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Wed, 18 May 2022 06:11:34 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Mat Martineau , Andrii Nakryiko Subject: [PATCH mptcp-next 05/17] selftests/bpf: Enable CONFIG_IKCONFIG_PROC in config Date: Wed, 18 May 2022 14:10:43 +0800 Message-ID: <1d7a80011d37d74886e4ce9c0e4c9b2b2de5062e.1652853898.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HKAPR04CA0017.apcprd04.prod.outlook.com (2603:1096:203:d0::27) 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: 1ae86135-7f01-4106-b9c7-08da3895427b X-MS-TrafficTypeDiagnostic: PAXPR04MB8256: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: pxMXC4MKUf0Lz0Dae0kQvDZN3JSPYM7NsMd4TV1UDt4V7QlKMLlDRBycNB0GljqY4wI8OYbghOO0s0OFHcDmcam1TbAXJ26VypA+4DynttxTWwVG5+10UOsWKVGpI/zoLM5YhY5/HGj1zlWGrng8eyNq3BH6U3H+6IekhIUTOBeAnpdKhRUQUoJMe/rrfJ8vCaA31QWiqkz6LmFwLbXqie+4B9wSX4kgZ++eOZTVTgpNoYGJSrhVB8Rnw0n1gCoNjqRdZISQvEl8aC7ynAb0pmLK5g2U1w77yEf2YllqXNFl+ibBTm8+kv1FpAJP7FkT13ePkax8aWsp533MXQOHC/gljs6VUzE/ZZG3taOHMFH2h6Ku3Al5b+cf/QTMPnXXg3rPKjEiDnq6ryBvLrYzLmlUunbhB+jz5jrmLrqlDU5PMoro+XiefqmPdUCtdSAlzBajwEgQBx79rkzUOvkI0S6aDs9gHeGy6NdvoewpVnVPrJz7vp9GOjLn3/XwkmdSAchJhywQ+Q6m9aaRs7fb288ibHVmGVbWFs/4Xlkx8kiEJaYhUyX2BURPEfbZ/GWd14Qq7N3MIMBb0hw7K+fWbqW1kzGcUlc1RxNtwsOzOXAmvRdpxMkEF4aYhe2nLGKyTxk7Rf8cu+Co2ynpXUsrIhvnBsaqjeK/hGtR776ZQAFXqPFNR26aN8ZgRSJhJX8LUft2LqS+JvumQOaPNQw/uw== 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:(13230001)(366004)(6506007)(66556008)(6666004)(2906002)(66476007)(8676002)(4326008)(36756003)(66946007)(316002)(6916009)(54906003)(508600001)(8936002)(38100700002)(5660300002)(44832011)(86362001)(2616005)(26005)(6486002)(6512007)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?133b/28+DzOxIRPHpCs4xE0/EYlX4mx8xqljazx+eLCsLmAF2UEJJwQxSCMi?= =?us-ascii?Q?L50A1/XMOsHa4uRs5jku6RV4kObpQ6KEfq83u5n3ZEp8FIRq5xrea/quaeG1?= =?us-ascii?Q?ft2YdBjDbMe/yrzXZgEehlvXr4cn32npZkA2SiZO5e6EfM9CYVO3oKA9vO1P?= =?us-ascii?Q?OUzGZks7TrYoPY3ygDA9c2+RhKcsZXLiuS9oWFOb0ghNL/wHaSUf6yje1+Gz?= =?us-ascii?Q?2OgHfZxgB+J3+F2GDklp5AUwCQ0QdR/bcWprSXnxA6BkwniiXy+rcntmYWpH?= =?us-ascii?Q?Fuom/MBBRjFywtNgS3+OkSrXrqBDx5azMX98D8BgZowqGyRnhasGBi8H1HDL?= =?us-ascii?Q?qhj54fhmmU258T1EprQNplfTV+NqNBdFv96AXSJ7kgkyKB6sUKITFAE2ZnKh?= =?us-ascii?Q?QVqhEQMVh91ltYMkPshKnIM8mU3ZtJnrgrCkdjFJ/2rNzm2M9bpXsjWyPHRz?= =?us-ascii?Q?97Mvkta5EFCW81trKdGOCz7fKRX8Q3YvzuQojmJE6++WUmJZh+dKNM8cnvA6?= =?us-ascii?Q?F+pOIg3d4EvtnOQTnmbNF0zuZxx0kj5yXiru3G247QLKXUsld0ICxnDc9oJH?= =?us-ascii?Q?/CNXzIL5wJLk8W1VoiPjbRH/Ye6GePyNA45J3vg0N71z7jtHYpQ78Ho0Mv5B?= =?us-ascii?Q?pfEBFrFASkTtcG2W6SVI74LkVizjx2LIbcq/Ycj2lAWtEW+NGFAhvLz5Y22R?= =?us-ascii?Q?hdJdR0yxC21GxraqtpauTsBaXw6bpB9kFPLWjVMjRMKW5vsCOeQS/YDPThIg?= =?us-ascii?Q?RbTNQqqx3L6RpH5/ekHzmPJMIIxXdsKKGVTfD+Oc49PSaeo/ulRut3NI5t6p?= =?us-ascii?Q?9N1LWcYiiROV1jMc4iaOpFBf895d5aLQGBeS5tB8h7AW+LKg2WQp+GddPEgb?= =?us-ascii?Q?639yjW1w/nqiUl+h6616f52KjN0BRVgSAM+f8xEColAsea8pWelh24PmCrZf?= =?us-ascii?Q?KfxcLPaUVHgS38qC86SN/bLgPxElU9mnaPs01K9Y+0VRjku7qr5XlIppDJiG?= =?us-ascii?Q?03hAZHLKvRO/x0V89vrXFkydMdXMWuSpS0uGnq1+UtA0hjExHCNcTBgsuZuc?= =?us-ascii?Q?KywldfSdafmIBRwW+L1dyXtJT5l5nCwPJaj5s/95ELGbHSaxVNh5Sj4cssqk?= =?us-ascii?Q?bZNwNzVKo7TycZRFdE6mUohhY8IR7iXqZHT2L/aK0WFtl9tPDFb3orJVVTa/?= =?us-ascii?Q?c5WeJjfBxeS5+ISEZRdoy9o7RD809tm9FFJ4IPOP/I198rknQnDqQPLsrDTU?= =?us-ascii?Q?vYWZCykzL2f23Mf9OFmhL1wSP68EBEfBd6UaA3Uo9HupzTZqVMBfEY8ymK0i?= =?us-ascii?Q?MBdcJGLVnG1EAg2z14evJtNG5ePY4CwqgzetDk1xDMH/VRZLBBM0M4o1xZy7?= =?us-ascii?Q?RJOPjYtLnG8JQ5j5pQZnoZk/9A+sGgb/+cOZkAVKs7FYDeBxlvzZ5kvU5JXh?= =?us-ascii?Q?oZfUfsZSady502GP1y6o+YZYAv/dkQsZ7kidaAbZ7QeTWFzYXFgAGofgmXv7?= =?us-ascii?Q?RwagVJ7QLSBpHKYRuBeVvkWaAyTuxoZKrylxlepkFvycjlljH6kP7XMmJokS?= =?us-ascii?Q?NZ6SWXl+Rs0ZUwgzmgQMmd6+fWFNlqgIeKyvo83XpdSius+Y6dQ61ZTzmvqE?= =?us-ascii?Q?BXa0Z0XjGhPyusMV1+usVxazkGnyq+UwkFP+4APyIZd2+sGwXJ7xwrPnAqmL?= =?us-ascii?Q?HOkOevvydIgtydzqu288XCaiGj8p+aUrSw3eoAVrkefi786jFzjTyYURP7t4?= =?us-ascii?Q?xm8nteC7xMV+zk0G5xnfpr9IyQt7Too=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1ae86135-7f01-4106-b9c7-08da3895427b X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2022 06:11:34.4127 (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: +Jimi/Hc9W1HELnBe9hP6HiUBCUKi3A3e3e96lKY3Nwqc82H2EBo2wueMs41nTgoJEuO0nzDoQ3O4KdTfT+gYA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8256 Content-Type: text/plain; charset="utf-8" CONFIG_IKCONFIG_PROC is required by BPF selftests, otherwise we get errors like this: libbpf: failed to open system Kconfig libbpf: failed to load object 'kprobe_multi' libbpf: failed to load BPF skeleton 'kprobe_multi': -22 It's because /proc/config.gz is opened in bpf_object__read_kconfig_file() in tools/lib/bpf/libbpf.c: file =3D gzopen("/proc/config.gz", "r"); So this patch enables CONFIG_IKCONFIG and CONFIG_IKCONFIG_PROC in tools/testing/selftests/bpf/config. Suggested-by: Mat Martineau Reviewed-by: Mat Martineau Acked-by: Andrii Nakryiko Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/testing/selftests/bpf/config b/tools/testing/selftests/b= pf/config index 763db63a3890..8d7faff33c54 100644 --- a/tools/testing/selftests/bpf/config +++ b/tools/testing/selftests/bpf/config @@ -53,3 +53,5 @@ CONFIG_NF_DEFRAG_IPV4=3Dy CONFIG_NF_DEFRAG_IPV6=3Dy CONFIG_NF_CONNTRACK=3Dy CONFIG_USERFAULTFD=3Dy +CONFIG_IKCONFIG=3Dy +CONFIG_IKCONFIG_PROC=3Dy --=20 2.34.1 From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp148745pis; Tue, 17 May 2022 23:11:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxA4O55hLxQxFnk70ZC/7uG6sY10In4zQUJ8axz8XHDcIcBobBZ10NdIuWQvw9lTnWnyU+J X-Received: by 2002:a50:ea8b:0:b0:428:7d05:eb7e with SMTP id d11-20020a50ea8b000000b004287d05eb7emr22213271edo.185.1652854312174; Tue, 17 May 2022 23:11:52 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id y11-20020a50eb0b000000b00425ed30f8fdsi1232388edp.234.2022.05.17.23.11.51 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 May 2022 23:11:52 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5356-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=mimecast20200619 header.b=g3qrC3K6; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5356-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5356-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 8078F2E09E2 for ; Wed, 18 May 2022 06:11:49 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 33C6D1853; Wed, 18 May 2022 06:11:48 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (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 2B6251852 for ; Wed, 18 May 2022 06:11:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652854304; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=m43ICTnZLpCuEB/VLMAo5Qqq77ZaISrTpMgPW2TXlK4=; b=g3qrC3K6sFR4NH7MrdIeJ8lEgpNpyh2yJwoIGxfo3wYH8fjdK80lHQ2pW9rZq7KaiNmT23 LVlBRZI8mlEwSB36vvr1O7Zl4qklqbDIQQgr42diLm/LWqj19wiaVf7nL6foCcugKSIRkN UAZnqA/1em8NRl25tiRSgkcReg8girg= Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2058.outbound.protection.outlook.com [104.47.12.58]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-20-_bH-WooPNLe0Q5tC4kf4Bg-1; Wed, 18 May 2022 08:11:43 +0200 X-MC-Unique: _bH-WooPNLe0Q5tC4kf4Bg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ED9c93jyggy19sStsrco0am4ZbKAy7z4d04r2JGmVOenUAKrTa/KFgS+jsgPMaf0oSbyvqG0RK5GMlKaXW1n+5HenmbNmdtSEiI/tWBjDLvejCcMrvPzUjGZJOSiU59SJJXlSvPr7HklW5zzICOIHMTlJ/vmjEqxzn6RbdUnNkj8WKFST5H5GtjzNG17UIJiK/UkEb3MWXr04yUfvJez3A68NUUgkYXVlT6JHDm8k8vd75I/eePktkS36pEjjs61g0RMjjAcwQiaxTHE9DNgqN7SDYywgQU/jI8RKV9keqjuX7w+xRs9HteAbUNtdB7BJojLTZV+2mS2Zx9vE8+2lw== 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=+iu/m1tcWIUhp/DpoMoOXl8dSn8GytXkn6dNCl9GUpk=; b=hJNjS/j0yxQpkA7G3C0GgD+eF9Oq5haoUiHAXYfg3StKhsNPRYM7Hq861DSWcwcdJk7esXitMxNHiFBVgpndU7WP6F2xUgF3REWyapcyQ34d2EPjJR9xQII6r5tHJCYeggZeeWpJnEhb/IXQfMki6Py+cgNpYGkERBIRdnhyKRPwyJg/X9RUUZmMeGNFoQSUgpMjUvnB+xy3CBiB9bb8mckvQSaqU2scc5Nr9SWkq3izWiVPHlwAm4Qot09Ds669gEVG7Myp7iZ+Ux1DAgz7H76558AUGNuDc88EdxiSc6StWyyfpS6thMXaU5vAPfC6e5Ch9jQSGEJobBHGne9LhQ== 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 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 PAXPR04MB8256.eurprd04.prod.outlook.com (2603:10a6:102:1c6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Wed, 18 May 2022 06:11:42 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Wed, 18 May 2022 06:11:42 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Nicolas Rybowski , Matthieu Baerts , Geliang Tang Subject: [PATCH mptcp-next 06/17] selftests/bpf: add MPTCP test base Date: Wed, 18 May 2022 14:10:44 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR06CA0017.apcprd06.prod.outlook.com (2603:1096:202:2e::29) 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: b3d8865b-1216-42f2-f8d6-08da389546e0 X-MS-TrafficTypeDiagnostic: PAXPR04MB8256: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: XPH983rvFhRGqCxj1cA7s8Do1FZRrgqOis8ydh1+OGidIznWD2gQgTbLhnx4myaThsiXaGlKwfeaIMIi4FvrkumYnEoR+YnWNKnoAcLC8rz45o29jtzy7rXMl/Yu5a1bSCfujjmqOnUv1YJBsbSGzWFLCy0M75M6Fm+WwHmk8oQr/2nl+LxKtQnEQcYuM6JNRUKWhSpMdhSsX/gz+/0PiXgqsF8Zg/V56vSfctWMsah5G1IgbXKoQs6EuODwxqWqoHMfIRgYA62dMJjuo7rq9neuTsupmm+L2zjOdxggrJDWDLXqRWc3R9S47QUU/c70wfO/DzoYxdlXASU5dLEhwN3SsYGK/OVpQxRZskCPd3xLY+fT2Pdlbtf41z9mO5Rn+ybtMPX7vaH2A3oeii6SrhZ62RW87z492VM623+IVCB1qtHckHnky4YCJWNa3wXSCSyrtyt8Oyj94236LETJR7VaPX1iDFzx05mrlLyfPHUVXuNxRrbCy2KZ1W4mfqYkI9L7Z2DtFdi7U0qwhkEstnmBbF7H4r0APZZ3FhxFfE9jp69MYm5Qmxe/6tViEdsx1Z70kOyUiDNRO1WasZN1txVOXpXg0GAlZGHLEeB1jt6b/OMMTSXYgPnDdlJYNoiZwdvSkjfs7Si0c30c/Ko03dA8OsRQxxzkocCTt40e59UvjD58ImJ2R+a1hTpOIBUCctPHpF+hefwYBQx6B9cD4w== 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:(13230001)(366004)(6506007)(66556008)(2906002)(66476007)(107886003)(8676002)(4326008)(36756003)(66946007)(316002)(6916009)(54906003)(508600001)(30864003)(8936002)(38100700002)(5660300002)(44832011)(86362001)(2616005)(83380400001)(26005)(6486002)(6512007)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?xPkj48ZV0NovRebHa/RJInnMI9lWe/2CWg/nnAtcwqW2RLN6GlBW1FsAz4a1?= =?us-ascii?Q?Pr2O0Sq6heH42lZZTFsr7hdkQGJX8LZ+j29TARZluwM6VhVrjsI56PlWV1yt?= =?us-ascii?Q?6RgBT24MaOwsmLIM6g9gD7AOIW/oUTeQY4OKzgnH5OZVrgEGYS1o+yivuxuv?= =?us-ascii?Q?r9mzxpr2jfKbo4OQWMgrGZEzTmHqejULvTN5bqxNf9l8SpJn3BDuGYoPV2rb?= =?us-ascii?Q?A7LWSOoH06NhdG/W40XeSNrbfEGCNWEKIALzUbKUTueqwJizZ31kdintisqR?= =?us-ascii?Q?jVYeifvlb1N1TbK0m2rGXwfTUKW5BFzjttW5r4AUO+2cho1o0V3JlXPOnnLI?= =?us-ascii?Q?7Fpl/xGitg0DADI2lNKz7fLbFbkjfZ6pDkarsGALOpvfDH/PjFsBwZHCyMcw?= =?us-ascii?Q?sp5t6jJu7Ln0Gdr20HjSBzCDq6LUIljzjCIbp8gcfFOPs89bHAVd2IY/rQck?= =?us-ascii?Q?zs9PZibi7/sLIV839gFajpU2zTe+F5AnVJWfqVFo7PK7jTqhzrk3yLS6NfvM?= =?us-ascii?Q?uUPFBQXzLHdLevncexc4SAMjiRKyw4km9ScRzs8GHHhZN7A5aow/zpAdpIzV?= =?us-ascii?Q?He7/RYxcvK6jRX0D3NB0IA/roKqNlqFwQS8lCZS5DKDFeC/NZfbTQJ96+c/r?= =?us-ascii?Q?die74V9E2US+LC8XAdgS6EB+GCAD64Z8yP/OXUM5JGRWRx6f/3kWZV+2yITy?= =?us-ascii?Q?OC221OK8f0fcmss5uK7xQuM6n1KoFyEfoDDTkgpsf6eKNfZr1hydmScJNgjf?= =?us-ascii?Q?E3U5jXdpaesy+WE/AsBMjyVOM8McLrGD1eQO08teds66ezAJFWQ8VPPB558A?= =?us-ascii?Q?JavzUE77nIyBooaJg9FDibAC7HvWzfC6R7RGDjbKPKsid/JpKZOU/IOjkM36?= =?us-ascii?Q?L05YRCdiUAiDshxGBTb10qexwOU1sBhxz8Z9rqAQPx70F2v3XEKOvK65f+yo?= =?us-ascii?Q?ro26Xgo1SdK5YxX6FtknyGJCIDEq2g1wgAAQyefwfnd6bxK7GnTmSnHzVz7A?= =?us-ascii?Q?8SmAZ5svJLQpPRyLMpR8sWvqTGgzA2lGVsxS5P4/Bh3Qdv8ihlQuTb6aCYUH?= =?us-ascii?Q?XlLbzuphuSSqSD0uiESEzgXlzQ/a8b8+8dXQZHeytnHSuyEVBHstSS0DUX4O?= =?us-ascii?Q?cIm/j9oxZhKNnFhSrH3sdpMWmcap0IOLc3Oicol34vqwLnO9ZaKzZUTAhMuv?= =?us-ascii?Q?Z3ZEpJlzte9d4ojzW5sVt1Y1nPd01Gb0PnE7elr6x2Zk4V2KuQrYYn/nDDp4?= =?us-ascii?Q?d+zcV1z9J0uJ0NiHlqNJsQy2pBT7FKQAxU0I5+qc4oTH/+AbetWCm+ZnoiyZ?= =?us-ascii?Q?c+Lre71EyFidmKUE1gWgrFGdRDCdqPp+S9iLf4lVohyVjPGTTSpHSRvKQ9DD?= =?us-ascii?Q?1J5lhFIJJ6zGGeV35SX1VDL1CajQiZoPMnbzVJQcx8wO79k7qIfIxeiNl740?= =?us-ascii?Q?+ETqMLvKZgyNSA94dlM1uF0mJgxUgaZFrYdzf4ZnsZ/gkXPYll6o2JHVO/0A?= =?us-ascii?Q?RBP7mAKAgM0+jtyBc9KUzCafHeJ7gptCcydZP9EeC431gSnkigsPwTpTW0Xz?= =?us-ascii?Q?Y/yWsU7SNWT5Ur0aWitcbjgLtFoHqfOM1JCWtt16kSAQpocwDQ0XL3eK/j2+?= =?us-ascii?Q?vNsMjmqhj17DFZTDpXX1hIMkunNPjZtss/bgrFcwoZoRjRevM9q1rENyUOht?= =?us-ascii?Q?XO7wbiMRv6KF0lPPZrMLvq82rths4n384hvKqpZ1RItcU39eBsVVo8PIhB9g?= =?us-ascii?Q?RSyZQSFi0ArImnQvcf7sEZCztyg+BII=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: b3d8865b-1216-42f2-f8d6-08da389546e0 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2022 06:11:41.9121 (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: lNpv/v0H/2ta//1kgnHhzcQBIVceF6SuYRks3ayq3EtNDtbpUNwVfiLlNGVAm4ENGwREhqrJv4mE26XNOwTUnQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8256 Content-Type: text/plain; charset="utf-8" From: Nicolas Rybowski This patch adds a base for MPTCP specific tests. It is currently limited to the is_mptcp field in case of plain TCP connection because there is no easy way to get the subflow sk from a msk in userspace. This implies that we cannot lookup the sk_storage attached to the subflow sk in the sockops program. v4: - add copyright 2022 (Andrii) - use ASSERT_* instead of CHECK_FAIL (Andrii) - drop SEC("version") (Andrii) - use is_mptcp in tcp_sock, instead of bpf_tcp_sock (Martin & Andrii) v5: - Drop connect_to_mptcp_fd (Martin) - Use BPF test skeleton (Andrii) - Use ASSERT_EQ (Andrii) Acked-by: Matthieu Baerts Co-developed-by: Geliang Tang Signed-off-by: Geliang Tang Signed-off-by: Nicolas Rybowski --- MAINTAINERS | 1 + tools/testing/selftests/bpf/bpf_tcp_helpers.h | 1 + tools/testing/selftests/bpf/config | 1 + tools/testing/selftests/bpf/network_helpers.c | 40 +++++-- tools/testing/selftests/bpf/network_helpers.h | 2 + .../testing/selftests/bpf/prog_tests/mptcp.c | 112 ++++++++++++++++++ .../testing/selftests/bpf/progs/mptcp_sock.c | 53 +++++++++ 7 files changed, 201 insertions(+), 9 deletions(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/mptcp.c create mode 100644 tools/testing/selftests/bpf/progs/mptcp_sock.c diff --git a/MAINTAINERS b/MAINTAINERS index 69b597aa4bc7..00e29c9f8f5f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -13799,6 +13799,7 @@ F: include/net/mptcp.h F: include/trace/events/mptcp.h F: include/uapi/linux/mptcp.h F: net/mptcp/ +F: tools/testing/selftests/bpf/*/*mptcp*.c F: tools/testing/selftests/net/mptcp/ =20 NETWORKING [TCP] diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index b1ede6f0b821..22e0c8849a17 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -81,6 +81,7 @@ struct tcp_sock { __u32 lsndtime; __u32 prior_cwnd; __u64 tcp_mstamp; /* most recent packet received/sent */ + bool is_mptcp; } __attribute__((preserve_access_index)); =20 static __always_inline struct inet_connection_sock *inet_csk(const struct = sock *sk) diff --git a/tools/testing/selftests/bpf/config b/tools/testing/selftests/b= pf/config index 8d7faff33c54..a25e15d55918 100644 --- a/tools/testing/selftests/bpf/config +++ b/tools/testing/selftests/bpf/config @@ -55,3 +55,4 @@ CONFIG_NF_CONNTRACK=3Dy CONFIG_USERFAULTFD=3Dy CONFIG_IKCONFIG=3Dy CONFIG_IKCONFIG_PROC=3Dy +CONFIG_MPTCP=3Dy diff --git a/tools/testing/selftests/bpf/network_helpers.c b/tools/testing/= selftests/bpf/network_helpers.c index 2bb1f9b3841d..59cf81ec55af 100644 --- a/tools/testing/selftests/bpf/network_helpers.c +++ b/tools/testing/selftests/bpf/network_helpers.c @@ -21,6 +21,10 @@ #include "network_helpers.h" #include "test_progs.h" =20 +#ifndef IPPROTO_MPTCP +#define IPPROTO_MPTCP 262 +#endif + #define clean_errno() (errno =3D=3D 0 ? "None" : strerror(errno)) #define log_err(MSG, ...) ({ \ int __save =3D errno; \ @@ -73,13 +77,13 @@ int settimeo(int fd, int timeout_ms) =20 #define save_errno_close(fd) ({ int __save =3D errno; close(fd); errno =3D= __save; }) =20 -static int __start_server(int type, const struct sockaddr *addr, +static int __start_server(int type, int protocol, const struct sockaddr *a= ddr, socklen_t addrlen, int timeout_ms, bool reuseport) { int on =3D 1; int fd; =20 - fd =3D socket(addr->sa_family, type, 0); + fd =3D socket(addr->sa_family, type, protocol); if (fd < 0) { log_err("Failed to create server socket"); return -1; @@ -113,8 +117,8 @@ static int __start_server(int type, const struct sockad= dr *addr, return -1; } =20 -int start_server(int family, int type, const char *addr_str, __u16 port, - int timeout_ms) +static int start_server_proto(int family, int type, int protocol, + const char *addr_str, __u16 port, int timeout_ms) { struct sockaddr_storage addr; socklen_t addrlen; @@ -122,10 +126,23 @@ int start_server(int family, int type, const char *ad= dr_str, __u16 port, if (make_sockaddr(family, addr_str, port, &addr, &addrlen)) return -1; =20 - return __start_server(type, (struct sockaddr *)&addr, + return __start_server(type, protocol, (struct sockaddr *)&addr, addrlen, timeout_ms, false); } =20 +int start_server(int family, int type, const char *addr_str, __u16 port, + int timeout_ms) +{ + return start_server_proto(family, type, 0, addr_str, port, timeout_ms); +} + +int start_mptcp_server(int family, const char *addr_str, __u16 port, + int timeout_ms) +{ + return start_server_proto(family, SOCK_STREAM, IPPROTO_MPTCP, addr_str, + port, timeout_ms); +} + int *start_reuseport_server(int family, int type, const char *addr_str, __u16 port, int timeout_ms, unsigned int nr_listens) { @@ -144,7 +161,7 @@ int *start_reuseport_server(int family, int type, const= char *addr_str, if (!fds) return NULL; =20 - fds[0] =3D __start_server(type, (struct sockaddr *)&addr, addrlen, + fds[0] =3D __start_server(type, 0, (struct sockaddr *)&addr, addrlen, timeout_ms, true); if (fds[0] =3D=3D -1) goto close_fds; @@ -154,7 +171,7 @@ int *start_reuseport_server(int family, int type, const= char *addr_str, goto close_fds; =20 for (; nr_fds < nr_listens; nr_fds++) { - fds[nr_fds] =3D __start_server(type, (struct sockaddr *)&addr, + fds[nr_fds] =3D __start_server(type, 0, (struct sockaddr *)&addr, addrlen, timeout_ms, true); if (fds[nr_fds] =3D=3D -1) goto close_fds; @@ -247,7 +264,7 @@ int connect_to_fd_opts(int server_fd, const struct netw= ork_helper_opts *opts) struct sockaddr_storage addr; struct sockaddr_in *addr_in; socklen_t addrlen, optlen; - int fd, type; + int fd, type, protocol; =20 if (!opts) opts =3D &default_opts; @@ -258,6 +275,11 @@ int connect_to_fd_opts(int server_fd, const struct net= work_helper_opts *opts) return -1; } =20 + if (getsockopt(server_fd, SOL_SOCKET, SO_PROTOCOL, &protocol, &optlen)) { + log_err("getsockopt(SOL_PROTOCOL)"); + return -1; + } + addrlen =3D sizeof(addr); if (getsockname(server_fd, (struct sockaddr *)&addr, &addrlen)) { log_err("Failed to get server addr"); @@ -265,7 +287,7 @@ int connect_to_fd_opts(int server_fd, const struct netw= ork_helper_opts *opts) } =20 addr_in =3D (struct sockaddr_in *)&addr; - fd =3D socket(addr_in->sin_family, type, 0); + fd =3D socket(addr_in->sin_family, type, protocol); if (fd < 0) { log_err("Failed to create client socket"); return -1; diff --git a/tools/testing/selftests/bpf/network_helpers.h b/tools/testing/= selftests/bpf/network_helpers.h index a4b3b2f9877b..f882c691b790 100644 --- a/tools/testing/selftests/bpf/network_helpers.h +++ b/tools/testing/selftests/bpf/network_helpers.h @@ -42,6 +42,8 @@ extern struct ipv6_packet pkt_v6; int settimeo(int fd, int timeout_ms); int start_server(int family, int type, const char *addr, __u16 port, int timeout_ms); +int start_mptcp_server(int family, const char *addr, __u16 port, + int timeout_ms); int *start_reuseport_server(int family, int type, const char *addr_str, __u16 port, int timeout_ms, unsigned int nr_listens); diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c new file mode 100644 index 000000000000..59113eb982e0 --- /dev/null +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -0,0 +1,112 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2020, Tessares SA. */ +/* Copyright (c) 2022, SUSE. */ + +#include +#include "cgroup_helpers.h" +#include "network_helpers.h" +#include "mptcp_sock.skel.h" + +struct mptcp_storage { + __u32 invoked; + __u32 is_mptcp; +}; + +static int verify_sk(int map_fd, int client_fd, const char *msg, __u32 is_= mptcp) +{ + int err, cfd =3D client_fd; + struct mptcp_storage val; + + if (is_mptcp =3D=3D 1) + return 0; + + err =3D bpf_map_lookup_elem(map_fd, &cfd, &val); + if (!ASSERT_OK(err, "bpf_map_lookup_elem")) + return err; + + if (!ASSERT_EQ(val.invoked, 1, "unexpected invoked count")) + err++; + + if (!ASSERT_EQ(val.is_mptcp, 0, "unexpected is_mptcp")) + err++; + + return err; +} + +static int run_test(int cgroup_fd, int server_fd, bool is_mptcp) +{ + int client_fd, prog_fd, map_fd, err; + struct mptcp_sock *sock_skel; + + sock_skel =3D mptcp_sock__open_and_load(); + if (!ASSERT_OK_PTR(sock_skel, "skel_open_load")) + return -EIO; + + prog_fd =3D bpf_program__fd(sock_skel->progs._sockops); + if (!ASSERT_GE(prog_fd, 0, "bpf_program__fd")) { + err =3D -EIO; + goto out; + } + + map_fd =3D bpf_map__fd(sock_skel->maps.socket_storage_map); + if (!ASSERT_GE(map_fd, 0, "bpf_map__fd")) { + err =3D -EIO; + goto out; + } + + err =3D bpf_prog_attach(prog_fd, cgroup_fd, BPF_CGROUP_SOCK_OPS, 0); + if (!ASSERT_OK(err, "bpf_prog_attach")) + goto out; + + client_fd =3D connect_to_fd(server_fd, 0); + if (!ASSERT_GE(client_fd, 0, "connect to fd")) { + err =3D -EIO; + goto out; + } + + err +=3D is_mptcp ? verify_sk(map_fd, client_fd, "MPTCP subflow socket", = 1) : + verify_sk(map_fd, client_fd, "plain TCP socket", 0); + + close(client_fd); + +out: + mptcp_sock__destroy(sock_skel); + return err; +} + +void test_base(void) +{ + int server_fd, cgroup_fd; + + cgroup_fd =3D test__join_cgroup("/mptcp"); + if (!ASSERT_GE(cgroup_fd, 0, "test__join_cgroup")) + return; + + /* without MPTCP */ + server_fd =3D start_server(AF_INET, SOCK_STREAM, NULL, 0, 0); + if (!ASSERT_GE(server_fd, 0, "start_server")) + goto with_mptcp; + + ASSERT_OK(run_test(cgroup_fd, server_fd, false), "run_test tcp"); + + close(server_fd); + +with_mptcp: + /* with MPTCP */ + server_fd =3D start_mptcp_server(AF_INET, NULL, 0, 0); + if (!ASSERT_GE(server_fd, 0, "start_mptcp_server")) + goto close_cgroup_fd; + + ASSERT_OK(run_test(cgroup_fd, server_fd, true), "run_test mptcp"); + + close(server_fd); + +close_cgroup_fd: + close(cgroup_fd); +} + +void test_mptcp(void) +{ + if (test__start_subtest("base")) + test_base(); +} diff --git a/tools/testing/selftests/bpf/progs/mptcp_sock.c b/tools/testing= /selftests/bpf/progs/mptcp_sock.c new file mode 100644 index 000000000000..bc09dba0b078 --- /dev/null +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2020, Tessares SA. */ +/* Copyright (c) 2022, SUSE. */ + +#include +#include +#include "bpf_tcp_helpers.h" + +char _license[] SEC("license") =3D "GPL"; + +struct mptcp_storage { + __u32 invoked; + __u32 is_mptcp; +}; + +struct { + __uint(type, BPF_MAP_TYPE_SK_STORAGE); + __uint(map_flags, BPF_F_NO_PREALLOC); + __type(key, int); + __type(value, struct mptcp_storage); +} socket_storage_map SEC(".maps"); + +SEC("sockops") +int _sockops(struct bpf_sock_ops *ctx) +{ + struct mptcp_storage *storage; + int op =3D (int)ctx->op; + struct tcp_sock *tsk; + struct bpf_sock *sk; + bool is_mptcp; + + if (op !=3D BPF_SOCK_OPS_TCP_CONNECT_CB) + return 1; + + sk =3D ctx->sk; + if (!sk) + return 1; + + tsk =3D bpf_skc_to_tcp_sock(sk); + if (!tsk) + return 1; + + is_mptcp =3D bpf_core_field_exists(tsk->is_mptcp) ? tsk->is_mptcp : 0; + storage =3D bpf_sk_storage_get(&socket_storage_map, sk, 0, + BPF_SK_STORAGE_GET_F_CREATE); + if (!storage) + return 1; + + storage->invoked++; + storage->is_mptcp =3D is_mptcp; + + return 1; +} --=20 2.34.1 From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp148787pis; Tue, 17 May 2022 23:11:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzsrn9r0JCxxibQqfqtQ0hjQjqGupNRVNuUmtWQfLfuMCTOLDmrKY0eZhysaGiFaPtkulDY X-Received: by 2002:a05:6402:1ca5:b0:42a:a393:ff02 with SMTP id cz5-20020a0564021ca500b0042aa393ff02mr19451663edb.76.1652854319665; Tue, 17 May 2022 23:11:59 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [2604:1380:4040:4f00::1]) by mx.google.com with ESMTPS id e15-20020a17090658cf00b006f92ef03c83si1363021ejs.609.2022.05.17.23.11.59 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 May 2022 23:11:59 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5357-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) client-ip=2604:1380:4040:4f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=QyIaWeNl; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5357-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5357-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 7E1FA2E09EA for ; Wed, 18 May 2022 06:11:57 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 056D41853; Wed, 18 May 2022 06:11:56 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (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 575231852 for ; Wed, 18 May 2022 06:11:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652854312; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=SmAAt/P46AJDFshvzSJbe0G4hyPuipBGsJJ74pPRjZE=; b=QyIaWeNlcjd/OSQ01Z32SybNgxi7Yx0yg+R+4h6/7eCIc+iI5R8bQpgxfdlboENsVWSSyB YZH1QX+mpdNeRLxbetzUMfvuT2FtaoYcHaHQBvQAnHenVBnpOCg4Qq8cBnqPbMs+KfaNfB AzFz9u5AZPh+Dz9+lBLZ6GYcZ4GduVM= Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2052.outbound.protection.outlook.com [104.47.12.52]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-34-1oY-Nh2bMliTDVzB07atQQ-1; Wed, 18 May 2022 08:11:50 +0200 X-MC-Unique: 1oY-Nh2bMliTDVzB07atQQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Nx1XpgjZyzI+QIq7COlYcLuypnFfCvFPOFos8rV8k3Abw1VjQ0BJpBAY8gi9kJ3/LhCOvpizRBoIR0JXnYdem+tl8cFWnoqC98tf7+Jd1C419XvMZ44GlzfetaIG3Z02DjSVo63gGfzKRPI1KoEr7sDIEI01xgRCgC8dAeuRJPTEJ1EC7mYk+HV8Bz+l3D0wehENplx93rxgOpdcZTRt4gHTm6LE2IGKT3T/whptGkzQsmrnCyFcb5WR7u+9TfIzXGv0mjm3fWBwXTml4VYwRUNGe2lWMnTJGF2y+zinStPe3q4EHHPn4vKUCP8Na6RGvJduYv5fxQHR3Ft4fsq/1g== 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=DoA2QZPzgT7rUFIOxYqQoWbPyByXXnT6AS9neNTqUw8=; b=TmrwoKkn98nn7nsdJaYQ2LTZTLLiEEXN/bH399gu6QE8OLSK4H331hG40QOT0utp2orBrlBHVVZiRESgmjSoLyUNzLQSmcSKUpKmqccw4XaMC6AkuGpnLXIb1pXR8PzFO9a1VvoAfG0toyRqwspugIlPLXKKvOjnRyp2HatipxVpmySxz8ZudBRBfcF+rh3Z029H41K+2QxPuP+e5JqltBQ2oOR2RAGKUAUaq4zA1mDneh8pl+eUwJ646cIsNqnYHIe9KPrIjrCrOXZGIU1pM1+Zx09xfeLQymTa+SiFc4mQRMos2DPEJ5MVNFuvEoi4WGRD7M+v7Lv7aSqbvfkw+Q== 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 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 PAXPR04MB8256.eurprd04.prod.outlook.com (2603:10a6:102:1c6::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.14; Wed, 18 May 2022 06:11:49 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Wed, 18 May 2022 06:11:49 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Mat Martineau , Matthieu Baerts Subject: [PATCH mptcp-next 07/17] selftests/bpf: test bpf_skc_to_mptcp_sock Date: Wed, 18 May 2022 14:10:45 +0800 Message-ID: <49fd886aba92d3ae5f6940051fcd5eac03586c8e.1652853898.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR06CA0024.apcprd06.prod.outlook.com (2603:1096:202:2e::36) 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: 10ac36a1-a383-4929-35f3-08da38954b65 X-MS-TrafficTypeDiagnostic: PAXPR04MB8256: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: +0dUhnUfhU7MugFg8mTonKIhOrKQ05lced3eivV8vK8bNosUnGXWR2eTHIgmt7slmvcE2r55PqM9BnVfGxqzYPKPj7d1wqHO2CJkO1q+NQTB3+7zZnPLh6rGGB03reCPYycqiG9EthePMbDANu3/ScpJl4UG1040+s5AMyY3+gZ5x1PtTKAxt5eB/ZlyjWjgK2K6/wdA5Gvw4V/bAv93PCdWruaCoAepX8se+2DvU/fsIrhJysRFFS9vWFkll4fipB4WqtyqBC27uz4H0AkPcHDpDfBSOR6pnqpESxs/eJ1n470uNeEQPB6za6M6S61x0/v+tw+z9jQzhQGjzhmQ8YWHN4ywj95XU9LYv67ERCkAucu8JI37dM0PW0kzKMq2xFks+YrcBXKYxJR+R+f1ka05j4WrduaZkfcSx0S2ikmDA8k/1gZC/7aEtMXTkaExjcNnMimC+ycGAVWKHAIo/63CWtvKlSrS1MCTypx/R3MNwqoGhA5Ws1VmtDg7HaVgoIAKI1z0ClVHs4jgIo2fFH7jmuQRJXAk8wgy7lBSTnnWo8WYlbJ065qllsis2AyhoAETayOvESjAUPtvYq+ccLPhDoP93AhCPQk3LUxwX0dlwpRNJ9GissfrpqwwtEdmKg4l3tTLUfE87RE8bl3grp/FbrDANQTFnhN1qpCRna3NqdF/CLjZqwbssdjY31fg 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:(13230001)(366004)(6506007)(66556008)(6666004)(2906002)(66476007)(8676002)(4326008)(36756003)(66946007)(316002)(6916009)(54906003)(508600001)(8936002)(38100700002)(5660300002)(44832011)(86362001)(2616005)(83380400001)(26005)(6486002)(6512007)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bUru/c7csjXuMbuZxxvakRR//XtRlaYXSJYRSiGWE5Rh5QcbzjOIOq6CPzs2?= =?us-ascii?Q?+Vz1LgvNQvtgAxVg4QudjMtIAWqqoffhiFo+KAGtvYjDb3zlk7ecPc5tr5+H?= =?us-ascii?Q?Z+HLBGcthuiuqpsdrkzlKNHN3MHrlW1tSyNEPPtY7zMNAEx1G7QVzDtMNTap?= =?us-ascii?Q?qsAiMR3mBhlZUcMAzrkkvaaTNHrhny5GeEYuz44uT5IbKlG01JacRxS7xRQS?= =?us-ascii?Q?TKjg3xspc7GDTzOOdYuXuGDJaKq/3KToQEwt9XmqF/4TUour+DbCuaIYehJo?= =?us-ascii?Q?cz61IrgkkybhP3wuO075IcDx7gf61XVnidi8+9rH1qbDFJrBS8uKW3LGWGuC?= =?us-ascii?Q?kq64t3L7vj1lJQEVlaklRY/8o0Z5A2lq17J6KmDql6/CZRgYWrCg/h0CRYLS?= =?us-ascii?Q?CQsDxxr1kHVQBqvm/u5LuhFL2co0U3qmxTzR9Kp3qITojeJwYLBFsC93xHS9?= =?us-ascii?Q?uriLRYGQW3VIR7o0zT06S45ALkYLrTRAVu/zTdcFR4LqubgwL9cD27pgOnxJ?= =?us-ascii?Q?BSl0bte8g+aUfTfuvLxVKmmrYB25YulWyOTyXgF38cvuXuF6Qf8aE2Kg3+bJ?= =?us-ascii?Q?79p/Rzdt+s4x7k79VS5FP1HlZ1qzDxgbmM1qDwlywUzAK21nEpcYkKoLXn5R?= =?us-ascii?Q?P2tx+XNdOgz9JavR+FpGtt7oo8yZoAZR3wAiVH1xWw/IxE/w2b+mLo3ivtev?= =?us-ascii?Q?rmtSWBzHhR1aFBlQL5mH6lJcvXtrXBOkdpGupZXYoG5IE44v15Q8YO4x+QYa?= =?us-ascii?Q?xWFXSi0mVxXJFapL/v8FH3frGWLdp0TJ11BAWM4UQ8Abbh6406VFuhXbW0/h?= =?us-ascii?Q?0KD2+VhvhNtCEIYSYSTuFhzLiMOZhFnlvdheQrIIw3dC3HBxFMMVTa7rvyqm?= =?us-ascii?Q?bm7elkTm4Sf000gazh23yGFUespMn/df5gnrmjNLTJoFVZNreIaLrQhMEYGh?= =?us-ascii?Q?3S0CBZK9xqvER5TXMnhClBAooUsvBDMGw/ksI/J5mOXhu2GRfK4/IFgu38IU?= =?us-ascii?Q?j0dogOM5+2QOn1RKmv2U/uMo/+J9pktUlTMlMFz5CS8aVbnHE4uR25JnFO13?= =?us-ascii?Q?2jBaShRSEsb8u4JDR5nwsVv81qAmdoXg6Pcuxk6g64v7u27vGQR42P88y4iQ?= =?us-ascii?Q?c6DeXU23pIR4DJXlBDP1grzTH24gSTnJFC8qIzkzZQXvew8tFsRtxRD2f48+?= =?us-ascii?Q?ss0kCkL9vPZ/mJJd6fGTNAba9w8ZarsiGUhr7pPBcWp1nIznck6LUIR1HX1s?= =?us-ascii?Q?WgYgdb4nNbNt1Wk0257NQlMJGQaIqR5Tb7JsrMW6mK8hmLJIatXEecXWZTis?= =?us-ascii?Q?4tHrPxOi8YYnq2Bp9l3qcfmQgMiVLMakS3X88WIZfyU/hN0r/27cSxhIPRAl?= =?us-ascii?Q?MpyhlQG6QQvC0tqhPdACRkVn3qSRVJReU7PXS7ebvdYvTxHmCNMyeUk7vwm8?= =?us-ascii?Q?Zhgm3KN/osOUxY7R3JSyG5Az0j/Xx11HT252isMRdaMtSnrS1gJy6r/a7CHt?= =?us-ascii?Q?YFLVLNrF0YpJs+9y237va6mBVr9R4Euj8AsiGgx+uPBXXmU1jyqOZJxadJ1Y?= =?us-ascii?Q?VBHXY9l4aw7Dq5vD5bg+bveNUWoWJXRDuqdsQmtfz9ckaxhDTuRWBn61KVKS?= =?us-ascii?Q?IF3LkQ959L3iUWzXrPUS6YPsLarOm/XSLvucmcXA+eu0PqHy7Y1LD4OPfn7l?= =?us-ascii?Q?WvLC+vd6KMRUEeA8rQEoVXQfGRVqBK8XQR+28XYXVgjqTkFdJAbzX7pRcDOg?= =?us-ascii?Q?PXMgiaIF9hWD50CQD4JRuTH09D1LqZk=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 10ac36a1-a383-4929-35f3-08da38954b65 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2022 06:11:49.5834 (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: okxZ08xq1StbRj5SFAwDnV6d9ZUmHSTPa95pDRbVohc95x5jaFLgYCgyf5dAzrHlj4gA5+/UVQJ4uf0hR1NwbQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8256 Content-Type: text/plain; charset="utf-8" This patch extends the MPTCP test base, to test the new helper bpf_skc_to_mptcp_sock(). Define struct mptcp_sock in bpf_tcp_helpers.h, use bpf_skc_to_mptcp_sock to get the msk socket in progs/mptcp_sock.c and store the infos in socket_storage_map. Get the infos from socket_storage_map in prog_tests/mptcp.c. Add a new function verify_msk() to verify the infos of MPTCP socket, and rename verify_sk() to verify_tsk() to verify TCP socket only. v2: Add CONFIG_MPTCP check for clearer error messages v4: - use ASSERT_* instead of CHECK_FAIL (Andrii) - drop bpf_mptcp_helpers.h (Andrii) v5: - some 'ASSERT_*' were replaced in the next commit by mistake. - Drop CONFIG_MPTCP (Martin) - Use ASSERT_EQ (Andrii) Acked-by: Mat Martineau Acked-by: Matthieu Baerts Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 5 ++++ .../testing/selftests/bpf/prog_tests/mptcp.c | 27 ++++++++++++++----- .../testing/selftests/bpf/progs/mptcp_sock.c | 19 ++++++++++--- 3 files changed, 41 insertions(+), 10 deletions(-) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index 22e0c8849a17..90fecafc493d 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -226,4 +226,9 @@ static __always_inline bool tcp_cc_eq(const char *a, co= nst char *b) extern __u32 tcp_slow_start(struct tcp_sock *tp, __u32 acked) __ksym; extern void tcp_cong_avoid_ai(struct tcp_sock *tp, __u32 w, __u32 acked) _= _ksym; =20 +struct mptcp_sock { + struct inet_connection_sock sk; + +} __attribute__((preserve_access_index)); + #endif diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 59113eb982e0..6f333e3aba9c 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -12,14 +12,11 @@ struct mptcp_storage { __u32 is_mptcp; }; =20 -static int verify_sk(int map_fd, int client_fd, const char *msg, __u32 is_= mptcp) +static int verify_tsk(int map_fd, int client_fd) { int err, cfd =3D client_fd; struct mptcp_storage val; =20 - if (is_mptcp =3D=3D 1) - return 0; - err =3D bpf_map_lookup_elem(map_fd, &cfd, &val); if (!ASSERT_OK(err, "bpf_map_lookup_elem")) return err; @@ -33,6 +30,24 @@ static int verify_sk(int map_fd, int client_fd, const ch= ar *msg, __u32 is_mptcp) return err; } =20 +static int verify_msk(int map_fd, int client_fd) +{ + int err, cfd =3D client_fd; + struct mptcp_storage val; + + err =3D bpf_map_lookup_elem(map_fd, &cfd, &val); + if (!ASSERT_OK(err, "bpf_map_lookup_elem")) + return err; + + if (!ASSERT_EQ(val.invoked, 1, "unexpected invoked count")) + err++; + + if (!ASSERT_EQ(val.is_mptcp, 1, "unexpected is_mptcp")) + err++; + + return err; +} + static int run_test(int cgroup_fd, int server_fd, bool is_mptcp) { int client_fd, prog_fd, map_fd, err; @@ -64,8 +79,8 @@ static int run_test(int cgroup_fd, int server_fd, bool is= _mptcp) goto out; } =20 - err +=3D is_mptcp ? verify_sk(map_fd, client_fd, "MPTCP subflow socket", = 1) : - verify_sk(map_fd, client_fd, "plain TCP socket", 0); + err +=3D is_mptcp ? verify_msk(map_fd, client_fd) : + verify_tsk(map_fd, client_fd); =20 close(client_fd); =20 diff --git a/tools/testing/selftests/bpf/progs/mptcp_sock.c b/tools/testing= /selftests/bpf/progs/mptcp_sock.c index bc09dba0b078..dc73b3fbb50b 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_sock.c +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -24,6 +24,7 @@ SEC("sockops") int _sockops(struct bpf_sock_ops *ctx) { struct mptcp_storage *storage; + struct mptcp_sock *msk; int op =3D (int)ctx->op; struct tcp_sock *tsk; struct bpf_sock *sk; @@ -41,11 +42,21 @@ int _sockops(struct bpf_sock_ops *ctx) return 1; =20 is_mptcp =3D bpf_core_field_exists(tsk->is_mptcp) ? tsk->is_mptcp : 0; - storage =3D bpf_sk_storage_get(&socket_storage_map, sk, 0, - BPF_SK_STORAGE_GET_F_CREATE); - if (!storage) - return 1; + if (!is_mptcp) { + storage =3D bpf_sk_storage_get(&socket_storage_map, sk, 0, + BPF_SK_STORAGE_GET_F_CREATE); + if (!storage) + return 1; + } else { + msk =3D bpf_skc_to_mptcp_sock(sk); + if (!msk) + return 1; =20 + storage =3D bpf_sk_storage_get(&socket_storage_map, msk, 0, + BPF_SK_STORAGE_GET_F_CREATE); + if (!storage) + return 1; + } storage->invoked++; storage->is_mptcp =3D is_mptcp; =20 --=20 2.34.1 From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp148841pis; Tue, 17 May 2022 23:12:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzzC65gGS2t0e+9GDUAd1B5RO5yLxFIDeq+6K1CvWUgo4MSoFyAGisiUGaLGw275rPBfuHI X-Received: by 2002:a17:907:6297:b0:6da:6388:dc58 with SMTP id nd23-20020a170907629700b006da6388dc58mr23198702ejc.472.1652854326734; Tue, 17 May 2022 23:12:06 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id hs36-20020a1709073ea400b006f39b748c48si1440877ejc.229.2022.05.17.23.12.06 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 May 2022 23:12:06 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5358-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=mimecast20200619 header.b="ghezD/ZR"; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5358-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5358-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 7151A2E09E2 for ; Wed, 18 May 2022 06:12:04 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2803E1853; Wed, 18 May 2022 06:12:03 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (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 58C6F1852 for ; Wed, 18 May 2022 06:12:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652854319; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FWTaedwQvr0SxBey0vAuLwwi2xBbDwT0bGJ2Oe2nsWc=; b=ghezD/ZR5xz25h/pnKI1i1ZVSq5AIIVz/4ibn1ybisRh6xJ0SC+8mH8cCzZT9lvFsgVamS lEIA0azkwVHwqMprvaOPqIDXkNrl9WVuAz0tEEL6xRY3aShw4DXjmooGOy9HiEuNJLLvr4 wIB5TLGw4G9gyf74rUET/zrD/GzYwQY= Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-ve1eur03lp2050.outbound.protection.outlook.com [104.47.9.50]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-10-MA0Gw4CiNnW2qRi3OJYAwg-1; Wed, 18 May 2022 08:11:58 +0200 X-MC-Unique: MA0Gw4CiNnW2qRi3OJYAwg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DJy5lhuPTYZHLn0eCKXP9p42bpqkKo9LnIFF4L/KE2SlWb+K1U9byC7Srg1XitqzsNLQxGD2VszSMQh2AT8y5AtQcyifLip80NUw5HZCHuFXfeqQZMts+p461fborWfkvnlXbH/HhCUEP8Lx1nhsh/qEYexCuQLJy/RvhmkLqCrjDlyL6EdmiFQFWFsIxf/c1B5y5apk26+nt4YmrRk7hF1iSpYS2ruPFV55VjLWt7Nbw1H8Zaj49hZ5jdnlW+SbM9AJdQF4wdAtVADEjzfvKjZhdvqK4Ash4f9NVdYhmsfVBiWlKB5tlHqwXP3ODQZGIbIM2pIN7tDpi0UmLbZ0kQ== 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=WWqVJOlJVhMDZlOasJXM+CVcH99g2/50uQTOM7gXcgI=; b=Bale2Mpxi41KOaaSNMQXhfXAEjHCXiLc86xTQpGCT3/KE2/Oh5CKdoG915HluKoxM3emIuETPerk/pbX5A/xGDn+Nl1FkCJnW0ex/MQ6u4Hx2t2N2I7OOu96XMyeyXQBaty4fDztQg7d7W80t07avJLzxXT4j60EtDrMaH5CV6zf00NtO2jBWW+9TwIAFfz4xStvsL8//L3WzPBnNkpQOPxSGx1L7Y1HHoxdZO2kYN2vSEjwM5QYFo2F6algzsOXtNjAXHe2Iljv34hXl17E9mImZrkdKWNoGYe8GmkF+WJV/AaUzgXD0IT2BK4X/0JLi0IAk3k1yStCVdDIFKw4SQ== 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 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 AM6PR04MB6583.eurprd04.prod.outlook.com (2603:10a6:20b:fd::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18; Wed, 18 May 2022 06:11:57 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Wed, 18 May 2022 06:11:56 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next 08/17] selftests/bpf: verify token of struct mptcp_sock Date: Wed, 18 May 2022 14:10:46 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR03CA0053.apcprd03.prod.outlook.com (2603:1096:202:17::23) 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: 4ff693a6-af64-4ef6-2712-08da38954fbc X-MS-TrafficTypeDiagnostic: AM6PR04MB6583: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: pKRKAtpClhp5ykQAORurRUpVz7A6J2xR0joFS9SLY31ETPv1sxbdiS6nR//2RmloBTvUeSNAcIzmlvQOA8lpzbpd250v34SND/qeaQJ4q1+6C1OdfZND1ZM+8pMqspuJGy2h5ohGFGKVKbcIkOIjE3J56uSf16y7qAlCAw9wxZbO/5E7vn0G+HTKB0GHkF0nkLcDwQVbuyatXiMbEEYPuULKQwE2+IJrS5ClcnqSROTSjqy1GsV3tzNNVnOVjsgYch21vRLSbn1+Wy6K2erOsSscFbBn6VhmURlEVdaNO501eF1zjD6q5HNQOLx3bKOo5Idy04H0SsyM6bqJ1c7oAghw3rSqQ5OZ/Pu3pXwERtMglkoe9f58b0dRjC0XODcPmG2SNy6+aG66h1mpg8alo3zpI4zXRg35x4ZVXJuhq2/AoWg8W+skSZGI2VmuUmqvlXev80h6mKPfy/JLITTb8voJg9l9jyb3xu0UUMbvQL/j0Y01ZqdxJ2Tezd3ealM0L1JHF2MD6IJaXIpOPN77K550yNirx0e9/fsKCPoZ6BYvhnxVkAznN2gxyCZzXO+SZemNIktIPXmyw71AqclIXWH3Odt0MZm6kl0VYo9HpinSM1NHa+xMiqfF7BDmS7KgZ2EgncljOfFidJAi5S65lvYxGk8RLO116V1eVWAV4Q38S8DbDc8OP72KaCLeh9r0 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:(13230001)(366004)(5660300002)(26005)(508600001)(2906002)(86362001)(66946007)(15650500001)(44832011)(316002)(6486002)(6512007)(36756003)(6916009)(54906003)(66556008)(2616005)(66476007)(4326008)(83380400001)(8676002)(38100700002)(6666004)(186003)(8936002)(6506007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5Ciq9jz3Lb5v8+piASTAiJGIZChoUrqrYufWPL3OZPF5vhuE5e240XlqXHBP?= =?us-ascii?Q?McVV0dqL5BvvJyr7oIcCJoENbt2R5U0fTxtgpHlVhpnNiWa/5+px8lha+os9?= =?us-ascii?Q?vtSPtfvi3JXBiZgV7Z+3+fpZ0NSUo5dgvgKGTf5XS5yAxd3+FTQbrm4gVANR?= =?us-ascii?Q?AzsKOlMklM5OoeDBALmrXN4ksTT3uUX4cbcn3bbMsvtlZJgPLcXgQQb2aZGe?= =?us-ascii?Q?X5d9+AdxKNRZOh8d99IUV2kVOFdTPrscZL+iaT2QYISSPZQThSTXZ2+21FEf?= =?us-ascii?Q?bjzAGT3sGmCI/sH0AneAJx3Sp6L2xpudlREqUSSlPyAqLnhtbMKOS7vNG34A?= =?us-ascii?Q?F99bd3tEpK6X+uKKwvz6OjZPSEvDSLq70YdMf/PTdVhX19VHnR4d8FGBDPmX?= =?us-ascii?Q?ZUtqHIkpmh+A2R5WQoOyTqhvw6ZS1hxrizh2idZyyqQFyQJJqc2Q/Ckmxjyp?= =?us-ascii?Q?VDu7j5XNf+6zPNnsYvyTjkJK22X4ykVhXZxMa+QWKQRjm3tD78M6U2po6lMD?= =?us-ascii?Q?ItIzAumj9liontse7h1qlhxQJCRvW09Gcsxk7rnoGzxAi5qkTo6JNjzfwc3b?= =?us-ascii?Q?vOe5lKhzyn2PEiHZtdutqeFi/1Znsb+nBbI16SP0jCU9Q5X1TJgT9L0kMlBm?= =?us-ascii?Q?OAp5Gb+44F6zfprGVet2VYnpIy5c7yVXFITssRiUU+IPMa7UP4AkqZPXl+LW?= =?us-ascii?Q?txQk+HhQstOO8UPGrZorjABG+3yywSb4/mxSwkVGnEYn1FBkfmKqwxsqgUx2?= =?us-ascii?Q?Sw0xsSXBLWVcT55j2UvJcapYlqJEmm6ax5dJjFX4BdvhVCNV6rhw9A57ulaS?= =?us-ascii?Q?u1N62X4TueopE8QOOmQ3k8V/g4D+4RVjTV3fHJTa8LmKmTHZlU+itpHHFPUq?= =?us-ascii?Q?pjtAAOhC/thQ7XZ4+xqJZMNBxZq4ZTvYpd1kyNxqTmHMYIhXGw4W7WHmk41N?= =?us-ascii?Q?HCgMr1yEporT+Ew8Sq2O94X2uJm59u304APJK0j1WbJgKhPQ7QifImvFwWE+?= =?us-ascii?Q?ZCFgSH42vWeEe5xgmSTVEKSe5qn57MA4On5PsNI1aG09/YBT5tjHy8P9bMaH?= =?us-ascii?Q?Etx7450yFagGoynWyoDrjFVoGIySaQ5xCQjmn5Le+ijB/Ct6VZb4TL6Byh5e?= =?us-ascii?Q?fIeNmt251K8vAvNiDqEGDHw+vb+n+F8KEMs7vjodN8iol4slEQqPkxRMW2gs?= =?us-ascii?Q?c024C8/Hycu6Ikk3CQHBioJ2CJzJFAmJRgdRiZs3+r9WUMXvruo4V2NnOGEx?= =?us-ascii?Q?7uKZ2Be51LdfFYR6UZHJUg0YvZVseoqeZ+9hIBMlWy9h4p936SQ9MHJQmXzN?= =?us-ascii?Q?EZOUJlLOE0uR/iz493unmEnB6dU2D8fkN+Skqt8DXUDnThdCnAXQdsTy+uBX?= =?us-ascii?Q?mpxc5UgIDi5LVK72kDDTI8uKOwGopfeWHkQa2CAYn9D3loeE7JqQBe0pWlgm?= =?us-ascii?Q?5TR3yx6WztLntxJ60hIGZ5k+qANqAscYoAO3sRXg92T0RbiymxGhI60xVa2/?= =?us-ascii?Q?UNWrc5CTEoXc0bCVv4GLcHpir8QQZ2+TlHtxyNCJJXa95S+bnvTK+mUss2an?= =?us-ascii?Q?NWTDo7/5+UNPQI9hQ76XRA13v7eR6fmS5jebrXM9NfFZ4HV010hAcTq+At4i?= =?us-ascii?Q?qGbRSceXliO14liFbwT7g7t5go3B7k40zcV2s6LCPBwiQoWdBDTj145bCiNf?= =?us-ascii?Q?hhi/25jvDo4By755Aic64oWdVtNyzTQuJpBmdopYmliXquDGgkJFMT/w32/B?= =?us-ascii?Q?C7M/V3+J2wFpiUDA+C06UWBYl7XVpYY=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4ff693a6-af64-4ef6-2712-08da38954fbc X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2022 06:11:56.8640 (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: jkbPLi7rtZl7TzEIAUvWaGtMcPyx3BKHAVyqR+NdI5TQrqX1ngR+s4gYLUYj/zMowLZ1xqJFg7e3EKedTHrSBw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB6583 Content-Type: text/plain; charset="utf-8" This patch verifies the struct member token of struct mptcp_sock. Add a new function get_msk_token() to parse the msk token from the output of the command 'ip mptcp monitor', and verify it in verify_msk(). v4: - use ASSERT_* instead of CHECK_FAIL (Andrii) - skip the test if 'ip mptcp monitor' is not supported (Mat) v5: - Drop 'ip mptcp monitor', trace mptcp_pm_new_connection instead(Martin) - Use ASSERT_EQ (Andrii) Acked-by: Matthieu Baerts Acked-by: Mat Martineau Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 1 + tools/testing/selftests/bpf/prog_tests/mptcp.c | 15 +++++++++++++-- tools/testing/selftests/bpf/progs/mptcp_sock.c | 16 ++++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index 90fecafc493d..422491872619 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -229,6 +229,7 @@ extern void tcp_cong_avoid_ai(struct tcp_sock *tp, __u3= 2 w, __u32 acked) __ksym; struct mptcp_sock { struct inet_connection_sock sk; =20 + __u32 token; } __attribute__((preserve_access_index)); =20 #endif diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 6f333e3aba9c..138bcc80ab9e 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -10,6 +10,7 @@ struct mptcp_storage { __u32 invoked; __u32 is_mptcp; + __u32 token; }; =20 static int verify_tsk(int map_fd, int client_fd) @@ -30,11 +31,14 @@ static int verify_tsk(int map_fd, int client_fd) return err; } =20 -static int verify_msk(int map_fd, int client_fd) +static int verify_msk(int map_fd, int client_fd, __u32 token) { int err, cfd =3D client_fd; struct mptcp_storage val; =20 + if (!ASSERT_GT(token, 0, "invalid token")) + return -1; + err =3D bpf_map_lookup_elem(map_fd, &cfd, &val); if (!ASSERT_OK(err, "bpf_map_lookup_elem")) return err; @@ -45,6 +49,9 @@ static int verify_msk(int map_fd, int client_fd) if (!ASSERT_EQ(val.is_mptcp, 1, "unexpected is_mptcp")) err++; =20 + if (!ASSERT_EQ(val.token, token, "unexpected token")) + err++; + return err; } =20 @@ -57,6 +64,10 @@ static int run_test(int cgroup_fd, int server_fd, bool i= s_mptcp) if (!ASSERT_OK_PTR(sock_skel, "skel_open_load")) return -EIO; =20 + err =3D mptcp_sock__attach(sock_skel); + if (!ASSERT_OK(err, "skel_attach")) + goto out; + prog_fd =3D bpf_program__fd(sock_skel->progs._sockops); if (!ASSERT_GE(prog_fd, 0, "bpf_program__fd")) { err =3D -EIO; @@ -79,7 +90,7 @@ static int run_test(int cgroup_fd, int server_fd, bool is= _mptcp) goto out; } =20 - err +=3D is_mptcp ? verify_msk(map_fd, client_fd) : + err +=3D is_mptcp ? verify_msk(map_fd, client_fd, sock_skel->bss->token) : verify_tsk(map_fd, client_fd); =20 close(client_fd); diff --git a/tools/testing/selftests/bpf/progs/mptcp_sock.c b/tools/testing= /selftests/bpf/progs/mptcp_sock.c index dc73b3fbb50b..f038b0e699a2 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_sock.c +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -7,10 +7,12 @@ #include "bpf_tcp_helpers.h" =20 char _license[] SEC("license") =3D "GPL"; +__u32 token =3D 0; =20 struct mptcp_storage { __u32 invoked; __u32 is_mptcp; + __u32 token; }; =20 struct { @@ -47,6 +49,8 @@ int _sockops(struct bpf_sock_ops *ctx) BPF_SK_STORAGE_GET_F_CREATE); if (!storage) return 1; + + storage->token =3D 0; } else { msk =3D bpf_skc_to_mptcp_sock(sk); if (!msk) @@ -56,9 +60,21 @@ int _sockops(struct bpf_sock_ops *ctx) BPF_SK_STORAGE_GET_F_CREATE); if (!storage) return 1; + + storage->token =3D msk->token; } storage->invoked++; storage->is_mptcp =3D is_mptcp; =20 return 1; } + +SEC("fentry/mptcp_pm_new_connection") +int BPF_PROG(trace_mptcp_pm_new_connection, struct mptcp_sock *msk, + const struct sock *ssk, int server_side) +{ + if (!server_side) + token =3D msk->token; + + return 0; +} --=20 2.34.1 From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp148925pis; Tue, 17 May 2022 23:12:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJymX7rCUGLgUfLBZcicJcTNooJn4U6Vfo1dIxNVdu/ESBAGjdK9LK6sCMMOlXNbRChd3C8J X-Received: by 2002:a63:1d6:0:b0:3c1:732a:3855 with SMTP id 205-20020a6301d6000000b003c1732a3855mr22126322pgb.571.1652854339006; Tue, 17 May 2022 23:12:19 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id x6-20020a170902ec8600b00158c30f7edasi1842306plg.137.2022.05.17.23.12.18 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 May 2022 23:12:18 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5359-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=B5TiwZKw; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5359-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5359-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 42108280A91 for ; Wed, 18 May 2022 06:12:18 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 26A4F1854; Wed, 18 May 2022 06:12:17 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 1F5421852 for ; Wed, 18 May 2022 06:12:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652854333; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0wyAiqJrxbsrOzQZkOW8J9DDbOtPs1v+mOWtujL1zzM=; b=B5TiwZKwkDiAeuJQcdmUvs5i01NdLl+ddYJ+/BFnl8zG+Za/2zcAJ2PfocX1cLwQd9Iq2p 41XeggfIyVSsaQCHZZt6YdZ6wIHdb36rsvJulkYUbBDWTi7xiOuRBXBJXrBmxpaVn/6ZRM qmYipaS1/TU1KswxyyURYHN4SyHVBVU= Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03lp2176.outbound.protection.outlook.com [104.47.51.176]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-9-Jfh8NfL0OtC7AuGoDdsQtw-1; Wed, 18 May 2022 08:12:06 +0200 X-MC-Unique: Jfh8NfL0OtC7AuGoDdsQtw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b8DsDgZoqfyVlliAgm3rUKM0Gz7QkOLNYmXrCpUFtsR5cwf9yPhBEpGPYx6lkWwMsnQMFgs4tpOd5AQODbwJZj19BW0jeyBT5FktIn/i9M/LsVpA7iDPAXNqoJCWFXZUYbh1ILcLnsUaHtIFAFk/RwoWzvvmw3F6kgqEetiShApbspLiF7oJ7AjbvLr1C5grhR5w27juGvUAdQeOV32+DrSiSDCsL2WRyYpPTsUuef+Kf2TJvt03W7z9i/UML4PWCJuxlFEVh1eSt5EWA5aJigeUaFRhixmKUH6TKEMrtE4U300HfL44C2iW/sRN6e5Mo3m9lrKwlsT5lFpw6b4jpw== 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=z0DMObuDqhBnmp9GnxtaVVDhXzRPXx/uK0SQlwZG57A=; b=fhy5cSTRfYu/pHiSdzGkjfufnDmcV2/pUPBHDXUS/R4q4D5Ooe9l20tGPxww87ep2GX5TPSg+qU3g0zm0ZW8L4p9wSyTMli4/MZYrSwcU7sApCQvH6ytiaun+KUOspwaI3/S17yYmxJA86ahvEv12c4P/8+MykcOqUxH/x2Eyj0tA3LH71caTIxQW3oSScSCiL81pfEj66QGTVhydPZTgKSnaG6e0giK7rZbLF41aJkPNrOy9MT2CdSh9s6sX+ZQySZ8Xg33sMMD2/beykzTjgNF2cDNfwxTFjlZytQxVH6zHq376jUbYm1Wt8MA+0rs3QWp82XupQsSUCiLXoPQsQ== 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 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 DB6PR0401MB2584.eurprd04.prod.outlook.com (2603:10a6:4:38::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18; Wed, 18 May 2022 06:12:05 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Wed, 18 May 2022 06:12:04 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Mat Martineau , Matthieu Baerts Subject: [PATCH mptcp-next 09/17] selftests/bpf: verify ca_name of struct mptcp_sock Date: Wed, 18 May 2022 14:10:47 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR03CA0062.apcprd03.prod.outlook.com (2603:1096:202:17::32) 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: 104eaa3f-2b29-4fc1-01ca-08da3895543e X-MS-TrafficTypeDiagnostic: DB6PR0401MB2584: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: cCJVnKMvQu4w2bYyesZSwMVVcXcx7SY9rTQniiBo1ypeUAwlxDHn15lIW8/y4BRyxsqHknDIz3Yj+zuI5TLNRX8xlLrZHDxHk6Xi5dltdsgDqfxRYdLV4Bd915IQgiWsky7lCEpXilhIaYSxMn9blF814YQ0gKJ23pbn+amDjC1TBEJQyTTYWgHN81+ndbofOF9pnn3/jDDCcfFZbe7IrWrdhv96m6agTMSgRJXGlV/nFjxKxQO5ybQ1yotxAcZf6idESvlyeljsAhITjlyLy04MFp1MQNdxIhviGFIqo1qcibENHHSABnfjuMByJYA1InhLxYdDmM2KxEijLqD1HTKMdqNGzFCouxD6ETXFSKTZXfg0PCxrgYsNXsuypp7rGvZHIIb9jpk4iZl1CexKkWpZVXKsCFUzcSSh0qdgtjzQfb5B51h4NVaGJhfldyc8K6uBN5klim/qaPEKHgY+X3Ev66IUTQGTulHPBJizzBiZvIkN4agb+i0zJ/euvNLFPdOdO+IrJVkiL0IAUFFY3lbtfSxUsaRscwRHph3pkxny9JBWulZ2y3/9LRleNhxLxS8Z18QpOeKSPgb+8Dtu6jthhhEJlBi2O3YHnE7k/C+v+vixokVPaUIDZjffaUUFZa55AzAcYbZOwZ1AAgRB8+oRWPbz7bOsmogEQJaj6jY430/9IcQegark6Wp/TM+b 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:(13230001)(366004)(316002)(66476007)(36756003)(44832011)(2906002)(8676002)(4326008)(6666004)(38100700002)(86362001)(2616005)(5660300002)(6486002)(66946007)(83380400001)(186003)(6506007)(6916009)(54906003)(6512007)(15650500001)(508600001)(8936002)(66556008)(26005)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?LzAnjdt/YbSRYRGGmPJshbTrVKZQzTAhCstD5SptDo8LXVbHt46ZSyVca6Yf?= =?us-ascii?Q?p2RIv/95vcf/dpLnDoH3wNeIGx+3nLgnnoL+ZkBq1SslXxfmI3/Is/OTxvkI?= =?us-ascii?Q?9bLiWWE2WmfWsvAaO83f2lOIhObTumu2UwyBs0IFmaEqsp/oC+5ih08KErTK?= =?us-ascii?Q?mAbaAr5iP8+HF0TA3NAO46H++YeSYJ2Fip1G+z3d0t8v8J8cUscICK8VR9Pw?= =?us-ascii?Q?pz/f9jul3AT0EUngfggg+2A2Al+dPPHwj539i/sZnLcZ9BTfgjzu+JU3fKiZ?= =?us-ascii?Q?hk3kYinUUtncSwgBhUCDCT9pU5NRIkeM9t7dDBwHTCzGoJD4RKlAv1czdMGQ?= =?us-ascii?Q?xPVwUt3KY6Tsx2Q/RZWdLKsKZgQqOnq+TAk3X3cmc4rbj4aimg2x8KINYYuZ?= =?us-ascii?Q?Cv/YcBWDOSpUejA/o35BnD6OMCi/kwRTldlypYH1Qdaz9/rXY1nWJ6RAGFhw?= =?us-ascii?Q?8OUeVDF3IRnMvfarTGgK3waXS70wct0ZkmwMLaEcj+9MQYWfatKDN8ldT8uT?= =?us-ascii?Q?bRZOzwnxoHITeMMYVp9TNMdn8XDZ49qpQRIhjUFyEMhPB9j2nphP+0Cgh/2b?= =?us-ascii?Q?VRzyoe2sxp9uR+d2fmGbwi5i3zmObNuyWsWUzw4gd6rTnq5N2NfC14hYTCty?= =?us-ascii?Q?moBWkjNotWxr2iXviwuwmdID24XbxycVRYy+ZGDHUoqSi9lQFzDINF6l7ozE?= =?us-ascii?Q?3QMi02/haWjjpBUshMcxtJRyClMfs59T0mA0P4Q4q1F4WWk7+CRc152JK7GD?= =?us-ascii?Q?jZCbIoioh6wNQT/5Q3oOV358IzKmZkUi4W3/if7/gjBgYPW79yg3Gy8J1NPf?= =?us-ascii?Q?gPH+CGKdmVcPUlWMuoq2B1SVccw4uqbVxyqdmrmrRFy2q5Fk5SIiJIac/UXu?= =?us-ascii?Q?TzJqWbEIu6ngQc7C93BOQFjJQQ/kQX8nw3VSdzgqhRK3v07Z0IKJRJowZT8a?= =?us-ascii?Q?/Eq83vh4rXPoDUqmAZqytA29Ly0gmDB5g8U7yr3Zc9CviJDfCOfyHIz4xKsT?= =?us-ascii?Q?YrXyq94ALRJSfEaS95cyzjTg3HH4g6TWRRhkPo9CCQvz7/Zisw+QZMoRBHw3?= =?us-ascii?Q?uX1BOJXo/zFRwiFpfMOiwyImyOUqpbBJyfRMWQiI30s3XQh7Z5gNLIOR/GFX?= =?us-ascii?Q?cKLeXDaJt1ex8HtSNU59K13GoA3zYG9ynV6P2RiUNJkEFwQtA3hsGoYCeit0?= =?us-ascii?Q?td3FvuOV+9nkjEJ4K2AN5jRdQjSPVvQu25QJ0gUQZD54QvrqhN5hHniPxCa8?= =?us-ascii?Q?rQogjycI9rGzMb5+/FJZnphzms32BK0WR/kauKG5wVQn+Sw9NEcIm2g0DHhI?= =?us-ascii?Q?q8quRkzWAHK70nuJF+vmkVHcD2NAi0EwK97L8TjNlxricNxgC2/8viJDv9vR?= =?us-ascii?Q?3qJR6xG18oX7FzmyORZ05X9AidL5QVtVrt0/DoQL5EUne/0D1CClE3Orqym4?= =?us-ascii?Q?6MtQW1yp0YwogzPZ8ZXebJ2+dpx7GJeEC85JTRRe6GVlBsT5O3EuffTEcG3u?= =?us-ascii?Q?9mSIb2NE4bECYFrWnzqowMbWtc/+7WD9joeWI8IFYtkMtIK+SI3rS2XuWAuI?= =?us-ascii?Q?ORPevOoN38a/RHJO3N7Wqwl5MrkpNWUi6yxgiXMr7qUtxo3rn0FQhGKmK0OJ?= =?us-ascii?Q?dgCnevM3Pd1MBWJ0nWCcE1gFdLcS0maMq2vtKzBu8rchQ8zatIfmtOa9TdRt?= =?us-ascii?Q?LWDdWolvJGa7GAaRIeXd09RXJzBhFD5WsPxc3Q678qa3YXrXiX8SpPsgjHHg?= =?us-ascii?Q?15uEPrCWp7xsdstqRZtizHQXlY+haQI=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 104eaa3f-2b29-4fc1-01ca-08da3895543e X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2022 06:12:04.4259 (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: VY0Sr3dBaqUxRCkfNegnbcR3pwjnxeAYot2/rppryd4Cn1qHArLG+ZN86S5UiRRQo+MFIBAab/EJgq/+XV5Qwg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0401MB2584 Content-Type: text/plain; charset="utf-8" This patch verifies another member of struct mptcp_sock, ca_name. Add a new function get_msk_ca_name() to read the sysctl tcp_congestion_control and verify it in verify_msk(). v3: Access the sysctl through the filesystem to avoid compatibility issues with the busybox sysctl command. v4: use ASSERT_* instead of CHECK_FAIL (Andrii) Acked-by: Mat Martineau Acked-by: Matthieu Baerts Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 5 +++ .../testing/selftests/bpf/prog_tests/mptcp.c | 31 +++++++++++++++++++ .../testing/selftests/bpf/progs/mptcp_sock.c | 4 +++ 3 files changed, 40 insertions(+) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index 422491872619..c38c66d5c1e6 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -16,6 +16,10 @@ BPF_PROG(name, args) #define SOL_TCP 6 #endif =20 +#ifndef TCP_CA_NAME_MAX +#define TCP_CA_NAME_MAX 16 +#endif + #define tcp_jiffies32 ((__u32)bpf_jiffies64()) =20 struct sock_common { @@ -230,6 +234,7 @@ struct mptcp_sock { struct inet_connection_sock sk; =20 __u32 token; + char ca_name[TCP_CA_NAME_MAX]; } __attribute__((preserve_access_index)); =20 #endif diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 138bcc80ab9e..17ad1cb07339 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -7,10 +7,15 @@ #include "network_helpers.h" #include "mptcp_sock.skel.h" =20 +#ifndef TCP_CA_NAME_MAX +#define TCP_CA_NAME_MAX 16 +#endif + struct mptcp_storage { __u32 invoked; __u32 is_mptcp; __u32 token; + char ca_name[TCP_CA_NAME_MAX]; }; =20 static int verify_tsk(int map_fd, int client_fd) @@ -31,14 +36,37 @@ static int verify_tsk(int map_fd, int client_fd) return err; } =20 +void get_msk_ca_name(char ca_name[]) +{ + size_t len; + int fd; + + fd =3D open("/proc/sys/net/ipv4/tcp_congestion_control", O_RDONLY); + if (!ASSERT_GE(fd, 0, "failed to open tcp_congestion_control")) + return; + + len =3D read(fd, ca_name, TCP_CA_NAME_MAX); + if (!ASSERT_GT(len, 0, "failed to read ca_name")) + goto err; + + if (len > 0 && ca_name[len - 1] =3D=3D '\n') + ca_name[len - 1] =3D '\0'; + +err: + close(fd); +} + static int verify_msk(int map_fd, int client_fd, __u32 token) { + char ca_name[TCP_CA_NAME_MAX]; int err, cfd =3D client_fd; struct mptcp_storage val; =20 if (!ASSERT_GT(token, 0, "invalid token")) return -1; =20 + get_msk_ca_name(ca_name); + err =3D bpf_map_lookup_elem(map_fd, &cfd, &val); if (!ASSERT_OK(err, "bpf_map_lookup_elem")) return err; @@ -52,6 +80,9 @@ static int verify_msk(int map_fd, int client_fd, __u32 to= ken) if (!ASSERT_EQ(val.token, token, "unexpected token")) err++; =20 + if (!ASSERT_STRNEQ(val.ca_name, ca_name, TCP_CA_NAME_MAX, "unexpected ca_= name")) + err++; + return err; } =20 diff --git a/tools/testing/selftests/bpf/progs/mptcp_sock.c b/tools/testing= /selftests/bpf/progs/mptcp_sock.c index f038b0e699a2..6a78e7b754a8 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_sock.c +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -2,6 +2,7 @@ /* Copyright (c) 2020, Tessares SA. */ /* Copyright (c) 2022, SUSE. */ =20 +#include #include #include #include "bpf_tcp_helpers.h" @@ -13,6 +14,7 @@ struct mptcp_storage { __u32 invoked; __u32 is_mptcp; __u32 token; + char ca_name[TCP_CA_NAME_MAX]; }; =20 struct { @@ -51,6 +53,7 @@ int _sockops(struct bpf_sock_ops *ctx) return 1; =20 storage->token =3D 0; + bzero(storage->ca_name, TCP_CA_NAME_MAX); } else { msk =3D bpf_skc_to_mptcp_sock(sk); if (!msk) @@ -62,6 +65,7 @@ int _sockops(struct bpf_sock_ops *ctx) return 1; =20 storage->token =3D msk->token; + memcpy(storage->ca_name, msk->ca_name, TCP_CA_NAME_MAX); } storage->invoked++; storage->is_mptcp =3D is_mptcp; --=20 2.34.1 From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp148933pis; Tue, 17 May 2022 23:12:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzsfzMuuNv0AXLRYWoEm3gxB44Dee+QeQWqtbV+cENNbjHhd+5Rc+YLTtpNXj/0dy/3HNaa X-Received: by 2002:a17:90b:1494:b0:1df:8252:d914 with SMTP id js20-20020a17090b149400b001df8252d914mr7957412pjb.211.1652854339759; Tue, 17 May 2022 23:12:19 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id 202-20020a6303d3000000b003db698a3102si1277736pgd.576.2022.05.17.23.12.19 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 May 2022 23:12:19 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5360-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=NjrlOH3W; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5360-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-5360-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 8EFD5280A75 for ; Wed, 18 May 2022 06:12:19 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 884AF1852; Wed, 18 May 2022 06:12:17 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 E57CD1853 for ; Wed, 18 May 2022 06:12:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652854334; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8bplI9rX0E7VQWmxEeoit1jc5FHz4R0qMqAETsk7/VM=; b=NjrlOH3W6vSjyynV78N2DYweQ8YbQOLVAhqmRit4TaOp4+PqGGT0BBx7olMyI5ncFvbSnk 6pAxbigmZXL06hRzxbSsuFi/4rN+DSJG74KJshX/SmL6WFad+eD6quOXkNZLVhg7AZ+mj9 Aut3kU6Punaqa2xOq3IrFIgQzujd2Fg= Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03lp2175.outbound.protection.outlook.com [104.47.51.175]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-27-Q2XCGPbOPMSJEFWUnAIkWg-1; Wed, 18 May 2022 08:12:13 +0200 X-MC-Unique: Q2XCGPbOPMSJEFWUnAIkWg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Bplf09uc7R4kIoNV7nXMsERf7qzN7RiBJGGNWG5HEnZiSwub8KaHistw/ybfJqPBEC4ZESZ1GsLO7WGaT+uyViVYPeBDgdnDQTxmKYHWSsm4a7YuJ15UQBVNiuP7KXDNagYSl1A9xfyn6z8ZzCL9VHdgmCvec4KzjsJ5+xa8HS4lX/IhniFMCdq8A+wifwmjdnlAEnyyxoNMBSuZw2YTBrEX58XZZD3qk5RtAj/Nff4zuCl0GzxQvSHCV/qERUOnvKLxBTTUbWzNPl+9TUq9bjhjxu3ubjixj0tP2613mP5lI8F7i+pvVbSCJpWkYbxyqhf37ASVDF0Mf+8ONEy5/A== 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=kldL7lnlLvgd3DBSbMJOQiL5fToXVqL9yekeasqx0t0=; b=UL6P6Z3BZ3RU/IhFZqTtE23Dr64cvHkRrZnAXV2iyzwOJDs4THUHyOE6xu7E3BpYWwV4LtNo7KXIYRL4iFnZK5aYcFHlSDmT6aXNaMMYSzowDNjI07P8YJQ3tmNhI06ng1R6uvdRprAeRRY9vKwAYvxV7QSvzNvoLOjuNFsOycNFqKp/v6fEFY2WK74Vl+YRYfNzJVPgRT7ajLx/QSunc5ahB9wuD+pHxYiKNmc9B83vI+nqr8WuUgHH0ilG72UsdOxxRkI/PNYR+cfKUQ5M7fbwKw3pBe8JbM/9mvWQqG4T1t2wnXhtzr5LEAtXw3+TDUVaUG2urDQuPEs50x5bpQ== 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 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 DB6PR0401MB2584.eurprd04.prod.outlook.com (2603:10a6:4:38::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18; Wed, 18 May 2022 06:12:12 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Wed, 18 May 2022 06:12:11 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Mat Martineau , Matthieu Baerts Subject: [PATCH mptcp-next 10/17] selftests/bpf: verify first of struct mptcp_sock Date: Wed, 18 May 2022 14:10:48 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HKAPR04CA0001.apcprd04.prod.outlook.com (2603:1096:203:d0::11) 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: 11b8c2ab-b08d-40ec-40d3-08da389558a3 X-MS-TrafficTypeDiagnostic: DB6PR0401MB2584: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: JxlZipDycmeJdpfa53QedWlYVnM2quWxIhajzkg9jgmAZIEFLuEBEGJJNe1Xx+/vn8gYoo5c4ejTtaKLYGy0DLu2AFnJX2n/9gb6H6ji4SIu+50gkWT9kIoeUTye7GM7AVZZkwPZXUZ3kilef5lbnwdEEFvdyCcqrJ5oGGxH3sSJBdgJLr1A/EcTyeXYZHMJB+ugOiAv0Uzcmke0ivgx8qlQNWgRDbptUFrPXc8fRJ+847+hQNXqgJZgfpYN05nu1o/jFeCnEFw4jgsNLfq4npcHySWrim8+vhLDzrA+X+mYx1Z0R/HfOt3yX0ih14GI7Tx1YFrD0JTHqB5kPMbmytQbbx36Cv0deZJasxD4J19rDZYJU1TFZUS+r6jhWDcYZ1BdAXQOqqjIuIMnaXAes3neyp1YpNxIcAU9Xeq83rHQKfhDIHMMwQWYnzQag9VIuo3YdADLA9B4pob5PsdMse8Z3f5oZE7AiJd9XOd3OoU3G7zQ27L6bQKp0NYrPnHBBUo5wNC9jA4VlpFJFEtDmB2TvY02p6WzfWwU/odnwzkKGNrkHo0HsKQWAN7BFyXOgvJ7IwywTo5n1JA00dwZp31R5x0M+5q7z9rR5U3OwR0y1wQgie4yDvyIhHQM6/gF1PCaGHA5QTpWx7H51i8zSdQBIjGlzcRwb6y/MrTzIRT7DDDpHILd+PrebxBrQWreTHKE8uGUqCQQ9fxQt9/C2g== 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:(13230001)(366004)(316002)(66476007)(36756003)(44832011)(2906002)(8676002)(4326008)(6666004)(38100700002)(86362001)(2616005)(5660300002)(6486002)(66946007)(83380400001)(186003)(6506007)(6916009)(54906003)(6512007)(15650500001)(508600001)(8936002)(66556008)(26005)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GeiOz6YwIyzqbJ8vC+kX3zZfPwy5NT2AQ7wFZ2SX3SCgn0a/YVSQEnBxfp6g?= =?us-ascii?Q?3VTRc9iBJd6AatKreoaj5ThDOjGXj0nq2L3dhRQzB+xU6s6avyEeqTL5lCgw?= =?us-ascii?Q?YSCv5uEIhPYZd8yHv6HXQc4uQydPluGxvlJ8GqOYuAzqwTuSrXhIpuQH+3lW?= =?us-ascii?Q?1AUAR7BRd7mxeIRZa8+YB8AwGXJ+psh5nYhSMM7I8KwPRG9+Du/ewK4fNBAU?= =?us-ascii?Q?cPX/5W1si/xP7IvjSWKxB7huvCH1GCfZuGVD3svAEXQgLq3kHd+5nYLnyajw?= =?us-ascii?Q?t27TOBtyS0Ftf/Wlzlv3vYVsfF36L6raQ4/KZpwshzCOzqqdGCWNsX3lc1GK?= =?us-ascii?Q?XLrcBE4xuEMQMORsQvJw2buEhfrvK7shShaJWJDvgEQGak01yXKVtl1zb/8d?= =?us-ascii?Q?mMIrftmZQ1N3+SPCu7mPXrkkS63L/LqXDFtDVzCdb+X3ySWckHUum2SqpfEh?= =?us-ascii?Q?JrZ0p6oQ9WR2SJ6M5LHG9ZTl7TwC4O9upDKSfCZ7x6+88aLufRV2nyeIYN+7?= =?us-ascii?Q?r2QF0agdAkN7gLASlbtTNa+6mGWqX2x0SjRJg1epQNvWZ2rNvUM2P5Xko9gR?= =?us-ascii?Q?5eKXiQ52geodbZNoUYJKERDmQ3Bd3WRcMAbowtQxirrciz5gseDHyou/Hhuc?= =?us-ascii?Q?MYhXfAdasGidwUKo5o8Wk0rZgrvzM4CvLPu2GILAqqwZGRQlLh98+luW9vAX?= =?us-ascii?Q?gu7NfL7+kTkcVx7TgaDkQpsFkVjbkxj0/WT7sm6kB7RSmMU6AHiUCPgCl69h?= =?us-ascii?Q?BgaaG0BdCuL6cQmtnJs2lknuX/8S8rTrKK57ieWfxwL6C964RWefNeM5kWv7?= =?us-ascii?Q?DQfxIXlYMcAVUc5jgGikBuTb2lTGYzWI9+2pRasc2sAIIPH8aNHCRin1fh59?= =?us-ascii?Q?R09v0OpHcAZxh8H/Kg9AioFI5dy5P2k714DEqH/9glcUWf84jLr+LcoIGuRX?= =?us-ascii?Q?usuFuOIrVN2ovmBmda7O9mDkx6TEdzbikO+itqj6I8InxjLgPsZZH3xLC4MH?= =?us-ascii?Q?rJYQ+uEQuyimxHEgs7XWQrqJQWg9iCFlqqL6X6bSSJJycAnVLqidhzlfnDJK?= =?us-ascii?Q?6LYVm8imndt+ZgOratV1thg4nXR6oMh7nOex1q8v4y9wJnmdEzd5NuDBPG5y?= =?us-ascii?Q?HPMDwI1ROdSsOPqfvgzF9A+yBMAENzWDuDY6ZlgS/QRntj7Xp2qlpBWvmkM7?= =?us-ascii?Q?OBahsxAIn5Enu9yH9x+v8IChTfUQS9wTgrvPWcWoJxB71WkPPCetyEWTNa83?= =?us-ascii?Q?CZNT3llJuRsrGgSb0tHOnxr9+Gq28AsxlaKeA6JT3KVc/35Aj8/xpewggOiH?= =?us-ascii?Q?c/LHffsMB2tpqk6S7sI7XEDEJ1wv/80V2SjlLyKRSQcuPtgxbYHGcQEpTKf7?= =?us-ascii?Q?/ro2UuM0GNTagTbCw6T4H4IkSANEDUqe8EIQWPEGiEXao63wmh4hwA0oCB8U?= =?us-ascii?Q?7xXTGAr97ounzb2ZytB7BBnGmjrZyG2433EDp0CrJfGJW/Ce3pyQhYWZy4+o?= =?us-ascii?Q?x/YCm32ZiQO75rDQmGnSj76qvjs5pdKM6wJaFCXIrgjjvi3asRTdihXzOtw7?= =?us-ascii?Q?nlQCI57cbvJXp4BQvzz5uJhLPuDm4vwgN0IVVF1mgIY9DcPbL1hJu+L3DMYJ?= =?us-ascii?Q?UCETI5odza1VCi4wWjo4boMEDvtQ/C01wE8q7kraKxFwhss5HvhVnMWwRFzg?= =?us-ascii?Q?FDX339oRMWbYTC7yxIDDRB85APj8TPzetntFczI6tVpEyj6a0amxbDRa7fZT?= =?us-ascii?Q?i9GVHKsT/AyRJXPXrt9rf78ToesABig=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 11b8c2ab-b08d-40ec-40d3-08da389558a3 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2022 06:12:11.7847 (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: 4OkWEJcWc3CsBQW8LHm6xPbl3RJ964LDq+6QUgydxLxuBQIp1+2TkqtyfS1LvIBKoFwwl9SpTgfKJHEm0v3xkA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0401MB2584 Content-Type: text/plain; charset="utf-8" This patch verifies the 'first' struct member of struct mptcp_sock, which points to the first subflow of msk. Save 'sk' in mptcp_storage, and verify it with 'first' in verify_msk(). v5: - Use ASSERT_EQ. Acked-by: Mat Martineau Acked-by: Matthieu Baerts Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 1 + tools/testing/selftests/bpf/prog_tests/mptcp.c | 5 +++++ tools/testing/selftests/bpf/progs/mptcp_sock.c | 5 +++++ 3 files changed, 11 insertions(+) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index c38c66d5c1e6..82a7c9de95f9 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -234,6 +234,7 @@ struct mptcp_sock { struct inet_connection_sock sk; =20 __u32 token; + struct sock *first; char ca_name[TCP_CA_NAME_MAX]; } __attribute__((preserve_access_index)); =20 diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 17ad1cb07339..257a8668ad40 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -14,7 +14,9 @@ struct mptcp_storage { __u32 invoked; __u32 is_mptcp; + struct sock *sk; __u32 token; + struct sock *first; char ca_name[TCP_CA_NAME_MAX]; }; =20 @@ -80,6 +82,9 @@ static int verify_msk(int map_fd, int client_fd, __u32 to= ken) if (!ASSERT_EQ(val.token, token, "unexpected token")) err++; =20 + if (!ASSERT_EQ(val.first, val.sk, "unexpected first")) + err++; + if (!ASSERT_STRNEQ(val.ca_name, ca_name, TCP_CA_NAME_MAX, "unexpected ca_= name")) err++; =20 diff --git a/tools/testing/selftests/bpf/progs/mptcp_sock.c b/tools/testing= /selftests/bpf/progs/mptcp_sock.c index 6a78e7b754a8..f638cb876424 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_sock.c +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -13,7 +13,9 @@ __u32 token =3D 0; struct mptcp_storage { __u32 invoked; __u32 is_mptcp; + struct sock *sk; __u32 token; + struct sock *first; char ca_name[TCP_CA_NAME_MAX]; }; =20 @@ -54,6 +56,7 @@ int _sockops(struct bpf_sock_ops *ctx) =20 storage->token =3D 0; bzero(storage->ca_name, TCP_CA_NAME_MAX); + storage->first =3D NULL; } else { msk =3D bpf_skc_to_mptcp_sock(sk); if (!msk) @@ -66,9 +69,11 @@ int _sockops(struct bpf_sock_ops *ctx) =20 storage->token =3D msk->token; memcpy(storage->ca_name, msk->ca_name, TCP_CA_NAME_MAX); + storage->first =3D msk->first; } storage->invoked++; storage->is_mptcp =3D is_mptcp; + storage->sk =3D (struct sock *)sk; =20 return 1; } --=20 2.34.1 From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp148973pis; Tue, 17 May 2022 23:12:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwuTzM1IT1jMZLGO1fv+YhVGcbFwDkcRoz3v2NSb1K5Q41Clv9V4T7pHPPvPywaEF6JI+Ch X-Received: by 2002:a05:6a00:170a:b0:50d:3e40:9e0 with SMTP id h10-20020a056a00170a00b0050d3e4009e0mr26077955pfc.48.1652854346721; Tue, 17 May 2022 23:12:26 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id h32-20020a635760000000b003816043ef0dsi1418857pgm.258.2022.05.17.23.12.26 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 May 2022 23:12:26 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5361-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=LZbquY+Q; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5361-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5361-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id E9469280A82 for ; Wed, 18 May 2022 06:12:25 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CDF261853; Wed, 18 May 2022 06:12:24 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 3DC0E1852 for ; Wed, 18 May 2022 06:12:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652854341; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JiX0Rf8qWd0zsnoDCu+BohE+iN5sssnVFrfCrvp3vPc=; b=LZbquY+QffTqJf1b+zRCRtEY1ety7pTA62gnl2jif4hFqgQxJd4KYzzFpZR08ZMpPK7JjO +WovmhZrm2wisMyXHE0Eg+uMFKbTKrqRqfxUj/mdWzlOvHO95hnHYpetkReJ1pD0bnkDGL cgbazPfQPMn2QNejcVhBQAM+ouv3f4Q= Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2055.outbound.protection.outlook.com [104.47.12.55]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-39-b_VS1no3NsGySFYBs7_gxA-1; Wed, 18 May 2022 08:12:20 +0200 X-MC-Unique: b_VS1no3NsGySFYBs7_gxA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XUHSBWpgGfkDUlTgQnK4+0eU26TyEgjqECYNmHNaXQx4x1iSFVRxlh7diTiF1jqQbSMXBbz2R+kfyOpEezgKWLankHGFxfHrcU0pzL9b58vw5w0Onh5Q490BRUARqwmChdchEyAw98B8TEbQBY+eNrmCtr5azMQq+nYCphvXhnbzVSMLIiGXtJMxJwK9quh9bjaJseofOFGYQdhaXmpCDe/X4jkbrjerRC++dLL9AWK9BKeYhguusX0/6dOItOuCKtEjJ39UJyz4t3MTrxsoalhlDNkOBdwGPRO4OY53LmfrAPmGlKiiICEia/U6n8whCT9cSsqnR9xwlJgTprP3Lg== 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=vWiTaRAE42MtSaI1EcvXMrNnQr1umgmN9nwFYJP9Be4=; b=QVY/w097BloKt+NQLytvd7REDtO7MSp07/fcJTc71XrkR3rwpDDfA3OuYp8SKw7QxYnNzjqyFDwDEyeoiS0V+XJkHtYyqCmyswT+ISQ+84LPB+nheBtWGDuRK+VGNm20c1IVxPy794uf1D6+GM+7bz7W0cxIn4n7CUpeItCmKwYPpty9eb35PQk+gJIyZNkJWel5OP7TOvsw2/vB65MnnhXPz0zMj7LEN9pgux+7DBY1hYJRsnN14PivRXrvpOp+LSBSFTgzr20kvl7+KqB78VPtYsyg+AvksckujdX/7unro133gBUJ3U1coDOA2NrBnj5dD23sj/jdohrtOUTx9A== 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 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 DB6PR0401MB2584.eurprd04.prod.outlook.com (2603:10a6:4:38::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18; Wed, 18 May 2022 06:12:19 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Wed, 18 May 2022 06:12:19 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Paolo Abeni , Mat Martineau Subject: [PATCH mptcp-next 11/17] mptcp: add struct mptcp_sched_ops Date: Wed, 18 May 2022 14:10:49 +0800 Message-ID: <2c1ab076061c9463ccb922af66fabd7ed6843ed1.1652853898.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HKAPR04CA0006.apcprd04.prod.outlook.com (2603:1096:203:d0::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: 3a432fec-0e41-4466-cdbd-08da38955d16 X-MS-TrafficTypeDiagnostic: DB6PR0401MB2584: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: l1qvptIzgvJFfk8/ZeTlW7U4QZyZcbCgeK8/LJguNRE3CIoCMQJXOvBNHbv3PHAI7xvxdNY1nq0ZaxrJUZahYzk77SiWkfPn2YzrB3Vg6aCILMIV/yN4LInfO84CywXCZhZgAfLuIADAiMblVGuu5p1HcBPmKccrAcRxQrhO481A4yptugzpZ/2juN6HXZzAz6Hr0Ekmojx5koBthdCF36VFVjKBIgeYBBBXzj4rsHzTblCNEyf66LVuZzn8WIUJKzzubH96kuESO1+x3xxR7goDUoIJ5Zev0kjYVls0Jt0blnum3Inqn+PrvwBiU/E1btwQkr/pALaek6uX5nQBheuartz34MNajtEOzIszpwA2akiaJrRWldQZcaqdrD8uSKE8cJ6PJeJY96Gx5ZB6oEceoPzRnniRqW26AexK1ex4qGjYr/zNW0ZpCnta8O04ZpofJqvNE8U1ZtYlCEiM/i/iGhnLXePlfS/tOJ4/CRpb/4BkFjbXTeZMSsXUrXpf1J8EURfCE+rfX61sz4tpXp6xNoCJORTTs5OtUUiK17FOjJy9FlNi1qGkG/wQjAZ5L0k+qOVOoZLdjZzn4+2K/Jx9pTslz6yPTfGofdKMq+axPrml1OXHkF01E65muwDMVePls83Iml7BYF7HK511Q/qKHoDINj5LoQu9cAbLHnd/3glhMWKWKANsSevyyQW05/smpAe99Tu8aeI9ClsDEg== 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:(13230001)(366004)(316002)(66476007)(36756003)(44832011)(2906002)(8676002)(4326008)(6666004)(38100700002)(86362001)(2616005)(5660300002)(6486002)(66946007)(83380400001)(186003)(6506007)(6916009)(54906003)(6512007)(508600001)(8936002)(66556008)(26005)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?zWm6d/ie8d38+t/OHfDxptgXFANLpPlUN4pkgzMe54Lw+2PVWs7uOAZdOgzg?= =?us-ascii?Q?1NolAJzvjbGQZTs2NPHC2fnscvxXsoIDKFIwbUyHPVLjZT+21TzJ+VuJvi9V?= =?us-ascii?Q?4nDvVWt8tjrOzwRHaLdK0oXoc0y5oa4WH80FwMPxgxOPdKzCFqZ9yzm+nsp8?= =?us-ascii?Q?BBfUqppJ5RP94MigtNz5TMmgrKz+IxwzvQYVUnmS9IyS0wucEexyLrxyfaQ5?= =?us-ascii?Q?6pKJg9ZedUDVpLpkoiWY1tBCCTG9HV0WXV2miggH13jwu+JVcukmT36dlf5t?= =?us-ascii?Q?XK7nJyK+9caD1+E/Xl5GFJSMd/Z2FBslzYyhDd5ta3EvAccaLc6EIx1NzlN6?= =?us-ascii?Q?zcydplBfyoxFnY+eVXM2ApKIv27Wx6kDdv4BL5JWKmWhU3p4WuGDWX26X01K?= =?us-ascii?Q?eU5QEmO5xNZbm2fBhaPBKtM3IKbtyMtlDZc2vPTzzYxxWzTNFIkUh5vMrOBC?= =?us-ascii?Q?/tY8PWvN7e7h+tbixLsDU/xRMqSn/opU9UmmmnlK6InlokTuPxu5lYbCHrE+?= =?us-ascii?Q?Uo+3bAKgXFeGHmmaKcTGIULD8gVFQfx2VCR9pHl8MzjNqZCN+IlcVuY3mgrV?= =?us-ascii?Q?95FKtXuuOjVl9ahmSq3R6hyajQnNtxA4B8mXAV+0jMPDZOQ769SvYBCDEwM/?= =?us-ascii?Q?ZB9dFs+rM8xKo3Hhd7pN43yVy6SBqcizLN482Tx9Jm7fREwM4wQjTn+o+lON?= =?us-ascii?Q?oXvyNLAp/UG7KzTnS9vnhCFrP5NwuDLbQxqORmsM72nHRGitdvxHIInyKOW5?= =?us-ascii?Q?P9CUAyHMUKm6CMgQtflVRudbDQf4OBpQB0ZFmea6HEtFVb9/gbTtmVcqumFh?= =?us-ascii?Q?hMIG47zZbD79Bd94yZ7aJ6v5NivvVoKvBHPcOKY83m111o+QPiu9cuvUXfnh?= =?us-ascii?Q?wzmqgWm7TDDyhCNeBoBfoiQ8ibZPKYSyEvSKMP/eCYETVNf2RYSGb48jNx/O?= =?us-ascii?Q?3aJ3hwBZz0DrSNq4ZLEKnefvFT0UIRnVhLFo4JDxd5XRZUj/Iu8isgSR5WXP?= =?us-ascii?Q?AZ7hyPonaQC229DQeDcJsrxJ9fbV390x9DRQP0mrICYN/2CasInlXc0aWMjb?= =?us-ascii?Q?bTAmFGkmzgoXUsPq+SY6trpr8TeVODXSOCHTzCGneuR+iozAAmyuhziz7xiI?= =?us-ascii?Q?IZhbJIowqY2zLLeg25Q1R4YPzGWli/AqF8SYa7/L9tiFReTlxrI5IfK80fPY?= =?us-ascii?Q?lAorNGx4c2pvK4d0N920BY54rOc3qQtPt5tJ2S3i8sr/hckmQ7pVCOjHdU1k?= =?us-ascii?Q?LaWen2RUkLsOE4qMFvB79YzT7KeClWW1/iduyqIcQLf1Qy5roBL6YxPzQFfe?= =?us-ascii?Q?t9zKV+0q1djc4sCjWGgEn2WUjRmdDGkj7o6h/EN+7ulHTukp4pljlGfCEV81?= =?us-ascii?Q?LnUmSwV+U7PXriG37Apeam7XT7kN6wGz8XbXlO3+Wo5tCQ+UcLqfNRSug0Y5?= =?us-ascii?Q?AuNgV869ckJpj3jPQ2TGfVgVGXdV49B+kZJ8t4YX+1vIE4tUf1DuOtJuASlH?= =?us-ascii?Q?TVQnnnmISDlxxEq5nbf7HjYNvkztXK2j2YJrJtffF0j4dRdinhDEhJl0VSPK?= =?us-ascii?Q?ol0E/DgM8bdDflJLGMu1B3yAeTZHdi6wZBytxFzdWJVG7WWEM9kDEXMDXIAO?= =?us-ascii?Q?nje0shT8HyLbtI208IE4uAjzbg1LrTC1ubXFNxUxiXy0eQmElu2giznA+yH7?= =?us-ascii?Q?ZyVrxrfFFk4XbmtGzQg6m+nupDtn65t1RNubekso9tnvnM6bGJFivZywWLkL?= =?us-ascii?Q?1bH2WNIvxUeL5QNac4hAc0HEgtG1vYk=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3a432fec-0e41-4466-cdbd-08da38955d16 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2022 06:12:19.2841 (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: uq0pNDoRZUVtp58yHs1A4H69uJoJ5poes1V7b7ycgjfYY1oOZgAOBilDl4Tknpk8SMqknQXfanEbs4sBz0LHuw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0401MB2584 Content-Type: text/plain; charset="utf-8" This patch defines struct mptcp_sched_ops, which has three struct members, name, owner and list, and three function pointers, init, release and get_subflow. Add the scheduler registering, unregistering and finding functions to add, delete and find a packet scheduler on the global list mptcp_sched_list. For supporting a "redundant" packet scheduler in the future, this patch adds a flag in struct mptcp_sched_data named call_again to indicate that get_subflow() function needs to be called again. Acked-by: Paolo Abeni Reviewed-by: Mat Martineau Signed-off-by: Geliang Tang --- include/net/mptcp.h | 19 +++++++ net/mptcp/Makefile | 2 +- net/mptcp/protocol.h | 3 + net/mptcp/sched.c | 56 +++++++++++++++++++ tools/testing/selftests/bpf/bpf_tcp_helpers.h | 18 ++++++ 5 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 net/mptcp/sched.c diff --git a/include/net/mptcp.h b/include/net/mptcp.h index a267cff36197..6e872d0a35af 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -176,6 +176,25 @@ struct mptcp_out_options { #endif }; =20 +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_data { + struct sock *sock; + bool call_again; +}; + +struct mptcp_sched_ops { + void (*get_subflow)(const struct mptcp_sock *msk, bool reinject, + struct mptcp_sched_data *data); + + char name[MPTCP_SCHED_NAME_MAX]; + struct module *owner; + struct list_head list; + + void (*init)(const struct mptcp_sock *msk); + void (*release)(const struct mptcp_sock *msk); +} ____cacheline_aligned_in_smp; + #ifdef CONFIG_MPTCP extern struct request_sock_ops mptcp_subflow_request_sock_ops; =20 diff --git a/net/mptcp/Makefile b/net/mptcp/Makefile index cb7f53f6ab22..b68eddf4639a 100644 --- a/net/mptcp/Makefile +++ b/net/mptcp/Makefile @@ -2,7 +2,7 @@ obj-$(CONFIG_MPTCP) +=3D mptcp.o =20 mptcp-y :=3D protocol.o subflow.o options.o token.o crypto.o ctrl.o pm.o d= iag.o \ - mib.o pm_netlink.o sockopt.o pm_userspace.o + mib.o pm_netlink.o sockopt.o pm_userspace.o sched.o =20 obj-$(CONFIG_SYN_COOKIES) +=3D syncookies.o obj-$(CONFIG_INET_MPTCP_DIAG) +=3D mptcp_diag.o diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 2fc8aaf5cb05..86efc5a6d878 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -527,6 +527,9 @@ int mptcp_subflow_create_socket(struct sock *sk, struct= socket **new_sock); void mptcp_info2sockaddr(const struct mptcp_addr_info *info, struct sockaddr_storage *addr, unsigned short family); +struct mptcp_sched_ops *mptcp_sched_find(const char *name); +int mptcp_register_scheduler(struct mptcp_sched_ops *sched); +void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched); =20 static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c new file mode 100644 index 000000000000..c5d3bbafba71 --- /dev/null +++ b/net/mptcp/sched.c @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Multipath TCP + * + * Copyright (c) 2022, SUSE. + */ + +#define pr_fmt(fmt) "MPTCP: " fmt + +#include +#include +#include +#include +#include +#include "protocol.h" + +static DEFINE_SPINLOCK(mptcp_sched_list_lock); +static LIST_HEAD(mptcp_sched_list); + +/* Must be called with rcu read lock held */ +struct mptcp_sched_ops *mptcp_sched_find(const char *name) +{ + struct mptcp_sched_ops *sched, *ret =3D NULL; + + list_for_each_entry_rcu(sched, &mptcp_sched_list, list) { + if (!strcmp(sched->name, name)) { + ret =3D sched; + break; + } + } + + return ret; +} + +int mptcp_register_scheduler(struct mptcp_sched_ops *sched) +{ + if (!sched->get_subflow) + return -EINVAL; + + spin_lock(&mptcp_sched_list_lock); + if (mptcp_sched_find(sched->name)) { + spin_unlock(&mptcp_sched_list_lock); + return -EEXIST; + } + list_add_tail_rcu(&sched->list, &mptcp_sched_list); + spin_unlock(&mptcp_sched_list_lock); + + pr_debug("%s registered", sched->name); + return 0; +} + +void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched) +{ + spin_lock(&mptcp_sched_list_lock); + list_del_rcu(&sched->list); + spin_unlock(&mptcp_sched_list_lock); +} diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index 82a7c9de95f9..bca318d2cc78 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -230,6 +230,24 @@ static __always_inline bool tcp_cc_eq(const char *a, c= onst char *b) extern __u32 tcp_slow_start(struct tcp_sock *tp, __u32 acked) __ksym; extern void tcp_cong_avoid_ai(struct tcp_sock *tp, __u32 w, __u32 acked) _= _ksym; =20 +#define MPTCP_SCHED_NAME_MAX 16 + +struct mptcp_sched_data { + struct sock *sock; + bool call_again; +}; + +struct mptcp_sched_ops { + char name[MPTCP_SCHED_NAME_MAX]; + + void (*init)(const struct mptcp_sock *msk); + void (*release)(const struct mptcp_sock *msk); + + void (*get_subflow)(const struct mptcp_sock *msk, bool reinject, + struct mptcp_sched_data *data); + void *owner; +}; + struct mptcp_sock { struct inet_connection_sock sk; =20 --=20 2.34.1 From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp149015pis; Tue, 17 May 2022 23:12:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx0jdckVXUIlNHQPVZ+VSJWuKVS7CG0jVl1JL/w3YriOkhAdMTyTNEfG+nDTM9hc0ollrrV X-Received: by 2002:a50:c01c:0:b0:428:91cf:a90d with SMTP id r28-20020a50c01c000000b0042891cfa90dmr23078204edb.42.1652854356454; Tue, 17 May 2022 23:12:36 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id r6-20020aa7d146000000b0042ac59b7688si1294673edo.403.2022.05.17.23.12.36 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 May 2022 23:12:36 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5362-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=mimecast20200619 header.b=fh4mVwWp; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5362-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5362-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 3B4772E09EB for ; Wed, 18 May 2022 06:12:34 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D1C231853; Wed, 18 May 2022 06:12:32 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (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 61CF61852 for ; Wed, 18 May 2022 06:12:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652854349; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OmF9FD2C4ehWhKMe7JQAAc7Dcesv4cn7vpvKdsTPQAs=; b=fh4mVwWph/MiSzd85ljs1sYmAU2Zn1tPpL4PaWSacMpI4A6Z725L9Wb+fv4CUZpgIqhxti NRrUMnNri0B1QZLrsKXp/9IAJmrTwjcO3yuQO+WLYJjVz2dUBWxhUhn4hzlTAJcmgy+6FD FofMjoXSXSeET2kqUQNd4fFHsVbHz3s= Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2056.outbound.protection.outlook.com [104.47.12.56]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-32-eERDliXoPVe6Q_YJelUJKw-1; Wed, 18 May 2022 08:12:27 +0200 X-MC-Unique: eERDliXoPVe6Q_YJelUJKw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QC2BKjh+2CToUEn6Ou7D0RX0Ws8P6x40SFx4Dba8zXlFNEPxpiqxgCXXYyDEoMNyD/DdTjjM8kxk+DCSoadLX5l0wk4u3UGb+B7pcSGbVmM08JZ/fJKDm008b1ugmZs9IUaOYySVFxZmiUXMvDw3YpuJC3X5juO0fTMw2MEYsxJKcnuZEOPrbKYtfMkltD7J+gD5/1Ci/2UQyck4ouKsgMPpTziR2O/YGro5kM2EX3asUT+rs3j51If7x0Mzf/ISNTlsxPNf/JrXsXRw1vVFi+LmLMp8xYLiOnrOUis6UGpq+4MTgX3ZYNLYLBhCxDH7EJraXyaw44qmMJSbQ7PqIg== 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=09nT5rbL6CpHpKwJG0YoGAH0EMQUe75sTEmtwXuqlKU=; b=EY5J4NckwjXTynE5bC6lK1NYIUnaBCnIr0B+P1ldnGeXp/at3xHiW8/GW873VAuFJPqhqQNgvnPWwx9wGnfvC7CVWRps5ZrbXKTMfoixnXlsu7Wzi42B4HVNvJoYb+zLRixAxSZiIntvoAyf8JHSibcWwMyTGMJkFgkHXsLUILkbvPML0mDFJbQraR7+O9Qa1lfpkAQQ9h2fbfbccQ4K1pbAs/AVqWYpkJqJ5xycwtCFv+ZNNTJT7s4IC5IhkboXPCX9FmkW+fgvU6kgxy4+QzEFi4OQrZ+zZGUjj7l7MxXqM/SIdWyQpaozIqlQourIy8+q+Kh4UISf+cMhIetxIg== 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 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 DB6PR0401MB2584.eurprd04.prod.outlook.com (2603:10a6:4:38::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18; Wed, 18 May 2022 06:12:26 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Wed, 18 May 2022 06:12:26 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Paolo Abeni , Mat Martineau Subject: [PATCH mptcp-next 12/17] mptcp: add a new sysctl scheduler Date: Wed, 18 May 2022 14:10:50 +0800 Message-ID: <57dc5f15520d771e71005ab213b95028daf4bd5c.1652853898.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HKAPR04CA0007.apcprd04.prod.outlook.com (2603:1096:203:d0::17) 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: d47a75be-d3a5-4c9e-9810-08da38956166 X-MS-TrafficTypeDiagnostic: DB6PR0401MB2584: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: pVjm+A9vWLTMu+efosvKXNctRgWemZ/XjV3Uymuc8niLnEZnXvJnWgqkfxtnvfqe0V49Tw1Po07o6mKW5tnBV1jgb5D4t9zTuCgwat5d+G2ByfBRUQNPG841sbBrgnOPOoacn5eRxo5XD+tscMXiHooOOGeO9mWVTv1PFIy906+f64qm2BozItVpANjKMD5+Mul712mzV+fUIyTWmhsZ2ADAzmef8RdEm7Ub6mxZKSB7shluCgR8iTJ0L0Lus6H+NnWVEBEGaWyaKHZibrljWtGuavhtwxvQaz48MM6+9ss/kUlqsWqrftNssB/drGEAuXcCzfVku+z9af5/k9srEdOxbmMHNHazKDkrf9rLyMxsw8mX6aZuW5o16Ml+AIFjG9M9sXvTMLLK4dpa/st2UAVw3Hdn0mUVqeeskhFvzvEMjug9kK+JqigYnRcqB2f5WsPUA/udXRGBiHkzgOQ6YAp6Syxv7ZhwAcEuMyVjaWqynuMOdTqOhlY+7uJTweorCjvVWsMwjrYjjxXqjYMFbadTOXK8CTJ9i5mI2yWhOwC2GK7hp/sGJ3LWZ0UqrCOzPcDokSR/WxB6ACYwLQ9+lkSHn9pW3ooDuUSdi2k3kiT0xAcTC5pu0Y8biJ384cg1eXS6pOKSj4E1vQdNwKzAqoL7rA1sTrOlWuxSdx7YK7Y06QMq0WVYiIkrwB8RjWJSlSs09jiMuigTgSj2CLDbhQ== 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:(13230001)(366004)(316002)(66476007)(36756003)(44832011)(2906002)(8676002)(4326008)(6666004)(38100700002)(86362001)(2616005)(5660300002)(6486002)(66946007)(186003)(6506007)(6916009)(54906003)(6512007)(508600001)(8936002)(66556008)(26005)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?X6fY/aqu0UtOLuJD+ZVdg7jIpgNF7+uDKUnmhY9KfdDXZVU+huZUeBVZ+xE/?= =?us-ascii?Q?t5drwB7WIzkeZeD/9JxAB3DjXirAbUTF28V2xc9P/tvotFXuUuGqMOElIeB3?= =?us-ascii?Q?x+1ojWf5vsOq5x0X98vb4Rw/TgxCE+35rUINIj6YJSaFJgs2Yj/2Dczq0q+x?= =?us-ascii?Q?nYQs9uOpNtthNCZisHJ9kpTyrycqUzX6PXSnjopH/5+ryV8Zwdtc4ujlspkd?= =?us-ascii?Q?9hakEPWI3KAZkphcE3YHvPbuHDHHZ5+6hMlJFU0tIebr1Dfw83Ohq3HN+CAK?= =?us-ascii?Q?Es1SZofuJv7O3rtDqhIj7rzy+hSaCQ0RleTJR3NfxvDmp3ohYAtSWbCF6IPm?= =?us-ascii?Q?jjYpzduak888GMN//1fs+DbB1sx6OwWscniQeFM9TrC5RsuavDnjWyfOAtTs?= =?us-ascii?Q?bRv2UUEKUeQM9rqzK1P6AJUkE/I28FI2jR+vIpPcIaGLabV2Xe6ExrctwBRo?= =?us-ascii?Q?TiyyJJFaZFO4pqIotRZMOMpudicvjRObXTVY52D/q+v2kFx+xIQZ02eldi6j?= =?us-ascii?Q?nRNJ6qDE0OEmxmBD2tUuiLpVF/c3rMxKPJFtaKBzdhuBjUSuLWjx00L34lBP?= =?us-ascii?Q?EoJKS+GYAJzrQyhbjO/Sdyz2DC49K2C2R8pYBMMMi+Rxs3i5VcYEy14qIJ5J?= =?us-ascii?Q?wUzJh5mi8IvVa1P+5PtdOOynjAE1ZWzDQEU9ke6DlWAkm+7XKIHEufeyTB0c?= =?us-ascii?Q?9EQ3taIW23WStbQsB8vGZV/JsQjmvX0gENrX+81ZDbiU3td0b8YEz5nN5tI/?= =?us-ascii?Q?2PzardBxGmlksu8NcN+7Nu9u6l3Ws88m3rMLgGCdj8YAJ3Jj6+mzxZQuOIHf?= =?us-ascii?Q?OZ8fRW2seIPe/9cIDCGeSVVsqsaPaD7WTFdwLFGeX0AzQS4eXcC7UYsOQsXF?= =?us-ascii?Q?6ieU85oCzkdMFb8WIQ6VAkFLG3oGbhLpkO65FGVkcxvAZyNQNGcOcjT7wx5M?= =?us-ascii?Q?zRm+zhnDMLlz5djzqRieIFa2TuzepTEBicSAzjukna1Z1lGfs2LFcYOhwKuw?= =?us-ascii?Q?fWN7GdC4xHF1KO8chcUSS3b7evCpQikb1L6Prfr8m6opt5tCPIzWpphdcBrX?= =?us-ascii?Q?KYiBXOGLph2krl0zsECFh41Q++YYDOkauezfr59B0iOzowrKRMLmr4fyfWh/?= =?us-ascii?Q?o00gOCvrkPjyLdD6XHHj3IkvhChTHLCWSoWmgEApvluEw6a3bl5G0ejk9avV?= =?us-ascii?Q?7P76EqwiW9n3WOgPmcKwGQ77Xfy+uq3LpELK5sw7l3IaZ5cThhKHUL3lVA9f?= =?us-ascii?Q?9uJpKmlIEuuDFFP2E2XSb0/aGw2KfJMSTjg+UzKGynadUSPYohQn5G35QGar?= =?us-ascii?Q?OndGS875BQeoDdc9OiNk4ePk5/QlvFxdFN52xPe9Nbs7bj6lYjA5R1MqYy11?= =?us-ascii?Q?OQvXfqA5Xdcq5w18H1DMJFOFQtTiJYkBtBUDI3jU/dOnBcybhi72EHB0VBVx?= =?us-ascii?Q?MebeRzQcQNq3nqAg+Nwjwd2r0EYq+b2PTxmHTf59+FVZ1BfCfdREZ8h2ykcF?= =?us-ascii?Q?LEtLvEzZVopsfZlPiNmfe6mjBNk6gPGcLXokXJYRlrcWTqnAdaBW4G+7b/9P?= =?us-ascii?Q?sPmmcFbuUSN0VbBK53sp/rFghn1Sr+ACH8Hycr9BqxMGPyvoNDT2ZFOsT2Uc?= =?us-ascii?Q?8D7SXiYJDBI+2SIXYELJatRWahA3Did2I36nurJlMpvbwVmqvcdSf8NausOH?= =?us-ascii?Q?GK0YaJt8iRLQd3+EFSZV1pd+ohabaEJlM+WW4zMSghv9GBxQ3eYH7PPj2aDB?= =?us-ascii?Q?UHzmWAKFCyPh67YvFGGYvgGYRXcUtz8=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: d47a75be-d3a5-4c9e-9810-08da38956166 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2022 06:12:26.4867 (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: DwBMqBWpGBeDaCRVdV+ceSZmISoBpN5MzDy5ubWcJlu6yyLRkbxoLyinYKMz0T/Oll8W6YO8zFaUomj/Y+Vm4w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0401MB2584 Content-Type: text/plain; charset="utf-8" This patch adds a new sysctl, named scheduler, to support for selection of different schedulers. Export mptcp_get_scheduler helper to get this sysctl. Acked-by: Paolo Abeni Reviewed-by: Mat Martineau Signed-off-by: Geliang Tang --- Documentation/networking/mptcp-sysctl.rst | 8 ++++++++ net/mptcp/ctrl.c | 14 ++++++++++++++ net/mptcp/protocol.h | 1 + 3 files changed, 23 insertions(+) diff --git a/Documentation/networking/mptcp-sysctl.rst b/Documentation/netw= orking/mptcp-sysctl.rst index e263dfcc4b40..d9e69fdc7ea3 100644 --- a/Documentation/networking/mptcp-sysctl.rst +++ b/Documentation/networking/mptcp-sysctl.rst @@ -75,3 +75,11 @@ stale_loss_cnt - INTEGER This is a per-namespace sysctl. =20 Default: 4 + +scheduler - STRING + Select the scheduler of your choice. + + Support for selection of different schedulers. This is a per-namespace + sysctl. + + Default: "default" diff --git a/net/mptcp/ctrl.c b/net/mptcp/ctrl.c index ae20b7d92e28..c46c22a84d23 100644 --- a/net/mptcp/ctrl.c +++ b/net/mptcp/ctrl.c @@ -32,6 +32,7 @@ struct mptcp_pernet { u8 checksum_enabled; u8 allow_join_initial_addr_port; u8 pm_type; + char scheduler[MPTCP_SCHED_NAME_MAX]; }; =20 static struct mptcp_pernet *mptcp_get_pernet(const struct net *net) @@ -69,6 +70,11 @@ int mptcp_get_pm_type(const struct net *net) return mptcp_get_pernet(net)->pm_type; } =20 +const char *mptcp_get_scheduler(const struct net *net) +{ + return mptcp_get_pernet(net)->scheduler; +} + static void mptcp_pernet_set_defaults(struct mptcp_pernet *pernet) { pernet->mptcp_enabled =3D 1; @@ -77,6 +83,7 @@ static void mptcp_pernet_set_defaults(struct mptcp_pernet= *pernet) pernet->allow_join_initial_addr_port =3D 1; pernet->stale_loss_cnt =3D 4; pernet->pm_type =3D MPTCP_PM_TYPE_KERNEL; + strcpy(pernet->scheduler, "default"); } =20 #ifdef CONFIG_SYSCTL @@ -128,6 +135,12 @@ static struct ctl_table mptcp_sysctl_table[] =3D { .extra1 =3D SYSCTL_ZERO, .extra2 =3D &mptcp_pm_type_max }, + { + .procname =3D "scheduler", + .maxlen =3D MPTCP_SCHED_NAME_MAX, + .mode =3D 0644, + .proc_handler =3D proc_dostring, + }, {} }; =20 @@ -149,6 +162,7 @@ static int mptcp_pernet_new_table(struct net *net, stru= ct mptcp_pernet *pernet) table[3].data =3D &pernet->allow_join_initial_addr_port; table[4].data =3D &pernet->stale_loss_cnt; table[5].data =3D &pernet->pm_type; + table[6].data =3D &pernet->scheduler; =20 hdr =3D register_net_sysctl(net, MPTCP_SYSCTL_PATH, table); if (!hdr) diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 86efc5a6d878..86a5ff5d3fc8 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -502,6 +502,7 @@ int mptcp_is_checksum_enabled(const struct net *net); int mptcp_allow_join_id0(const struct net *net); unsigned int mptcp_stale_loss_cnt(const struct net *net); int mptcp_get_pm_type(const struct net *net); +const char *mptcp_get_scheduler(const struct net *net); void mptcp_subflow_fully_established(struct mptcp_subflow_context *subflow, struct mptcp_options_received *mp_opt); bool __mptcp_retransmit_pending_data(struct sock *sk); --=20 2.34.1 From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp149045pis; Tue, 17 May 2022 23:12:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwVQUMKQ0dy5xSNNHRGaNxk8tCKCivjPDctwNhya9hP4xyl9ALmE/sIM91N69L/XWphf+fO X-Received: by 2002:a17:903:32c2:b0:15e:c1cc:2410 with SMTP id i2-20020a17090332c200b0015ec1cc2410mr26594819plr.127.1652854362917; Tue, 17 May 2022 23:12:42 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id g10-20020a056a001a0a00b004faac3a73f4si2428794pfv.17.2022.05.17.23.12.42 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 May 2022 23:12:42 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5363-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=JzjsNfB3; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5363-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-5363-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 4DC92280AAC for ; Wed, 18 May 2022 06:12:42 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 343FA1853; Wed, 18 May 2022 06:12:41 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (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 9E7F91852 for ; Wed, 18 May 2022 06:12:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652854357; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gCLsj40x25g3Ark2+g+oek91EfM6HtjnqWHZgh8Ethc=; b=JzjsNfB3h8hhf8dxQio5CGlQD8fXtP4lIfY6AuqONEmzCYSy2futbMdMZ5vvrygu7Owwn9 hDfczdLkQka78elYC2eK2/nr5SxwDoym3xryVITjxQDq8wwEMzneStb+FMJVj29wM+aBsu O0q6X4N8PRA475fKvm9F7CpQWdFtifI= Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2051.outbound.protection.outlook.com [104.47.12.51]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-10-en-p_6AIO3excRGCT_itSg-1; Wed, 18 May 2022 08:12:36 +0200 X-MC-Unique: en-p_6AIO3excRGCT_itSg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kOmsuBVaIKTSCwpaa9XTi63RB4MHmsT687hC3OOS+gJc0KLPaUK3q9/gbpEZ2SLMCUUIYpCfqZrc/tCGrTq2XldUNLUcGPFjbbgsYQiAt9+5p7AcrkLohjib8YP6duBbY4CYaRF77gFpyuUQAQ0kmwSJH0WofV2MXd5pTswBc1lRtO0z6A7YVLL+gr3EmVWk0U+QB5Q20wVa0jUDh53wpciiLbwQJkWPosLVPkMNcVMtBxjaPKMEHgsdQND5rx/FRgssEk5gj/y9PHCAF7F7vuI5uGDFqQ43PyHOSLYKCfKoGMK2tz85F8TLayAd5tr3od6vSxkvXZgY0MQrY0KH6Q== 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=Ka8CttP3Yvsn6gRKGFrDYl3jDV6fnSAIpIoXwGUrpfo=; b=MPnQo5CSkXLrsRp0mb6yLfG8BnYlVJq4dcIjvaA1qwmTmFtTDegT3ajMVrTFBR6bX8uEAABSN01rj+OKpH3I7ugDzZVSAU9wUxeVq2QuqQrTNOR/WgTpqOLwn/3kD4rp22KUyQo8YCgK64DCY+RmwHsawh8sWFGwHwI5NkxkdBpTKLZj3PaNcOGOICQgh9s4b+VN9W5CtoxwMxfNsEOEtsMX8Kn5GkevggHnIMprUoKPrM+lTpM8dMGNnB8TzE2Oe/pxNp1RJMP1Iu3p6c76awN22WxWOd7g7gFL4xFgaD2rlhMchi0oZ0ncbCFe653w1dIBtjdN7oCOS8vOgCPwOg== 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 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 DB6PR0401MB2584.eurprd04.prod.outlook.com (2603:10a6:4:38::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18; Wed, 18 May 2022 06:12:34 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Wed, 18 May 2022 06:12:34 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Paolo Abeni , Mat Martineau Subject: [PATCH mptcp-next 13/17] mptcp: add sched in mptcp_sock Date: Wed, 18 May 2022 14:10:51 +0800 Message-ID: <6dcb2e7ab064697f5bbc30eaa9969f23d3e81ba5.1652853898.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0128.apcprd02.prod.outlook.com (2603:1096:202:16::12) 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: f2203653-7f6a-4107-a5ec-08da3895665f X-MS-TrafficTypeDiagnostic: DB6PR0401MB2584: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: jeuajcLO1+UJtkIp1acWCWetuxTnemkPez6ZcVo6AwmEYaQhJiWP42VY4pcWOre1QMILGa+ZCQmiWZU90GCvvmHytWnFf0IcWsV6Uv4zClIwq9MCk2pk1JeHwo5DDb85EsADR/EQShXdsGKoGVTcCDhA4wZWWF/fdy5/Z05MbZLzzVxE8C0OetDTjD6ev/A1ZQ2Gx3oPnHyxsWe0xjdMZo7EvioqqAxRvzzq3heGmzp2wlY2glTl22sMGvz4gFMWuek7li5JvaLdgqS8n9G5MxzzmShXaE6tl9rx9AstKB/r9Pz/RKBQ9UBKuKb+lWi3XHr8rHsk/8k47ASQ7hBBKAmIrJwjvNthuQIWDHio2TeY/fxE5WVV83QhtlBqaza+b+dIrFwzqpioTkjJ3MCCB4dlFbYbZX5A3xhu+33uT2tjF8tS5trLjvhy1Ps669xampbCmlrctiJX//JJCNb5edz5KxnH7pcEt2aN3774MqFKi+bRhz3RZNfh7y1G3hHZvjdwLrnPv6SAV3WOqL12XYggvnpAl3lP+C4kw0bJ6oVsdRlwloJ0SBgldF5dardxQ+iKWKPk93opBhPwSDX/8byhBcJP1H+TsAwOw/B+7OMNPHBoFOFUN0ey+YBLgiHMA19+FNBYBtU6k5VgMxldWMwv1Uw0mMX3wxEdjhYxsxh7AmtCNRqVSrreA5FHgObkRK+ZjF2ByaYFq+AYTHcKBg== 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:(13230001)(366004)(316002)(66476007)(36756003)(44832011)(2906002)(8676002)(4326008)(6666004)(38100700002)(86362001)(2616005)(5660300002)(6486002)(66946007)(83380400001)(186003)(6506007)(6916009)(54906003)(6512007)(508600001)(8936002)(66556008)(26005)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5jkpLuGHtuULawe52mkr8KzM0sn3SzLSrvsqOoTkL0OyJLOQ4vvxqrn3uArz?= =?us-ascii?Q?ctNeoiGuy5W0YC3r/LMWkQ6PGiLgYBbNjzXaJK6Gp/Ikvi2pe6A1jz76ErCp?= =?us-ascii?Q?jFz4zZXq7W9JUHhLGJ8/1GQ48/2hZwb5YG17RXrkqxWQG/VdV8nCYHHffFwH?= =?us-ascii?Q?n0EGHm13OzEGm3yBG009dfOGflvPhg/aHkGGhsEfsSRw/dhWGpX1IUgZ/rhm?= =?us-ascii?Q?IkEc9C3DncauPuciz17UCrQVYzn378z+cZbtGCSjRlFCxrsG9Vy5wqOLwiw1?= =?us-ascii?Q?CdcTLzyNa9apYv2as7P3xnfQDnAtn6KpCEL616wYyoUqQzSKrZr+8mNcu484?= =?us-ascii?Q?XdK38LIS4U24ZyWlexYjkDmLHbBBK50PERO5R5/2I+dCDNMKp3lzOYx5+SyE?= =?us-ascii?Q?7TkwAmu4O2RUyddXLcpEHKef9F5krUoknFmpanLohl6d0nc7kWTyau70Ij36?= =?us-ascii?Q?n7ozQW73cYYvgTibSlMD+N2G51sn5BrFYGT4lVyjdcUh+PUrDtlc5BmImhV1?= =?us-ascii?Q?5whSnBHlp5Ymyjr75+hbKRUQqhBCUR5OaC5QTqBzOe8luEwCjYhMB/t3FaAO?= =?us-ascii?Q?GQ/yw3IhLnY6X2ZTHauPYetAII5sZHbg1kJw+b3s0iWEueGMoNLClobau6nC?= =?us-ascii?Q?jvq19GFjJ6MbmAy+MTvNaEi2AwU/rPfkEYAx+EkJ5Ht3J0A6BkbEkpEyGJWn?= =?us-ascii?Q?1Z7ll2kcrVmIe++NneOYWleIMTKuNeIBZEfx3FJAqsV7PUjPrE4xzV0RTnm6?= =?us-ascii?Q?+fVWeDjkcEQcpllPjistxEVoSc3t1r0eLhrJ84oyYGatMISDpE1BlMCD/5/s?= =?us-ascii?Q?GwKJHAMbxLYnFr+o7TEqfvKbPKTp2GHnYeKojk1VufrnfN96i6QkOiRc852y?= =?us-ascii?Q?09Dge+c9uGsCCKSmhLj1w+BIwtF4VYLeeY8X9P8Z/DgbG9fZS1m2agY7DHTV?= =?us-ascii?Q?4pFVFoHhr6+5ur4vEgRVjUrzwhrMIIa92yVAXRrvhGtJ/e6jIm6SneFG6h1P?= =?us-ascii?Q?PXZjYJrVuI1KR2avd/xk3nME6JhtXt7t2FLix2l9ceCPYhWGhbs91ckUQhSr?= =?us-ascii?Q?9DvIzQy9vBJDX2Jl8QXiFU3ptqysbcyAPJS0dkYwfV4F26tGG1dDfiTHypeK?= =?us-ascii?Q?y06uT9cSRLFNs76zncJ3nM7ZLAIhJz+SXiFm/O2U7Kh5kleIA/EC0OWn6tzB?= =?us-ascii?Q?NgR1ytN47wuT9i4xHKfu9HGHWyW6AqP56nVIV5x/yHAVEBjnBHlJZhcP6l89?= =?us-ascii?Q?WpqaPgtRFW8cpqLIfNPqhv8KWGBj34HG4iUBnaSESW9T/GrH84NHDBEJglGG?= =?us-ascii?Q?+i5DLXGhsha1mfkuk6+zkYcQNsVUE5wk7AfRogxdtqxuk7/Jb+kMHpmHLxV+?= =?us-ascii?Q?YzsKQHAsDKzL/a1gAXqmS+iFilEsQ3adaajJlBTzTgl82IN6LBX0t4zWcMT4?= =?us-ascii?Q?zCCaTnFTdjEg3+UrUDnMZrbPJGU0WcGR7vlG0YDk487DDnm3wzaUQFb4vdmX?= =?us-ascii?Q?jCfIzyADZ6iyrOH5beIxspsXBC43pLBi4p9IvbrnHXQckXUBcn49O7MXQaAq?= =?us-ascii?Q?/os+6z/PuWxaL3H6uBUgZgkjFYPyeLqHYnuRCErbRsiUepRkY2FlByZfWw0K?= =?us-ascii?Q?6tN1fS6lKRL7OIkZqOK+e5RWhgXAYJPCaer4tq+x94m/9ZFHzhld9UbkzuYz?= =?us-ascii?Q?gZ3muwZ/F8yu7WtnRrPmSpv/UeTMg/oOjKtbnNQitQOpQeYUIQx/3YxuA7lt?= =?us-ascii?Q?cvb9Wk5XyS+Rs9wKBwKN/XPXsRln6+4=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: f2203653-7f6a-4107-a5ec-08da3895665f X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2022 06:12:34.8298 (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: ITbbfJIb7HFLthPBOFh/AVtI0f9nhhwN2dOFRkikWNUObG/JlmnZRbq3lscFqions1Uv3+zO9A4KzSuIrqHGTQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0401MB2584 Content-Type: text/plain; charset="utf-8" This patch adds a new struct member sched in struct mptcp_sock. And two helpers mptcp_init_sched() and mptcp_release_sched() to init and release it. Init it with the sysctl scheduler in mptcp_init_sock(), copy the scheduler from the parent in mptcp_sk_clone(), and release it in __mptcp_destroy_sock(). Acked-by: Paolo Abeni Reviewed-by: Mat Martineau Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 7 ++++ net/mptcp/protocol.h | 4 +++ net/mptcp/sched.c | 33 +++++++++++++++++++ tools/testing/selftests/bpf/bpf_tcp_helpers.h | 1 + 4 files changed, 45 insertions(+) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 17e13396024a..b7b7fbd2cab7 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2643,6 +2643,11 @@ static int mptcp_init_sock(struct sock *sk) if (ret) return ret; =20 + ret =3D mptcp_init_sched(mptcp_sk(sk), + mptcp_sched_find(mptcp_get_scheduler(net))); + if (ret) + return ret; + /* fetch the ca name; do it outside __mptcp_init_sock(), so that clone wi= ll * propagate the correct value */ @@ -2798,6 +2803,7 @@ static void __mptcp_destroy_sock(struct sock *sk) mptcp_stop_timer(sk); sk_stop_timer(sk, &sk->sk_timer); msk->pm.status =3D 0; + mptcp_release_sched(msk); =20 /* clears msk->subflow, allowing the following loop to close * even the initial subflow @@ -2971,6 +2977,7 @@ struct sock *mptcp_sk_clone(const struct sock *sk, msk->snd_una =3D msk->write_seq; msk->wnd_end =3D msk->snd_nxt + req->rsk_rcv_wnd; msk->setsockopt_seq =3D mptcp_sk(sk)->setsockopt_seq; + mptcp_init_sched(msk, mptcp_sk(sk)->sched); =20 if (mp_opt->suboptions & OPTIONS_MPTCP_MPC) { msk->can_ack =3D true; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 86a5ff5d3fc8..57a92db1e85b 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -296,6 +296,7 @@ struct mptcp_sock { struct socket *subflow; /* outgoing connect/listener/!mp_capable */ struct sock *first; struct mptcp_pm_data pm; + struct mptcp_sched_ops *sched; struct { u32 space; /* bytes copied in last measurement window */ u32 copied; /* bytes copied in this measurement window */ @@ -531,6 +532,9 @@ void mptcp_info2sockaddr(const struct mptcp_addr_info *= info, struct mptcp_sched_ops *mptcp_sched_find(const char *name); int mptcp_register_scheduler(struct mptcp_sched_ops *sched); void mptcp_unregister_scheduler(struct mptcp_sched_ops *sched); +int mptcp_init_sched(struct mptcp_sock *msk, + struct mptcp_sched_ops *sched); +void mptcp_release_sched(struct mptcp_sock *msk); =20 static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index c5d3bbafba71..53773668b5ee 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -54,3 +54,36 @@ void mptcp_unregister_scheduler(struct mptcp_sched_ops *= sched) list_del_rcu(&sched->list); spin_unlock(&mptcp_sched_list_lock); } + +int mptcp_init_sched(struct mptcp_sock *msk, + struct mptcp_sched_ops *sched) +{ + if (!sched) + goto out; + + if (!bpf_try_module_get(sched, sched->owner)) + return -EBUSY; + + msk->sched =3D sched; + if (msk->sched->init) + msk->sched->init(msk); + + pr_debug("sched=3D%s", msk->sched->name); + +out: + return 0; +} + +void mptcp_release_sched(struct mptcp_sock *msk) +{ + struct mptcp_sched_ops *sched =3D msk->sched; + + if (!sched) + return; + + msk->sched =3D NULL; + if (sched->release) + sched->release(msk); + + bpf_module_put(sched, sched->owner); +} diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index bca318d2cc78..aca4e3c6ac48 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -253,6 +253,7 @@ struct mptcp_sock { =20 __u32 token; struct sock *first; + struct mptcp_sched_ops *sched; char ca_name[TCP_CA_NAME_MAX]; } __attribute__((preserve_access_index)); =20 --=20 2.34.1 From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp149093pis; Tue, 17 May 2022 23:12:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy7H7U3tDRURt44E5Hl8i4doOxI3Nn+tKHfMrQslWo3QRv/nFBTNaKlH6+ChGfYYwQndC4F X-Received: by 2002:a17:906:e87:b0:6df:8602:5801 with SMTP id p7-20020a1709060e8700b006df86025801mr23338834ejf.140.1652854372124; Tue, 17 May 2022 23:12:52 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id ht18-20020a170907609200b006fe79763970si1612496ejc.157.2022.05.17.23.12.51 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 May 2022 23:12:52 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5364-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=mimecast20200619 header.b=dYFZ9gkW; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5364-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5364-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 9030A2E09E8 for ; Wed, 18 May 2022 06:12:49 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4B2DF1853; Wed, 18 May 2022 06:12:48 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 2FFC71852 for ; Wed, 18 May 2022 06:12:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652854364; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yRxAvXrhiOxg1zCCJJMEhl/dtKkfzMQBen1bjE/32Ys=; b=dYFZ9gkWT2hyQPRPQgyqY7f15EMQxOgb3QeFwb7ytTD/mwLyCJjo4X+wC3y6l/+2kaFsxV mXfs24hwxHmlAIit5Fe5gJBQGXoceswChQz4kVEukBtekVBs3tMiy01DYPbRb53RuowsV9 hil5RU5ZnZMyQkH4qEUHGcXllKnRz08= Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2055.outbound.protection.outlook.com [104.47.12.55]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-9-TgM7x-XLPfmGnTlJQNETIA-1; Wed, 18 May 2022 08:12:43 +0200 X-MC-Unique: TgM7x-XLPfmGnTlJQNETIA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Nq13Ry3epJtCLaGqjeBBPGaophr1RtjBKam+Eyg2zxHp7IP40ZQJHvZxEXmWQxNSlpfrfxOjw+y6INHYCo6iVQo4qmPR/65rUWlGkbCxajlBWP0J9Am2N5IndrFKPxCq/DfrzTcdJdna+4ghU83UyjoTMoK33uWmDERjejJ4/eWkoZuD4Elde+lydkr3LddGE0G1KbAQCBeMAlHBoYkxH8qkOUTAbtX7GzlUhW4WbWbexF5egCy8dbwCUsQ6zsndo3ZQgqG8cpqF8qe+dY+t14smpKLJisVgGNsgR4gAMdNNCaZecGT567ggiTW72j+1vheN3hc877pHtWAr5EdooQ== 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=Dkf14X/b1u8DaWysq5zD3Goopu4QvsIvbUrOsJePChE=; b=KK8SoqVspd7N8baAJWaDO6DeXq2XPpM2FEwivfzmY0fxRWcZhshppXTnrBQfdnszhnNMDxGsvIDJu0BLZesv5UAAdP1BpfhQbQvMTLDB+wPUvRWl6Ak9lzE48krMpI3pbpC2eP7Ln8lje6qd49VfjBUK+Mr1D9iES8LEnblGKnqSArZRImRl6cjE3XDy71suZEeZkQ52wNVfKAi9qQX3amOLB1aYhQpjvFh7//D486uhrOGopbnQPexo6vjrEbTfA9GgflVZOr9LQymvVNS2TLauSKLpTesZLy7MsnREnzCpgrO68VX/AvpJU78QL6rvYnH5YVJRDjDj3zIrXTK0qA== 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 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 DB6PR0401MB2584.eurprd04.prod.outlook.com (2603:10a6:4:38::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18; Wed, 18 May 2022 06:12:42 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Wed, 18 May 2022 06:12:42 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Paolo Abeni , Mat Martineau Subject: [PATCH mptcp-next 14/17] mptcp: add get_subflow wrappers Date: Wed, 18 May 2022 14:10:52 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0146.apcprd02.prod.outlook.com (2603:1096:202:16::30) 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: 0f8dbb65-e97d-4b59-32c3-08da38956ad3 X-MS-TrafficTypeDiagnostic: DB6PR0401MB2584: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: A/9fMUhjV7lrGa/2ngd9e3EjvWdtYMPyEzp4+izd0WnjfCcbdTwzbprbVLegBJy6UWenNMaUkMTy2fC58Ow966NYkfmxoCuXOJeykSlciYavP+nA/R2JrQ//NX2UqU/pBfGY4yaXVZiYGywrZ+Lw15afM3XdCn6/4Tb15oCZqNamZ+DRY5Ix8fMYz0WMtdXN0cQIW4DLdYZqBt054lGoGK2zlFYSifhikEX/+j2hnuI3TUwd3QRnyjXlFCD1YQrumHA1kaRWwTFFqD3uUYKuB6ho16gYhAYs039IY7Kgy3MGX4ebEQ2q1h9mqrbxYR12tB5HD3n6RnyMOhx1JWeDkMeXfgn5TwJXeKvSo0k39dehRuZNDgFlV0N8G7lcilNvm0WgoetFaLho3aHUoeGL0GdE64jtGO2gXNPRwIzZrF6rHUx0i72kp+9i1O+YNU3T2V5EJQ6H34LX9ElqsiP9F8w5IfZZBytDhPNHitZz0OphzrdazF4Vb22ggrBun9gPjygZt1ngxMyvOC+ShBO8KGhEQ6fe/WGFHloldC1OvT987AwNsZvhL7aF4lAfYrSoKyEQOAkwHZY8i4ATr3/ubeUqAXME257KxAt98BlGaRL6WdqPwAglW2ElDuEtqMOruT5YiqjgtR4ybB/BhmjIUQBzOM1TR+JEhfxxTbM7tLWPTLNszm04N9uBNm/Yj8c9w/3cZQY5B4o4ByHd8WRsRA== 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:(13230001)(366004)(316002)(66476007)(36756003)(44832011)(2906002)(8676002)(4326008)(6666004)(38100700002)(86362001)(2616005)(5660300002)(6486002)(66946007)(83380400001)(186003)(6506007)(6916009)(54906003)(6512007)(508600001)(8936002)(66556008)(26005)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?WesQeGC97jk2ZH5X0mg1GX/+EEAuK/HI9uNX9gC3+n/7Dewsz92o5MoEcQuF?= =?us-ascii?Q?M+xUrTujQkBbNx1Wi97sxPPIeApQ+quWyc1Le+6mVx7iQUvJf0i3GL2tyZJv?= =?us-ascii?Q?vR0dpws2zad6CVJLrzfNCB0pmVQr7wWlfJEnUh3oYb3vC7SAWY8Ap0zMTWUx?= =?us-ascii?Q?l4jx303vI7AG+nW4Rt/PRPFNFA1RysmQFaPzG1rC3S0d7gee0T+FcgaC8huU?= =?us-ascii?Q?lJtqgY7gjnrh90UG50B5XxmHzFwIAWY91vZ/UrXaLz0L6Psvw2WcPl+uookE?= =?us-ascii?Q?sU9oKLvtS5BjQ4EqZXMve7XGPCcAV1gMzIzbTYWQtMb5w0Et2pWeGVcz9ZI+?= =?us-ascii?Q?b4aDPXMGQ4Qf1NTbjShXMLqSCdozCasMmiw3nJORetPX8NzHxl5VSqG2ca9B?= =?us-ascii?Q?XbYr9Mn7WB4FHHDXXIAEMriNbRdfcYmjPHY+g4LDQSc8k3EfLocDE8MePtBQ?= =?us-ascii?Q?ZIsb2HXBMJBENwezsuMFsiLkfreNQBgqSxrQrMeXO4/qp9t+0z38qBzS93I2?= =?us-ascii?Q?CYmv3VGjt+wIB6UOv/cGFy21LXEBv1FzR6pFWPHIbqJ8SWhEh6pBJ1fgQyYe?= =?us-ascii?Q?NF0CZdT/gzJS2etWSs6tFmFy0eziWIvoPgJNZVz/clANAUZBF5pLGkEN5NMp?= =?us-ascii?Q?k8NGn+mh7rZip16GEGuV3Z6LFMfKD19xfbY4pBbjnidGucpn1XVrpjQ58KlV?= =?us-ascii?Q?wmuXiV4gcZZ9yvKZGQQModcN7if3HDGpuVODVgqMDseypdrKFqszChqDk73p?= =?us-ascii?Q?XWMzh1wVNG3bBGESxZxql2QBrMroJ4GnQo0keHjmNgvTvX+Vd9biD2BSPjjy?= =?us-ascii?Q?+W0v1do/H71j5LJCLXugziPivA8wKZ4GRel0CuBPVsGdtctbQYwNg7M8Kw3y?= =?us-ascii?Q?nGQkWHTehsnPA014UYfB7JopUlnoNBE4oY++GSnPQ/JGx/A/Y+ifqi/Lifmd?= =?us-ascii?Q?0adc+OlmIWeCPzGQN6xCe7ySq1XOwc2KN7pCyDKMOhCGuf18EjeZ5MZtXPrg?= =?us-ascii?Q?YElQysK8fu4C3MBjt4ZWEOSa7TxiHjLorOt4xcM2P1ROBC0++z0JpVAjcF1a?= =?us-ascii?Q?SrJyY5C0fi6D0VIrWt/VUua6dh3asJL+bXgae9iNHlexHLu4v2Vbi/N/TZws?= =?us-ascii?Q?fqiyS5j+uAycmCRtaKwYv2Laf5ykvJV2yP3sb3PThnR7V69pXmGW4mGINGY3?= =?us-ascii?Q?n0K767yAhS7LRC/NgykRj+1wpXBtBpJt0OImKm1dTu+akNdPRkH2VTQa6+B9?= =?us-ascii?Q?Mr1IUU/5nrO0ZbDZCIj35AJH6Fd84oe1huK8KqFQR47H9jFzI7UE5rRrTiY5?= =?us-ascii?Q?BPtN4Nmyo6vBT+WY2O/9wAEeL1hgeqWIkacQbu7kZeZRYQvSjgOl/hlrmD4V?= =?us-ascii?Q?kTY5ateQQ1+n1XnGjaL4R3G8vcH/1fxYG21QEnUi8pbzXe+RkFkEndvBZhTu?= =?us-ascii?Q?KP0Atq8tKCWMU04k7G8BIUHIhjO+7oSDbkHdn6rYY6FW39/Xu5P4tglLR2jJ?= =?us-ascii?Q?2vVBiMcduaNUx2aQ0NxD/bPgg55j/x/p7+Ro2hwQOaVhs1zOhSdFiVXRYKY2?= =?us-ascii?Q?I4uwGb/1R/OHJsThIioiBtRV9cH/vS9wN9cfUJ3Ya+E/ZqLMvWg6o/Zj+8bo?= =?us-ascii?Q?6s7PIbGiyA8orPFqXcqNQL0MFUNDBzg0gMaL+aQWQ/brtxfB1tKSgxxTR/JV?= =?us-ascii?Q?YCk/09Nrl/PQ4ZzZrOmi4DKyo9YGJRUdlfrvcRy0Qg2nAtkMpZ2AzjtoIjPK?= =?us-ascii?Q?EtzarObFvAAu/b3mSA+wfCw4a2oXmAA=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0f8dbb65-e97d-4b59-32c3-08da38956ad3 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2022 06:12:42.3136 (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: 4YoEf3o2vqWqI1Ol4Jvv+DsVX4HoNR4roXWojdwMEM0EwZ60lU07jw6GOCIcF6FhHMzrtyEFUibAryIa3DsW/Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0401MB2584 Content-Type: text/plain; charset="utf-8" This patch defines two new wrappers mptcp_sched_get_send() and mptcp_sched_get_retrans(), invoke get_subflow() of msk->sched in them. Use them instead of using mptcp_subflow_get_send() or mptcp_subflow_get_retrans() directly. Acked-by: Paolo Abeni Reviewed-by: Mat Martineau Signed-off-by: Geliang Tang --- net/mptcp/protocol.c | 25 +++++---------------- net/mptcp/protocol.h | 4 ++++ net/mptcp/sched.c | 52 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 19 deletions(-) diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index b7b7fbd2cab7..4c10c88d170d 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -1427,7 +1427,7 @@ bool mptcp_subflow_active(struct mptcp_subflow_contex= t *subflow) * returns the subflow that will transmit the next DSS * additionally updates the rtx timeout */ -static struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk) +struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk) { struct subflow_send_info send_info[SSK_MODE_MAX]; struct mptcp_subflow_context *subflow; @@ -1438,14 +1438,6 @@ static struct sock *mptcp_subflow_get_send(struct mp= tcp_sock *msk) u64 linger_time; long tout =3D 0; =20 - sock_owned_by_me(sk); - - if (__mptcp_check_fallback(msk)) { - if (!msk->first) - return NULL; - return sk_stream_memory_free(msk->first) ? msk->first : NULL; - } - /* re-use last subflow, if the burst allow that */ if (msk->last_snd && msk->snd_burst > 0 && sk_stream_memory_free(msk->last_snd) && @@ -1575,7 +1567,7 @@ void __mptcp_push_pending(struct sock *sk, unsigned i= nt flags) int ret =3D 0; =20 prev_ssk =3D ssk; - ssk =3D mptcp_subflow_get_send(msk); + ssk =3D mptcp_sched_get_send(msk); =20 /* First check. If the ssk has changed since * the last round, release prev_ssk @@ -1642,7 +1634,7 @@ static void __mptcp_subflow_push_pending(struct sock = *sk, struct sock *ssk) * check for a different subflow usage only after * spooling the first chunk of data */ - xmit_ssk =3D first ? ssk : mptcp_subflow_get_send(mptcp_sk(sk)); + xmit_ssk =3D first ? ssk : mptcp_sched_get_send(mptcp_sk(sk)); if (!xmit_ssk) goto out; if (xmit_ssk !=3D ssk) { @@ -2203,17 +2195,12 @@ static void mptcp_timeout_timer(struct timer_list *= t) * * A backup subflow is returned only if that is the only kind available. */ -static struct sock *mptcp_subflow_get_retrans(struct mptcp_sock *msk) +struct sock *mptcp_subflow_get_retrans(struct mptcp_sock *msk) { struct sock *backup =3D NULL, *pick =3D NULL; struct mptcp_subflow_context *subflow; int min_stale_count =3D INT_MAX; =20 - sock_owned_by_me((const struct sock *)msk); - - if (__mptcp_check_fallback(msk)) - return NULL; - mptcp_for_each_subflow(msk, subflow) { struct sock *ssk =3D mptcp_subflow_tcp_sock(subflow); =20 @@ -2466,7 +2453,7 @@ static void __mptcp_retrans(struct sock *sk) mptcp_clean_una_wakeup(sk); =20 /* first check ssk: need to kick "stale" logic */ - ssk =3D mptcp_subflow_get_retrans(msk); + ssk =3D mptcp_sched_get_retrans(msk); dfrag =3D mptcp_rtx_head(sk); if (!dfrag) { if (mptcp_data_fin_enabled(msk)) { @@ -3114,7 +3101,7 @@ void __mptcp_check_push(struct sock *sk, struct sock = *ssk) return; =20 if (!sock_owned_by_user(sk)) { - struct sock *xmit_ssk =3D mptcp_subflow_get_send(mptcp_sk(sk)); + struct sock *xmit_ssk =3D mptcp_sched_get_send(mptcp_sk(sk)); =20 if (xmit_ssk =3D=3D ssk) __mptcp_subflow_push_pending(sk, ssk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 57a92db1e85b..9649d367d363 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -535,6 +535,10 @@ void mptcp_unregister_scheduler(struct mptcp_sched_ops= *sched); int mptcp_init_sched(struct mptcp_sock *msk, struct mptcp_sched_ops *sched); void mptcp_release_sched(struct mptcp_sock *msk); +struct sock *mptcp_subflow_get_send(struct mptcp_sock *msk); +struct sock *mptcp_subflow_get_retrans(struct mptcp_sock *msk); +struct sock *mptcp_sched_get_send(struct mptcp_sock *msk); +struct sock *mptcp_sched_get_retrans(struct mptcp_sock *msk); =20 static inline bool __mptcp_subflow_active(struct mptcp_subflow_context *su= bflow) { diff --git a/net/mptcp/sched.c b/net/mptcp/sched.c index 53773668b5ee..3ceb721e6489 100644 --- a/net/mptcp/sched.c +++ b/net/mptcp/sched.c @@ -87,3 +87,55 @@ void mptcp_release_sched(struct mptcp_sock *msk) =20 bpf_module_put(sched, sched->owner); } + +static int mptcp_sched_data_init(struct mptcp_sock *msk, + struct mptcp_sched_data *data) +{ + data->sock =3D NULL; + data->call_again =3D 0; + + return 0; +} + +struct sock *mptcp_sched_get_send(struct mptcp_sock *msk) +{ + struct mptcp_sched_data data; + + sock_owned_by_me((struct sock *)msk); + + /* the following check is moved out of mptcp_subflow_get_send */ + if (__mptcp_check_fallback(msk)) { + if (!msk->first) + return NULL; + return sk_stream_memory_free(msk->first) ? msk->first : NULL; + } + + if (!msk->sched) + return mptcp_subflow_get_send(msk); + + mptcp_sched_data_init(msk, &data); + msk->sched->get_subflow(msk, false, &data); + + msk->last_snd =3D data.sock; + return data.sock; +} + +struct sock *mptcp_sched_get_retrans(struct mptcp_sock *msk) +{ + struct mptcp_sched_data data; + + sock_owned_by_me((const struct sock *)msk); + + /* the following check is moved out of mptcp_subflow_get_retrans */ + if (__mptcp_check_fallback(msk)) + return NULL; + + if (!msk->sched) + return mptcp_subflow_get_retrans(msk); + + mptcp_sched_data_init(msk, &data); + msk->sched->get_subflow(msk, true, &data); + + msk->last_snd =3D data.sock; + return data.sock; +} --=20 2.34.1 From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp149116pis; Tue, 17 May 2022 23:12:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxGOPYtIEu5KjEN9aUIJMpogtjV8IHISc5UaWLRAkeodC15C7Fl5qhs3nnfdZA3lFiXLLxR X-Received: by 2002:a17:902:fe81:b0:161:64f1:efcd with SMTP id x1-20020a170902fe8100b0016164f1efcdmr16044935plm.168.1652854377516; Tue, 17 May 2022 23:12:57 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id s22-20020a056a00195600b004fa843103dbsi2117584pfk.193.2022.05.17.23.12.57 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 May 2022 23:12:57 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5365-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=Nio71mff; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5365-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-5365-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id D1658280AB9 for ; Wed, 18 May 2022 06:12:56 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DAB071853; Wed, 18 May 2022 06:12:55 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 9D5841852 for ; Wed, 18 May 2022 06:12:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652854371; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cKPMaTl/W5Ts3UrJa/7FJcwJ+JZ1uGAfTNloWXwUuTo=; b=Nio71mffNfSR6iWQvCPzJE80lj78GjtiMeKpEYmJnXNdhMXLCdFowLMpT1a4GbKw/LxVve KnWvokvfak4pNIbabH5LpaTKPxDwVS+TLqOtjmgOdF4MaJOrsPToQhOoVXqeUUest6NQQc WjeHDzynixaMf8WhQx9ZhK+GIvoiVx0= Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2059.outbound.protection.outlook.com [104.47.12.59]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-27-xQClH8EnMlOdBYvVyGM4Kg-1; Wed, 18 May 2022 08:12:50 +0200 X-MC-Unique: xQClH8EnMlOdBYvVyGM4Kg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ndIEd4kQ1GU6uVppXRseT3qeHjG3Ony41i9G/OTm4TrEvtr70Nzh1LhOVrrv1eO42d4t1UFydPhUvu3TjstKmuZ5Gaw/VdaanJ1kDcfn+YxHKAbanPxpJtXi7QBNyAKK11c4/SAnsltPGn6Dy9ISO8We6N9tCG5lU/kohY/pKqnL8nDdokj0RrQy2e/28qzOI3MCe0qsDQXCsQOkUX/RHUNRO5uZkC3+wqgpjjU96a8WP3jG1XwcO0rO/xeRVnA3e0SRp9uqpo1gWSvm7OKTIuYCtrjIGqu9dXJpfUQBkplJsrKCJBbR3gCnOH4sFnq0ybhX0R07pRz0ULL0gVgC2A== 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=tYUMtfMIwo/bOxmJBUN/+X8EIj+E3KHRF08GXLxOh3M=; b=bjrfrFU2cCDZYze9n+AfrXUT9Ms+GtelGup23ZShs3TJybfFW2KlrNxY/UoxCOQGN3n0xLG/BYwdWZ/r2WzlpL9+0uxnLmZgqUUFh76EftjeURdCclpBwWqyemXQoNxvTn5n+m+22MJ4hQ3fQU7qvut4eyjmOyhWulxskvKUNyfU1wA315x5+wezzIm7cTXbHVwTimqBIXdkwv2v4V8Oja7e7ct4U9OKWxLvHN5naSjHb77lxyLPlEjGZRkF7gzxCqa1poJJ8mxHB3sczQSZKuKyMMjrccDKFDdj2VNDRnNzjO26BtVgS5R5I3vzeGyH8HgY3I3yZvSsVRl8qSIiSQ== 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 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 DB6PR0401MB2584.eurprd04.prod.outlook.com (2603:10a6:4:38::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18; Wed, 18 May 2022 06:12:49 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Wed, 18 May 2022 06:12:49 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Paolo Abeni , Mat Martineau Subject: [PATCH mptcp-next 15/17] mptcp: add bpf_mptcp_sched_ops Date: Wed, 18 May 2022 14:10:53 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0135.apcprd02.prod.outlook.com (2603:1096:202:16::19) 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: 93be5175-cd73-4c61-e68d-08da38956f4d X-MS-TrafficTypeDiagnostic: DB6PR0401MB2584: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: WDHnWlG0+oQqHg0HovjSDlHQgMLZmR5/7VPErJCO2biXY0W6lMrmJ9+WrImLFiZuhMHBexoAo884NEhiEbIcib/MoMp2Zsd1z+lh1iPa54wVREh8zu7xAzsPblHz3NmguhfgsdeaKaFIZBjnVhAQ19jjNI3OZAEbGrqg7UpwqwBbebUbVdk6Y0N0BZFgh7tsyaSUQG+JBVSpm9smUEcRxxnu07Vn3AcsZ6tDg/iIb9uOFEmSNznTv7vvzP3NELussdyK7ACOg5JWS1DZwPYIHO5WpERtxulHtnZZ142Vai/xroOsIx9cl6L+4Y8cyUhxxuOk2l4LJiSkibJeAVjr/dhT+dYXHKoTU9cNZfakiB0NFtRmS+/8ITKTpFxT5eXz35Qz1uUtuvygO0I/7fKlzt9ip//bKnqzjRuMCaqAX4uHWCg7reSgXRJikSYTxK7iDRxjOulV/WO25vQaUp7BPidzhYp7hZS1Gx04r3OOShKF0vkBXtXcO/A5IL13j5Hd7EgUEHAOSsSajcH8R2CQHG0lgkoDn9LB7fm7SphmF1Xpqo5r/mea8WBx8C1M7rCVRbJrL/oYMSWpio1SmTai4e+23nIgBfjOZWEiGRbIgkq/rsGyQt+PVZFMT6+MY0qESiMhGuSzhpYDFcySDABzJk1gjGEaPun8/UMLRDvX1sJKlnFjVoJ4Q7NuSJglU3EqIybd1h6lw9seKbP6MY3Psg== 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:(13230001)(366004)(316002)(66476007)(36756003)(44832011)(2906002)(8676002)(4326008)(6666004)(38100700002)(86362001)(2616005)(5660300002)(6486002)(66946007)(83380400001)(186003)(6506007)(6916009)(54906003)(6512007)(508600001)(8936002)(66556008)(26005)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?nHkhButNY1zIyASawJvOrcl2a1zrzp7B1Y+QHGw0YgrmWqPsXAlqehmTKqv2?= =?us-ascii?Q?k2TzQst8s9X/iiP88TTVc1f1q+wZ9nEfXhRaTphDpZ9PuJ1dViuZIsnosSnC?= =?us-ascii?Q?AAMumbBNxNslFq9o7bd/peaFX+Nx0uLepumj871ia0AHiwx9aihCj+dYgxEF?= =?us-ascii?Q?okPhMzu0U6Hmg5bqZh/cStEvQLMDPqqXqRuE5JUZOmcR83UfHuHipRatsNtS?= =?us-ascii?Q?vZ/mCPm3wXp+75x1bfFC//A4Z3r0e/LCeiFpVzDHJ48DweMF3/MIwtZEQScj?= =?us-ascii?Q?8GXWtF7aQbAU0KaIZPsJkkXXfFRHEKtDmKIxIrOPwB2gOwDle0uE+wJLDWSn?= =?us-ascii?Q?ZMxhT+oExhWvAuFh2sXRQryIv4rffYAtDjh0ZWpzII6svioTU5qjy24sZ059?= =?us-ascii?Q?8WgX5fO3LcgpoViRlzPww4PFPSki7afcamYIOrjAJp+D8BrAFNUg2GTAxkPw?= =?us-ascii?Q?mj0D10IqNazdX3FrXc2gDRIOwfAZwpYWeGcikGZVEi8SLwwVjP1NlC9+pfq4?= =?us-ascii?Q?sP89OxY26dHEH9SGJKrDMYugRMkAUyNIpkJu7uipk6YWBURwz1ROzVD1IAH0?= =?us-ascii?Q?B7Vc9Twh6dyjx9TmM1twKUzQ/xLKR7ndHPCYGFVl+XLMJ8G557EROZUYjz7h?= =?us-ascii?Q?2c4aHyuDBo9kbdeOmjiAkI3jQDMdMhMOA3sIC2hjycPPvQpMVwSOYD2lwCB5?= =?us-ascii?Q?T9QgZV38sxyvDPi/DrueWOQC/AgVQhJDLOn8O7DuA8gqmyZnaf6USQhgtjco?= =?us-ascii?Q?LReZPvGU4h5JaXBsfmHU/z8/X7PZ9ewK+A3Q4VEveo92nwQU39VEQnE6AeMm?= =?us-ascii?Q?0YfIS7R5eNOwLAuFTqlxYwTf6hOENd+eMEvLadJP9KfVYygelQgCckpoYmGW?= =?us-ascii?Q?TIkSVx8vU1FR72bjusYEw10MG+0B/6biSrD3wWKWp9NugLHM9mH371W51fJ9?= =?us-ascii?Q?kEB1/G66OdZGx9bkpIqsqT44plEx0yZcmK3KddQjYF04qDw2dO9tRaEANuJy?= =?us-ascii?Q?o/nxeWO4d23Te5c5OOMv3Qlb1H7zAlsuk/2ta2zHqzKlPPzzopudbiy7ijWz?= =?us-ascii?Q?dmwSkipMdJ7apJU9NetqAT4xCr3FZW1O3cJwUjtBgj5zBTlihWG6KKjTiJnc?= =?us-ascii?Q?nkmm+ofw8FpnMQuzxhhvQ2t2qUWrKPYwxiubF4tyBpOM1GaWHW3K1RBUridc?= =?us-ascii?Q?aPuklmEJKX6LN/mFOYkSABMOEdJE4BAfu6OAij7IZl5AJhqCAQtVctdmM1p1?= =?us-ascii?Q?/k4Opzj2bsDi8SCmreC91LylYq4QX8dnlVVI4zFz+OW5A19blHPSSIwnHOOD?= =?us-ascii?Q?ZxEBmS9Sv4+DxAuEA9EyTDfVMKvj4dvm9vOrTSnVg4hhkuiILfMeT8TBV9G2?= =?us-ascii?Q?AkwyKQBpirlFtF03q1FGcvbejDnPuC1hUh4UdEM+RpHpJ+veFBYlVv6Ul/6S?= =?us-ascii?Q?T0K5aBmb/eNZZUpLWT3QOTaX54xfMaRJb6qM0PstXOvDghMnccJXVNNEnY3d?= =?us-ascii?Q?LQnL3yp8GimWhf4eABEvFXjRo9WSe2Rgvp0qREIhXtqDouAeSeaeR0oPD+FA?= =?us-ascii?Q?uHQJr/Vt0cwBUO2jlnSxNDAFkKWbJ9OsTvo4jdmBKBQPkmSwmuAuWwY8geCl?= =?us-ascii?Q?tglf6wWhivvTsZ6YNTXgRj/oNmNld/sF2NMQ5aEgV/prNF+IhSwJGKkSQ3zj?= =?us-ascii?Q?HJxYKMCWJ7+Im95MUaTbC+ndR+DGiJB0H0tNuebtiIkJFHB67KtfERieBXXb?= =?us-ascii?Q?+E5rYmc0LS1TfRnM80k1A94eLMGDVO4=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 93be5175-cd73-4c61-e68d-08da38956f4d X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2022 06:12:49.7348 (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: NKFORTv0Mz8rd+YcHEtgTyWdJuXZ2sR7xaUX9dAViEOl5HcpA93+kbacOLDCK80DItwNJKW4BlQhRiLXWDNmUw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0401MB2584 Content-Type: text/plain; charset="utf-8" This patch implements a new struct bpf_struct_ops, bpf_mptcp_sched_ops. Register and unregister the bpf scheduler in .reg and .unreg. This MPTCP BPF scheduler implementation is similar to BPF TCP CC. And net/ipv4/bpf_tcp_ca.c is a frame of reference for this patch. Acked-by: Paolo Abeni Reviewed-by: Mat Martineau Signed-off-by: Geliang Tang --- kernel/bpf/bpf_struct_ops_types.h | 4 + net/mptcp/Makefile | 4 + net/mptcp/bpf.c | 162 ++++++++++++++++++++++++++++++ 3 files changed, 170 insertions(+) create mode 100644 net/mptcp/bpf.c diff --git a/kernel/bpf/bpf_struct_ops_types.h b/kernel/bpf/bpf_struct_ops_= types.h index 5678a9ddf817..5a6b0c0d8d3d 100644 --- a/kernel/bpf/bpf_struct_ops_types.h +++ b/kernel/bpf/bpf_struct_ops_types.h @@ -8,5 +8,9 @@ BPF_STRUCT_OPS_TYPE(bpf_dummy_ops) #ifdef CONFIG_INET #include BPF_STRUCT_OPS_TYPE(tcp_congestion_ops) +#ifdef CONFIG_MPTCP +#include +BPF_STRUCT_OPS_TYPE(mptcp_sched_ops) +#endif #endif #endif diff --git a/net/mptcp/Makefile b/net/mptcp/Makefile index b68eddf4639a..702b86e8ecb0 100644 --- a/net/mptcp/Makefile +++ b/net/mptcp/Makefile @@ -10,3 +10,7 @@ obj-$(CONFIG_INET_MPTCP_DIAG) +=3D mptcp_diag.o mptcp_crypto_test-objs :=3D crypto_test.o mptcp_token_test-objs :=3D token_test.o obj-$(CONFIG_MPTCP_KUNIT_TEST) +=3D mptcp_crypto_test.o mptcp_token_test.o + +ifeq ($(CONFIG_BPF_JIT),y) +obj-$(CONFIG_BPF_SYSCALL) +=3D bpf.o +endif diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c new file mode 100644 index 000000000000..7de0c1ad313d --- /dev/null +++ b/net/mptcp/bpf.c @@ -0,0 +1,162 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Multipath TCP + * + * Copyright (c) 2020, Tessares SA. + * Copyright (c) 2022, SUSE. + */ + +#define pr_fmt(fmt) "MPTCP: " fmt + +#include +#include +#include +#include +#include "protocol.h" + +extern struct bpf_struct_ops bpf_mptcp_sched_ops; +extern struct btf *btf_vmlinux; +static const struct btf_type *mptcp_sched_type __read_mostly; +static u32 mptcp_sched_id; + +static u32 optional_ops[] =3D { + offsetof(struct mptcp_sched_ops, init), + offsetof(struct mptcp_sched_ops, release), +}; + +static const struct bpf_func_proto * +bpf_mptcp_sched_get_func_proto(enum bpf_func_id func_id, + const struct bpf_prog *prog) +{ + return bpf_base_func_proto(func_id); +} + +static int bpf_mptcp_sched_btf_struct_access(struct bpf_verifier_log *log, + const struct btf *btf, + const struct btf_type *t, int off, + int size, enum bpf_access_type atype, + u32 *next_btf_id, + enum bpf_type_flag *flag) +{ + size_t end; + + if (atype =3D=3D BPF_READ) + return btf_struct_access(log, btf, t, off, size, atype, + next_btf_id, flag); + + if (t !=3D mptcp_sched_type) { + bpf_log(log, "only access to mptcp_sched_data is supported\n"); + return -EACCES; + } + + switch (off) { + case offsetof(struct mptcp_sched_data, sock): + end =3D offsetofend(struct mptcp_sched_data, sock); + break; + case offsetof(struct mptcp_sched_data, call_again): + end =3D offsetofend(struct mptcp_sched_data, call_again); + break; + default: + bpf_log(log, "no write support to mptcp_sched_data at off %d\n", off); + return -EACCES; + } + + if (off + size > end) { + bpf_log(log, "access beyond mptcp_sched_data at off %u size %u ended at = %zu", + off, size, end); + return -EACCES; + } + + return NOT_INIT; +} + +static const struct bpf_verifier_ops bpf_mptcp_sched_verifier_ops =3D { + .get_func_proto =3D bpf_mptcp_sched_get_func_proto, + .is_valid_access =3D bpf_tracing_btf_ctx_access, + .btf_struct_access =3D bpf_mptcp_sched_btf_struct_access, +}; + +static int bpf_mptcp_sched_reg(void *kdata) +{ + return mptcp_register_scheduler(kdata); +} + +static void bpf_mptcp_sched_unreg(void *kdata) +{ + mptcp_unregister_scheduler(kdata); +} + +static int bpf_mptcp_sched_check_member(const struct btf_type *t, + const struct btf_member *member) +{ + return 0; +} + +static bool is_optional(u32 member_offset) +{ + unsigned int i; + + for (i =3D 0; i < ARRAY_SIZE(optional_ops); i++) { + if (member_offset =3D=3D optional_ops[i]) + return true; + } + + return false; +} + +static int bpf_mptcp_sched_init_member(const struct btf_type *t, + const struct btf_member *member, + void *kdata, const void *udata) +{ + const struct mptcp_sched_ops *usched; + struct mptcp_sched_ops *sched; + int prog_fd; + u32 moff; + + usched =3D (const struct mptcp_sched_ops *)udata; + sched =3D (struct mptcp_sched_ops *)kdata; + + moff =3D __btf_member_bit_offset(t, member) / 8; + switch (moff) { + case offsetof(struct mptcp_sched_ops, name): + if (bpf_obj_name_cpy(sched->name, usched->name, + sizeof(sched->name)) <=3D 0) + return -EINVAL; + if (mptcp_sched_find(usched->name)) + return -EEXIST; + return 1; + } + + if (!btf_type_resolve_func_ptr(btf_vmlinux, member->type, NULL)) + return 0; + + /* Ensure bpf_prog is provided for compulsory func ptr */ + prog_fd =3D (int)(*(unsigned long *)(udata + moff)); + if (!prog_fd && !is_optional(moff)) + return -EINVAL; + + return 0; +} + +static int bpf_mptcp_sched_init(struct btf *btf) +{ + s32 type_id; + + type_id =3D btf_find_by_name_kind(btf, "mptcp_sched_data", + BTF_KIND_STRUCT); + if (type_id < 0) + return -EINVAL; + mptcp_sched_id =3D type_id; + mptcp_sched_type =3D btf_type_by_id(btf, mptcp_sched_id); + + return 0; +} + +struct bpf_struct_ops bpf_mptcp_sched_ops =3D { + .verifier_ops =3D &bpf_mptcp_sched_verifier_ops, + .reg =3D bpf_mptcp_sched_reg, + .unreg =3D bpf_mptcp_sched_unreg, + .check_member =3D bpf_mptcp_sched_check_member, + .init_member =3D bpf_mptcp_sched_init_member, + .init =3D bpf_mptcp_sched_init, + .name =3D "mptcp_sched_ops", +}; --=20 2.34.1 From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp149168pis; Tue, 17 May 2022 23:13:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJysc5MSrvNzyOO83VHUTR4VRrCTtQswK9vb89LNu0gxgdwxW05nI7tbGGRReZLuwdf9A/9s X-Received: by 2002:a17:902:ecc2:b0:15e:9add:104c with SMTP id a2-20020a170902ecc200b0015e9add104cmr25230355plh.140.1652854387090; Tue, 17 May 2022 23:13:07 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id f10-20020a056a00228a00b0050de72cfdcesi2163716pfe.74.2022.05.17.23.13.06 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 May 2022 23:13:07 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5366-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b="L+j/cXZW"; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5366-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-5366-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 5D294280BE4 for ; Wed, 18 May 2022 06:13:06 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9E6F11853; Wed, 18 May 2022 06:13:05 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 0AECE1852 for ; Wed, 18 May 2022 06:13:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652854382; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=h2R3aIfRF88N4fKuF7WMISdk28j88e6veR2C6sFhhHg=; b=L+j/cXZWK+4G8auI35ydEWWOfJ4NxuqTETkzJFPxfPNl/tgAkiHbgufGXkIg0Pd3f0dwDL j4I/NBA5sg50+1C0CBdCjIrb25ADs3qbBDEp9quwsTDLqsQxLZYS/lQXnBSkxU5aDoK9MG lwB9z+LkBhQlRZKLbS2KDZBhT0uG5dA= Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03lp2169.outbound.protection.outlook.com [104.47.51.169]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-39-YCtih7w6OgGfk8lVECFcNw-1; Wed, 18 May 2022 08:13:00 +0200 X-MC-Unique: YCtih7w6OgGfk8lVECFcNw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jGaDGjFbYgP9s/36LV9aikHaBQbHcF3igdQkYuWjx3l9VZloqw8SYEXGKzWGbB/GH6Ux6tVmtOXYbknkPPEkgCKNj+UDsBkHyGj6J7bYLBhbIUYeeUDc67JwkmLeqIsxqqfDC2Dg/t1GkjDocn+4d2qgfTx7tw4UVq0C4WD3Vfom2nD7BCgq0l8ptvybakjJ+HdAM1E/Sl6qUOexS0GkCOTXkNEerXw/z4VW1BQz7vuaxF0zA0V6L0Lt4DzSNUG3EkkaTDIoN8ehdC4VrpowieR2qOBev2y+WnR9DPegG71TRVnTy9JYY/hvmoEuFU/Gv+5GRcYkfRbwwbhaykrzHg== 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=uOMM6qvB5KWBoElwhlSGobiSp1e0WnPwL2Y/XX1dHAg=; b=WqsyqaJfdkAVECV+WOy0GyqvflalraTe8aAaNdaLF7xynR+LTfADCMy68vw/8vflpOL6DqJtloZPlS8/OSKp2fIevVMFa9foVHer/cko+XOZn/QMnzDMMJ5+6UEpU278iiZoyXRnwIW3pp1fWTottIZjpfDSxcZRsE+l7lgk3xDW4/+f6Dl4nC00A9Ytl0iNP/XjCqo7ioH+wHZLy7PTQxFIYW6CAdc4oc3EZiKL11uUFYzNxQ7emEaEnynWIWlUNqY1nOuaXnZ0eeofCeM2sA0arrrbdozuQdbUqCzLdGwaALph+UuhCOjUq1nW6cZAu/vrSTolJOn9ItxcuScvwQ== 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 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 DB6PR0401MB2584.eurprd04.prod.outlook.com (2603:10a6:4:38::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18; Wed, 18 May 2022 06:12:59 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Wed, 18 May 2022 06:12:59 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Paolo Abeni , Mat Martineau Subject: [PATCH mptcp-next 16/17] selftests/bpf: add bpf_first scheduler Date: Wed, 18 May 2022 14:10:54 +0800 Message-ID: <38e7693d9dc0cd06d03d0c1ccfec84180185e381.1652853898.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR04CA0068.apcprd04.prod.outlook.com (2603:1096:202:15::12) 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: bde4390c-605e-41c2-87b0-08da389574df X-MS-TrafficTypeDiagnostic: DB6PR0401MB2584: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: 2mWXx7h5vrhZ0r2aJloPBNzMfgwVM4A4SyXc9xPX3SNFkCU5rzS36ReuEn5tNJ5zCcO9uVyC1xM4GymGSuI42hpxOATfPzkfN7Qon+sGvuR74pfxyyB8+0q3GY7UWuUW4IJsCiI+dsW/hL7fOOma/vFNFtdll6iVeU+EehdD5Pe6S4aS1hY4VofZHyBGuHw5wZvkH8MPSApktZwbZe/pSnAGOYEh/20ybEYaCkja+Vt2D3yA1eO7GvmazZyVJ36K3092WI31dxv7EYr0lO4Y8HN3CDSzdJqik2K9ircmiuVYwJLhZ8moompd2gaLUdQwe4DkOHueEn5og1YIfUxS3S6o6Bt+qvQMqZuqNWtJkc/9PBepZK4It8XXgQBmOF70HbmMxzqvrMZK7k4VLsRQFhB6MirzG6QZQ23A/iDx4wVOGdSbQs74xwtFP6Sl3GSS6BfWDh1x8YwWM3KjnHgINWOoR7+YpC6KXoXBNecul1m50OWNQ+imBcOV18ARDvCTvoz01jPa9rOf2tbJHcnAeySeUswHs8QoJQaymCpr2+yzX9aHFJmi7U9girsZeqQTOLqraj22aF3FQFKTPA568QgCc0Z26K15voxb68cNnMm3D8oJBWplh9Lurg5ZavGWoHoCdMq58zQn45PxEI4Ku51sZcjoe+FgJ69YheU1sTKCZTaWo4d07lg7THR3PwWlrs2efKQ1djApBxTWtU2czg== 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:(13230001)(366004)(316002)(66476007)(36756003)(44832011)(2906002)(8676002)(4326008)(6666004)(38100700002)(86362001)(2616005)(5660300002)(6486002)(66946007)(186003)(6506007)(6916009)(54906003)(6512007)(508600001)(8936002)(66556008)(26005)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Te47eBb2t4YACqXdIK2tMCXC8g1hWjZWr02wH7eSQ2U9wqOfFHZtAah4Ma2P?= =?us-ascii?Q?wBbm0C+hwJLvitMKU8veGn2gKBeZ+1LCsEKIR1CVwyefw7x9e5QYveVp3qot?= =?us-ascii?Q?vZaLrfOMNDK8EgGRtvALJMukzk+fBlo1DICAtukER1GzlePNyZaj3nxRCu7i?= =?us-ascii?Q?JmMjLgtvuP3wPheIzPry5187glxc2IPMNOAUepUR55jEPDtAg0PtKqrfcfuR?= =?us-ascii?Q?nzEpGDZFUD2nann122wbUpDk4inbGDINXR+Qi68EANYECBOQDfBYYYkZ0c3Q?= =?us-ascii?Q?lNjcCbYWjpltykNu6iSVZJgKlb5QG6rpmXGEbShTbZM7ZApOYYz+eNXCz5LT?= =?us-ascii?Q?nEnIqFZDdzILwvlz21vFf53f29F3YB2ceblA91Gi+mqv/ZE31tlpyf+vL7JZ?= =?us-ascii?Q?sr4ma02uRB2jwF2X+/mzWw9rLsvsotbUeiWohswJLMg/3i5SKljeT12kfcVT?= =?us-ascii?Q?A7i+PAJsmNVmYmWFxRp0TnUITO0IWX/zKYAelPeLZ0OJxzx0cZBorbTGYGvH?= =?us-ascii?Q?IY1AGWhOuM2Wil8SSPIq6yTxVodfGl98oWf+F8xFGI41cjnJvXzqWSTiVZYD?= =?us-ascii?Q?7LHbSCOBthsfU4Icj+2IiwZjB2+JAz96+lLPp+R17ZIRBJNbeV1Oy5xGFo1X?= =?us-ascii?Q?HT7G39vTzfKCcPn3G725H4jIYVQrnh/9t+jnwk7ppVkpzZBZ3Bv30WukZFDz?= =?us-ascii?Q?ZWPsmU3x0RryPEkGoRFimer0Mt1MNQ5NeyJEDg022wO5BoBPzlBFwTADR6r5?= =?us-ascii?Q?57bZByl9o2adC5G2FCFxY5O+zdZ+lkdEM3xppfseSuxyFr8dYPVpcUKrYMCg?= =?us-ascii?Q?0r4VIUrC/t387t1Xx5JAwfHdqm+boLwohTKSHPXrXSr+Ai2A6ornvc7I6SAd?= =?us-ascii?Q?W/yYMBhQLBk7/ZNoWCHLjrrYWRWoWvYhk5oM0u0UJN+HrGyRRufaglPhneSs?= =?us-ascii?Q?+f1qAcjSb77Ha1QTnMpI/4i0L84pJO3oa4Y/B7b2MWIIYNu4FX/oJy/SFrzD?= =?us-ascii?Q?6P2Dg/Dv7oOKa+s1u0EoQmVF5sPUgxdeNl5hrzZN5q3ZsDTiNDB0Uny2myHk?= =?us-ascii?Q?JMrUVP4tP61xu/5mCftMHbkpYikBvvx9zbWBysP4MmjEhwRpL1drpL2WCBHD?= =?us-ascii?Q?xwNBidO731PaNCUBOQmhAHMu4Sso39maN5qbA5unGpkKUwdUt5CCU8128CK4?= =?us-ascii?Q?P6XUvl1nL7T9VFlKbefaOGjCEhtkxax/TTPd2Fn3Bx2yjTRJqrVSfbEij4rE?= =?us-ascii?Q?akUW/yXcLAXNBe0aW6PH2N4eEfXaKhYwi9SZiOghXrdOLXjODk4qZx9vx+pR?= =?us-ascii?Q?F6RmieGXTEnbA2AP5WpndbCwkHUjsn8JgNmb2LU/ejWfdCGpDUNI9a/eyhJ8?= =?us-ascii?Q?SK3t1KsRvbqTrkKaaScmaXHhUKxnfrWhRJOVKvzk7nHG+eUq5DgvkOdzxuSa?= =?us-ascii?Q?AjOU+BcMBXbLHfRI9TvV7ya/XDPsZtjJ6DvOfzQmDAqYeEDbd6R0Mhc3oyTd?= =?us-ascii?Q?C5LwkLkKFDX4nRhLm1a1KBMhTCcn82gwYeh7hZuvY8UVOFUkj7MTid2Yfp7h?= =?us-ascii?Q?319+0qZzulO8qDEcCYqcNU0xwXkgLoUiRwTB4RKZlO+fsWBXissXGAm0bDyZ?= =?us-ascii?Q?DBY+ZFIuZveR+Rhxm1Vr7U8RyZ51cnYB+IuI9SYL5fn1BnRyEZF78vcOmKzh?= =?us-ascii?Q?hmd5c/D5HZiz8c4IajBtkAK/QYgceUf41LIESY3U1sKSUNrSX4ptt/zdHaj1?= =?us-ascii?Q?p31ONUafjgw+RjwTtys64y3CQgdbFRA=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: bde4390c-605e-41c2-87b0-08da389574df X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2022 06:12:59.1716 (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: ZMGMMAs+yUTNMUas5ynnO+8eylyqyp5PKPP1kIUBEDzz8DlMGXsx1Ij/w5nzRWam+1NAt7w0TVWq6i6FZ+b26Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0401MB2584 Content-Type: text/plain; charset="utf-8" This patch implements the simplest MPTCP scheduler, named bpf_first, which always picks the first subflow to send data. It's a sample of MPTCP BPF scheduler implementations. Acked-by: Paolo Abeni Reviewed-by: Mat Martineau Signed-off-by: Geliang Tang --- .../selftests/bpf/progs/mptcp_bpf_first.c | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 tools/testing/selftests/bpf/progs/mptcp_bpf_first.c diff --git a/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c b/tools/te= sting/selftests/bpf/progs/mptcp_bpf_first.c new file mode 100644 index 000000000000..fd67b5f42964 --- /dev/null +++ b/tools/testing/selftests/bpf/progs/mptcp_bpf_first.c @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2022, SUSE. */ + +#include +#include "bpf_tcp_helpers.h" + +char _license[] SEC("license") =3D "GPL"; + +SEC("struct_ops/mptcp_sched_first_init") +void BPF_PROG(mptcp_sched_first_init, const struct mptcp_sock *msk) +{ +} + +SEC("struct_ops/mptcp_sched_first_release") +void BPF_PROG(mptcp_sched_first_release, const struct mptcp_sock *msk) +{ +} + +void BPF_STRUCT_OPS(bpf_first_get_subflow, const struct mptcp_sock *msk, + bool reinject, struct mptcp_sched_data *data) +{ + data->sock =3D msk->first; + data->call_again =3D 0; +} + +SEC(".struct_ops") +struct mptcp_sched_ops first =3D { + .init =3D (void *)mptcp_sched_first_init, + .release =3D (void *)mptcp_sched_first_release, + .get_subflow =3D (void *)bpf_first_get_subflow, + .name =3D "bpf_first", +}; --=20 2.34.1 From nobody Thu Sep 18 06:43:00 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp149245pis; Tue, 17 May 2022 23:13:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw8f6KO//aO6GaRoPh+wXyCZwEuLbMQrJCv6fmektNPELXn3HQZ2lkuiaUFhcRHCH198COt X-Received: by 2002:a05:6402:254f:b0:427:d23c:ac69 with SMTP id l15-20020a056402254f00b00427d23cac69mr23052152edb.314.1652854397409; Tue, 17 May 2022 23:13:17 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id h18-20020a05640250d200b00427ad731210si1585849edb.290.2022.05.17.23.13.17 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 May 2022 23:13:17 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5367-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=mimecast20200619 header.b=c8nAN07l; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5367-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5367-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 4C5562E09EA for ; Wed, 18 May 2022 06:13:15 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E47241853; Wed, 18 May 2022 06:13:13 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 AC1811852 for ; Wed, 18 May 2022 06:13:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652854390; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8iF4JmhbNlrw7eZpQIqhnOyzOBRqL9Hx8YWNatO6xaU=; b=c8nAN07l9QRxzfxmH/g3lwpkInyUHT6a5bAds2i26UGur5dgSSUxwakfdF8TuW3N0VbhfZ JVdGz+0b7AFbEMj9DP+Lxbf+mIeK/oS0RnLpDWoVCWepGgsJ9A3v5Vfcc+P6UCrKVikIiZ z2D1QaF/SOoHcqWj0EOmC4kJ14EJuWE= Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03lp2172.outbound.protection.outlook.com [104.47.51.172]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-17-cGEDmeNCO_qdqS9GmJKA-A-1; Wed, 18 May 2022 08:13:09 +0200 X-MC-Unique: cGEDmeNCO_qdqS9GmJKA-A-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QNNpdF+5U/0JmqyYxMPn9p5YUIjbFuE8HJAfTsJtDCY+8qhL9CSVVnYbK1yciFgN/ZqHbKvrJFTOnbkSTNKZIDrOq5gg7SDyndpeZJHx44TGmO6GtX0xMdYQ0PjLFWqso4wdztktCJXuA4Cu+hf9DIXLRDzPXtS8ZZqRaHV9VkLtLm2AMRCcaxgsvcEysEG5TEbd6GHDmBearq7M9XYR69IgTF7JzuguuoYatzSlDbssQdfl96qJZcar614RIcJxD0m2I3j2PZAADW1uVjEbNZQsQ9/6S0nqbddBrWQTg7HObjenM3vr0Dy557USPXpdb/zNY7n5GkYuurkkZMQSew== 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=6h/tWP+vF263sFBjbitwrKEoI6GCgUnP16e8Vli6kt0=; b=k6ajylYKmMunnGEW0NX/v7Gyw5AFk5GKQrQM8GxWwvIBdXJBaR6JpKl8dhM/rte7JbsyjDsfK7m1khco25iw7ZWiz79VSrlcFGr8Hb5L70AH3vnU8H2vn93/wFGc+Aqgbq7xJZO4W/XMgQ6OLPRHvF0nWXbF9je7LbOGUodtsFIB6CT3fsQVx+iBDKBV4KC6rd5bbRAIdR1Cuk+EAfCL7Nx2exITF9uwP5Glt19ldkDdIHspo13vkd9V1aukDAxOUTNWpEfF31TrSNPQKS5SyYMEX/mOxGnT2mZealpgM5Zj2z1XrFnr9Olc53EiKtYvTqd4EkJzci17n7X3mOzTdg== 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 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 DB6PR0401MB2584.eurprd04.prod.outlook.com (2603:10a6:4:38::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18; Wed, 18 May 2022 06:13:08 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Wed, 18 May 2022 06:13:07 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Paolo Abeni , Mat Martineau Subject: [PATCH mptcp-next 17/17] selftests/bpf: add bpf_first test Date: Wed, 18 May 2022 14:10:55 +0800 Message-ID: <04d7a1dc53ba95a0900ebcae266661ff97a4f6a9.1652853898.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0172.apcprd02.prod.outlook.com (2603:1096:201:1f::32) 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: 4d2587d1-3bea-4e74-2f24-08da38957a14 X-MS-TrafficTypeDiagnostic: DB6PR0401MB2584: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: wQUHKlaHzHuWBr4qIBEt+/xCEjW+DIB97bM8Yq/+qSLBEVljlVANjAM98sbRmdAkF1cQ2yS79Cmk7PzLUiXXnnv7KOtfGrnuxQlE4R1EpFm2dNqVTlVM8P7XyTsRigayzmTaHnXQnaefmU2kzWwUjA4e1WfE27GIF93eLi3T4QXFeTqXgsrjzTclw9NUyWvHIlfu2huc3/GhQVS/GrJYKv5n7hDkX6dSIjh66Y20uKlMp684T+sOh/l1xpYYocgmFEbKMz1ZRNmKwdaMCDJX0kw2qYrHbNdOT2bhC1MD3EflwnOjzStVcm+9q6hy7RyMFri1G39xdEoThw6A6zEoE8b9ppNudheb47ZxUJoZEDV4VxgWX4c7x1Rd/svlBHdcWStwXGlcnbvwaHCB+jl7SjAkew8677Q1yuHow0pmn5wrhjl4VvJApUDwomAPyGcKjPuNpChb8tK3sJzr2wzFUEXs+MUPMXjgHJUF9KdYqZ6N0Uplg0hRwbPVWUY9jLRDZ6OGbKpZyGRXQw8SOuuNpf/MvQ6wH35qwCEeEgICNWKFE+pAeJDbM1uKXVlWBThwA9FrJFj6fGvn2Z0WPkaYFd4ZS5t3bUz9HbIZgnRfR3K8co3GXodS06n1DgUUPJX/c7aRaWGuOZaAr7HUVEFK6ow8vpV5XLQKLyi+DroQXNTWUN/K2nG0vguHRw1uv8TT910ODWNQih+VUuRITPoo2A== 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:(13230001)(366004)(316002)(66476007)(36756003)(44832011)(2906002)(8676002)(4326008)(6666004)(38100700002)(86362001)(2616005)(5660300002)(6486002)(66946007)(83380400001)(186003)(6506007)(6916009)(54906003)(6512007)(508600001)(8936002)(66556008)(26005)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?E0Z04T500s04t02yc38Sqf8kxCI62KQQtfEBu8oMd9FAbixyZ5nu7ipotYNd?= =?us-ascii?Q?qPKJF+nkv4A5LfuVTQ0miLVwMu/2PGo2TDScawR0fj2PdS4IMqEUlD1A+058?= =?us-ascii?Q?hOAeHNvjzLU/yD8VDYU7pMzmplYY0BejqSLlH4tqKy7i238yAV7qDzYUKKQ9?= =?us-ascii?Q?MtcoFAqT6gSmXNKRANG7Q3fibSRMWkiQ7vrNfxcHoF+ITdo5FNm3N/LGNpHJ?= =?us-ascii?Q?lJKlRpqik3BdB9MnWPw+0gTAPK/l5ozw8Q2MJnQO3/tKZ4J/O0HSTbjSei1W?= =?us-ascii?Q?gzsPFQknv2xKOCDrfW5pyirSDodzlMDCId0Oc9b4pqUfuwOnCFD2xCoum3vB?= =?us-ascii?Q?yezxheomCokZEy6jnZdQikJfJgqcOWKDvqWyltOYoQZZ7fKnALv/dqriCLbO?= =?us-ascii?Q?klDt2yiKNKvjnbqMfydcCDrXXUh8NIq7fe8dX3sfundTWWYWn+0PcUsjjqF9?= =?us-ascii?Q?otuuLyNF5UUNm/FjU49LcNrS/ZQmnuhMJu6YTUigv3UNcM6812yY2yy2h6qY?= =?us-ascii?Q?quz9XrSr38QyH7UCit8yFN6f7e2LPM+Ec1mv3vA9Mq0WhHSLtCnt+4qcRfUC?= =?us-ascii?Q?NqgDdHe9NF/VyOz88AAMMruA7YPpzD8gyVL2Gw5DiYbZRWI1Y9eXIr2ceLuQ?= =?us-ascii?Q?uTT/aDSJnUx66RH4FTdnWJLMT+YgpfO9gtK8ss8MzRq6m2hOnbHzn3M0xJ+G?= =?us-ascii?Q?xbTLJeuhd0Ue39eg46xFwpTey9Phi1Mn3mqE4n8hv8O300sPoT72e4y4X5r0?= =?us-ascii?Q?YOKDjKKeqJ6VE8pKZa0DmqcO29QgEjNMYne/zo8fdsnR1oxX/GobHvuE3IcD?= =?us-ascii?Q?8hHY4EPP5HO33Wn8nBRObzv3+lk2/aP8fFHkzqas0jr4vq+uA7FlS5R5aTXB?= =?us-ascii?Q?kDyiAmHMukj8kWHvRGSxdiVM4rVdRdlJ4lT5JO9kZGGRkjcqivf7/Li5pTxf?= =?us-ascii?Q?+oChbKdJm3wFihHMx4+QySOSd0gflH4C1RslgWhP+bkm12+3MDEcvdSk65bt?= =?us-ascii?Q?1efL8pzFJHys5cfaVmyrBR8Aam6H7QsC3p7hbnjvCaBbTqaxyuSJZezmLFwM?= =?us-ascii?Q?FGpEzOWmByjRZN/8hUMIteYKcUEsNYiON1VAIeJOHTxsMMtPIM72XS3z+Y22?= =?us-ascii?Q?GzUIbkY3LQqOgquD7xYQ1OJLelDQYcVBwIdSN9gK4Kz391PSugQW8pOowo4N?= =?us-ascii?Q?zrSb4V1Yj/ijEjpGJFulItGRcFIAWltPCxiH+oF2DSO0kLerbMfOht8PG6PA?= =?us-ascii?Q?A5VESOraEfKh3hqA35Dp3cCsUIKkKOYDpQMFIfOgY2LwwVYxmSibMKhXXS8J?= =?us-ascii?Q?/lDgJIsFsglLZtflc9NXOWzuA4NY+u/jwPyz5YX6JmpaEUvFKD5eZQZ4FUFT?= =?us-ascii?Q?CEr2jZrWbZ6T+R8H8W6g5XWjulaYuHeIsVkUEVveOq28i1wQw6lY0nDLWpcN?= =?us-ascii?Q?3/AuTBrd2FjnVCtdEwnjCiR0cQxFGT/0iS7OkqalOCYkbUIMpCR55GFeI7Ss?= =?us-ascii?Q?2uoZxs7JmeHn+ZDoSfYukwZkAo7u28ZTX/Zt+zWdeugvTwtMFjjBHc13/Q+y?= =?us-ascii?Q?NEtbKFQUkKAq2hj2dvMUsF/MCoqqpoeu9iVJ8I+i42aO3nOgRfQDwldA/EPv?= =?us-ascii?Q?gojdCfHuhLNbBwn/onaJ/S9w/tzSfdpAUKPrNwFoe0bbCnV3AnMb/+aKSqsY?= =?us-ascii?Q?OSJ0ufPYWcGgKyoZDb02IXHBZ1G5DN+NdwVQUbvpFkxC7phpjr3i77AKRYqw?= =?us-ascii?Q?6rQqTxRRUBX/VN4ZqMgOdvpVgQD7XMM=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4d2587d1-3bea-4e74-2f24-08da38957a14 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2022 06:13:07.9053 (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: iBv9aPS8TJZxwl8dt/BoZe/oMy7MaiRqG/xN8j0waxXDzKpN0gUPDybls/eZbKZWSUfLIVd27hldSOXDPA2YYg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0401MB2584 Content-Type: text/plain; charset="utf-8" This patch expends the MPTCP test base to support MPTCP packet scheduler tests. Add the bpf_first scheduler test in it. Use sysctl to set net.mptcp.scheduler to use this sched. Some code in send_data() is from prog_tests/bpf_tcp_ca.c. Acked-by: Paolo Abeni Reviewed-by: Mat Martineau Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 114 ++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 257a8668ad40..9d37c509d3ce 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -6,6 +6,7 @@ #include "cgroup_helpers.h" #include "network_helpers.h" #include "mptcp_sock.skel.h" +#include "mptcp_bpf_first.skel.h" =20 #ifndef TCP_CA_NAME_MAX #define TCP_CA_NAME_MAX 16 @@ -20,6 +21,9 @@ struct mptcp_storage { char ca_name[TCP_CA_NAME_MAX]; }; =20 +static const unsigned int total_bytes =3D 10 * 1024 * 1024; +static int stop, duration; + static int verify_tsk(int map_fd, int client_fd) { int err, cfd =3D client_fd; @@ -167,8 +171,118 @@ void test_base(void) close(cgroup_fd); } =20 +static void *server(void *arg) +{ + int lfd =3D (int)(long)arg, err =3D 0, fd; + ssize_t nr_sent =3D 0, bytes =3D 0; + char batch[1500]; + + fd =3D accept(lfd, NULL, NULL); + while (fd =3D=3D -1) { + if (errno =3D=3D EINTR) + continue; + err =3D -errno; + goto done; + } + + if (settimeo(fd, 0)) { + err =3D -errno; + goto done; + } + + while (bytes < total_bytes && !READ_ONCE(stop)) { + nr_sent =3D send(fd, &batch, + MIN(total_bytes - bytes, sizeof(batch)), 0); + if (nr_sent =3D=3D -1 && errno =3D=3D EINTR) + continue; + if (nr_sent =3D=3D -1) { + err =3D -errno; + break; + } + bytes +=3D nr_sent; + } + + CHECK(bytes !=3D total_bytes, "send", "%zd !=3D %u nr_sent:%zd errno:%d\n= ", + bytes, total_bytes, nr_sent, errno); + +done: + if (fd >=3D 0) + close(fd); + if (err) { + WRITE_ONCE(stop, 1); + return ERR_PTR(err); + } + return NULL; +} + +static void send_data(int lfd, int fd) +{ + ssize_t nr_recv =3D 0, bytes =3D 0; + pthread_t srv_thread; + void *thread_ret; + char batch[1500]; + int err; + + WRITE_ONCE(stop, 0); + + err =3D pthread_create(&srv_thread, NULL, server, (void *)(long)lfd); + if (CHECK(err !=3D 0, "pthread_create", "err:%d errno:%d\n", err, errno)) + return; + + /* recv total_bytes */ + while (bytes < total_bytes && !READ_ONCE(stop)) { + nr_recv =3D recv(fd, &batch, + MIN(total_bytes - bytes, sizeof(batch)), 0); + if (nr_recv =3D=3D -1 && errno =3D=3D EINTR) + continue; + if (nr_recv =3D=3D -1) + break; + bytes +=3D nr_recv; + } + + CHECK(bytes !=3D total_bytes, "recv", "%zd !=3D %u nr_recv:%zd errno:%d\n= ", + bytes, total_bytes, nr_recv, errno); + + WRITE_ONCE(stop, 1); + + pthread_join(srv_thread, &thread_ret); + CHECK(IS_ERR(thread_ret), "pthread_join", "thread_ret:%ld", + PTR_ERR(thread_ret)); +} + +static void test_first(void) +{ + struct mptcp_bpf_first *first_skel; + int server_fd, client_fd; + struct bpf_link *link; + + first_skel =3D mptcp_bpf_first__open_and_load(); + if (!ASSERT_OK_PTR(first_skel, "bpf_first__open_and_load")) + return; + + link =3D bpf_map__attach_struct_ops(first_skel->maps.first); + if (!ASSERT_OK_PTR(link, "bpf_map__attach_struct_ops")) { + mptcp_bpf_first__destroy(first_skel); + return; + } + + system("sysctl -qw net.mptcp.scheduler=3Dbpf_first"); + server_fd =3D start_mptcp_server(AF_INET, NULL, 0, 0); + client_fd =3D connect_to_fd(server_fd, 0); + + send_data(server_fd, client_fd); + + close(client_fd); + close(server_fd); + system("sysctl -qw net.mptcp.scheduler=3Ddefault"); + bpf_link__destroy(link); + mptcp_bpf_first__destroy(first_skel); +} + void test_mptcp(void) { if (test__start_subtest("base")) test_base(); + if (test__start_subtest("first")) + test_first(); } --=20 2.34.1