From nobody Fri Apr 26 19:25:25 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4071744pis; Tue, 10 May 2022 20:39:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxBslgpDDmY3SOUvESKNsLe/u1CUuwG84BQqfvvSrN1e1M3l6sRc4UXKr08sbDPZ8v0L3Xg X-Received: by 2002:a17:90b:3ec7:b0:1dc:b008:3cd3 with SMTP id rm7-20020a17090b3ec700b001dcb0083cd3mr3175970pjb.226.1652240378140; Tue, 10 May 2022 20:39:38 -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 f7-20020a170902ce8700b00156a2cedc79si1167595plg.529.2022.05.10.20.39.38 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 May 2022 20:39:38 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5210-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=NeqWNds4; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5210-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-5210-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 B21FC280A69 for ; Wed, 11 May 2022 03:39:37 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CDA9115C4; Wed, 11 May 2022 03:39:36 +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 C122415B4 for ; Wed, 11 May 2022 03:39:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652240372; 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=j5d0FLqMutMpFI7/vESuqLwxQldK/SVmMtj+9v2VTSI=; b=NeqWNds4Gxr8ojMLn1MAjcWwLpV+qxcUf+C7eR94ABwXhYZGaZ+JPJajsOYyV7aaD5YJqm z9pfIGaYzRj2ohfA0DZLWMI59Kr2ORqKSPilLd7Hqww1OPw24yc5+GNNI+JADZ4O68Bcoq J0JJujgzPFh/FTLNs+KihkCs+9F8cKc= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2108.outbound.protection.outlook.com [104.47.18.108]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-40-yA-wzU3uM2KjlYmrvFqdlA-1; Wed, 11 May 2022 05:39:32 +0200 X-MC-Unique: yA-wzU3uM2KjlYmrvFqdlA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jxJJ8kKZgGHEgAAv8CkqhiVYKM56O+LX/OkFi9ejvSf6VuG0ocywZNDL9HGtkQ9iBNOOFDTNFdadCytL1e4hDSz/TKcqdDuv05CtrZSOPw4L69g1rIZUEPUPxQM6jPak+ZMn/mI8r7Z6hfasCgQm2iGApbdoYV/EvA9qjS6gqJb93B5XNfqGZqgywgmRkrJQie//Inq6nyWoHlfW+LE7aImsOvec36vWgTZOOA+harN1rah17ZFbAURdQi5RflTu6GOev9ZNoPouvRNDfS7kUPOLDjyY8yhI83OJIojHTGO1A+FQmDPCE6ob9j5PHWzVNjtYiu+B2Hj3NHeJzDDwlg== 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=a8sJOoISg62R8pYWZ48eyTyTtIV4KhH5l5TWybcrjFY=; b=LOlHOycyeTke/GLYQXy9jZgL0T25MhMeKEWKf2xWU11l5wsPxjuHcYgz3QNLAzhvzS8o9qi9/xhsM6njEhZiQnNsHRVWZj1nk95TUpTpYpz77VvCbMKp7b/lZ2EDmP+iqROTOGu9ToxfRBvt2r4/qcafjnUnbkVLxcGLqWyAyedmjyxhYHggw7uf2d7K8Z4VuS8gYyhAHek52Qum5C0CaJmTRiPSNZdd7TP4XCgc/xw5Kqgw0uOub4zq3q9RNcB5bWFPVgJVQP0DmD/+V5YgCIeFOlDZ/zwWmsc7cneCUCaP+nsEvdT+PqguIaTGZktCmJrojS1FOEMuj+8FOkGzfg== 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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) by AM0PR04MB7156.eurprd04.prod.outlook.com (2603:10a6:208:19b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18; Wed, 11 May 2022 03:39:31 +0000 Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7]) by VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7%6]) with mapi id 15.20.5227.023; Wed, 11 May 2022 03:39:31 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Nicolas Rybowski , Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next 01/15] bpf: expose is_mptcp flag to bpf_tcp_sock Date: Wed, 11 May 2022 11:39:02 +0800 Message-ID: <5a78577aee37847267b1f4d458de008604a17bda.1652239604.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR03CA0116.apcprd03.prod.outlook.com (2603:1096:203:b0::32) To VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) 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: 4230b3b3-53ab-4186-78d5-08da32ffdba6 X-MS-TrafficTypeDiagnostic: AM0PR04MB7156: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: 2ut26f0UVzz+ZED7NOxTbpWsGNt0TewEIQ5npbKfto/51C6MXYYdFS3h4CmqP6cv3IV17t+GfJQPoqUGrSRuOAXRi7ZCtrp2CS4SGbO31HHwBt7QjdxHfaPOKp/FJHqonWCDSlCiDNB7S7oG5Vvps4hLg6hqy8fes2kczhXti7wKRkJyw8G4/sTiETGM4V5W37AsTWMzDDk45GlOGgtVI2gcz33olXPz39YwXnGfq/dQT+k22/rzFOVpFSMe5EnWWjIehQu78fnpr5zh5pbewOJGdLclV70tjdVGflF1ftlsKcpFTTO2Y0vXyYjFeViq/3o6o2ymUz2Yxk21d8J4M6du0jmVnGF+lNCwcvWC3M+buBq2fqMipKg+EyvPmagvDa+nIBSuOThVh6JLRDW4DUjPF1aONMzmbq4lmaTPD1EwweK7rIZsCtR8N6MAV5uSyuFD2D5tHXQWxVP/y4JG6deZNCKk5r+IPErigIx48KfoFq9mWX1UMreHpX0112NzZQjL5IMCyQXvDA3b7ic4X9Mh3X3otdPgYQMpMB7Oo1ZqL+4eHEiRbEym7gBW/ggBkYFVedkiyJez/TUV20mZcB+TLESbHze94q/rI0lKFxcKdkv4WoA4ZKEc+Xi4fuOEeRoWOKtFwrsRQCyh/a2FF0OfEC7WtcWLcUvEpqGn+sihfYCjTqpz3sKJCVoJ5T/W0C+cBal0MwCqCwjoKezrha4p+e+EaKfdyZ0CLvpTSdSD9aiSvXeiP59nnSV5tN+wGIn99b5+Hk8pEi0PtQAluQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR0402MB3503.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(966005)(26005)(6512007)(86362001)(5660300002)(4326008)(2616005)(6486002)(66476007)(8676002)(8936002)(6506007)(66556008)(38100700002)(6916009)(6666004)(66946007)(54906003)(316002)(508600001)(36756003)(2906002)(44832011)(83380400001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2YyxkWNHilywl1OoShAnSZ+cc6qkCuZWPrR8ctAvlTLXoM513wWaA7jdrK3I?= =?us-ascii?Q?9i+oW2s6sYKrWTVVerUzJkEgrLQXfg+5LWvRt3Rs743ED7nXEf4ZB7b9mK7L?= =?us-ascii?Q?A54j6pKhQcWwM4mAe4cPuhyP7a0bZEVFf2PvdJeIZO1rzyLKz8w3ckloaLey?= =?us-ascii?Q?YNkpaVxKkKjYzyEjj1/LBN3DVFUrUz9qGi5HP7kh81BiDBriPE7IgMK3NGsv?= =?us-ascii?Q?zwaGYoKx211SlppxPthIvBE0TKxg3RsCxqJws2A61QaFMQm2hOytIBzpOpbT?= =?us-ascii?Q?QgFyM7/FuL0EGVkN9avSHakk1MAJIb9hiQc/MkNc6qHg1u96SeDawDcpnVaB?= =?us-ascii?Q?XARXZpwZmZnN2w0s9UMoIifOi4OhILWXKEezmHrGYs5/up+9pav9HRPm5bVe?= =?us-ascii?Q?VLZSu5qWTzK9e4UEixT9+VtsrF6GD5mpANzay8Ac5/YCnQN1ExBHikrJ7mwm?= =?us-ascii?Q?BFHwJRPla5xEBZGLr0A3G/KKR1g59Qb1UqqoGiBr96B3ZGLU3oMapPphEzcV?= =?us-ascii?Q?4PKsPQUy/5dWi4yrLmTLu8huDoL/wSwCV1uIdJvPGDtINmevEmtdP/IGvE0C?= =?us-ascii?Q?o8gsoJhSkBVzJRyqnoi7GOzw9pWiHFRxWcNSnx9QQ8OiYAGyZ9C/qi56SMU2?= =?us-ascii?Q?L/pUVxx0AJNhZZu5dx1MgXHK2PndyatKj2rz9V4brAa76+osxcpCDpengGvK?= =?us-ascii?Q?fT6erh7x8nw2+NjlqowvDfuwX579a0Q5XY9KiV2115UWAWzrkEqN0AE5f3IS?= =?us-ascii?Q?1Z3lHhSZklTZW8p74UfB9fqbrygWZ12b0YLpVu1f5KpRIF0B+5fTdbuAmQ+S?= =?us-ascii?Q?zJA7SYbCICWwi7ayF/fX7kkkgZDMk+U4yazDzfTLartYb4HXk9OGJKK+epeV?= =?us-ascii?Q?5/Ndpi764j+kP25/sX67PT771qYlZC54qTmRU76vgeRlq6eOoYMYmt75ddcx?= =?us-ascii?Q?+xqxg6m2XaQu1EodFReQqi1gbLTPXZhwmYPoF1dP/s8E01nLOtzCGATPELwr?= =?us-ascii?Q?SI77tt84/j5AbkZP/8DdVNaknMH2MwlBLhOmBvRWOZeUfkfxuxixcy8ppUNk?= =?us-ascii?Q?aW1pX3fOX7aJAeha3W1WSbFO4ghnPglxrExYnQGPIODkUaiJH8lxGE5FQoro?= =?us-ascii?Q?FQDY7X/x7E4VhiltMn+r8yaenDmgGvpmJe+4mZ/2Jp4l1UrCRfZgO09YABBe?= =?us-ascii?Q?ph73L0F9r9YH8r4bxPYMhYitLcA3h4d1fmdCNwuu1dXpgbJvjr1xBTz7p5Wd?= =?us-ascii?Q?wXsZRlzR2nIJQNVWzOHkPXPFlbGPeP5bEGI69uK5/2hYmhHjVhpWGVYcSIj+?= =?us-ascii?Q?6AZ6uR18clMba3KBd3ciSauXTDUjZq64r219pa/5CcTaPch0CQ73W7gYPYLk?= =?us-ascii?Q?3ECIxbGPhTbCC/hbwfaq9QhCkhqIUlifpzc/MTdHaDBGbfYOgCyWQ7RA9FlL?= =?us-ascii?Q?hXj60epTU6ucW+DaqZNm1HY4ho2kbGwx15VjYSZV7Z5FfoPiWqssEzfRn+56?= =?us-ascii?Q?pQHngZ2HnUC5LOj5R0xQLbXNNqc26qiawtrY0+X4oyF9TrwzXFjgmGhMKWvc?= =?us-ascii?Q?0pl3QXSkYxydVgZ9GtOf0s3mVtLQvR5qDc1TmS//79/QaGsHiSVJ2ff490xL?= =?us-ascii?Q?GAqmqfwa6vlh++m/x+ZwitE+psEVM5grp+B7h8xt3HIsQR623DuS+cPMIdZs?= =?us-ascii?Q?P1Olpe0H4D2aKPqf3t3DnQTJNATbAEX6qDwEdP/LAOwvtlah1/ORQveORVRu?= =?us-ascii?Q?XR/CWC0TbHmGSc8vH+Z8A/wD21ljZCw=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4230b3b3-53ab-4186-78d5-08da32ffdba6 X-MS-Exchange-CrossTenant-AuthSource: VI1PR0402MB3503.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2022 03:39:31.2328 (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: /TjGO0nSvWei+/Iuo+21zXadH7WKmuRyAg9yUTaCuYidxNngusWutIcZGjnEzzoW+AiC+Z0qKnpdQavSyDSfIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB7156 Content-Type: text/plain; charset="utf-8" From: Nicolas Rybowski is_mptcp is a field from struct tcp_sock used to indicate that the current tcp_sock is part of the MPTCP protocol. In this protocol, a first socket (mptcp_sock) is created with sk_protocol set to IPPROTO_MPTCP (=3D262) for control purpose but it isn't directly on the wire. This is the role of the subflow (kernel) sockets which are classical tcp_sock with sk_protocol set to IPPROTO_TCP. The only way to differentiate such sockets from plain TCP sockets is the is_mptcp field from tcp_sock. Such an exposure in BPF is thus required to be able to differentiate plain TCP sockets from MPTCP subflow sockets in BPF_PROG_TYPE_SOCK_OPS programs. The choice has been made to silently pass the case when CONFIG_MPTCP is unset by defaulting is_mptcp to 0 in order to make BPF independent of the MPTCP configuration. Another solution is to make the verifier fail in 'bpf_tcp_sock_is_valid_ctx_access' but this will add an additional '#ifdef CONFIG_MPTCP' in the BPF code and a same injected BPF program will not run if MPTCP is not set. An example use-case is provided in https://github.com/multipath-tcp/mptcp_net-next/tree/scripts/bpf/examples Suggested-by: Matthieu Baerts Acked-by: Matthieu Baerts Acked-by: Mat Martineau Signed-off-by: Nicolas Rybowski --- include/uapi/linux/bpf.h | 1 + net/core/filter.c | 9 ++++++++- tools/include/uapi/linux/bpf.h | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index 444fe6f1cf35..7043f3641534 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h @@ -5706,6 +5706,7 @@ struct bpf_tcp_sock { __u32 delivered; /* Total data packets delivered incl. rexmits */ __u32 delivered_ce; /* Like the above but only ECE marked packets */ __u32 icsk_retransmits; /* Number of unrecovered [RTO] timeouts */ + __u32 is_mptcp; /* Is MPTCP subflow? */ }; =20 struct bpf_sock_tuple { diff --git a/net/core/filter.c b/net/core/filter.c index b741b9f7e6a9..b474e5bd1458 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -6754,7 +6754,7 @@ bool bpf_tcp_sock_is_valid_access(int off, int size, = enum bpf_access_type type, struct bpf_insn_access_aux *info) { if (off < 0 || off >=3D offsetofend(struct bpf_tcp_sock, - icsk_retransmits)) + is_mptcp)) return false; =20 if (off % size !=3D 0) @@ -6888,6 +6888,13 @@ u32 bpf_tcp_sock_convert_ctx_access(enum bpf_access_= type type, case offsetof(struct bpf_tcp_sock, icsk_retransmits): BPF_INET_SOCK_GET_COMMON(icsk_retransmits); break; + case offsetof(struct bpf_tcp_sock, is_mptcp): +#ifdef CONFIG_MPTCP + BPF_TCP_SOCK_GET_COMMON(is_mptcp); +#else + *insn++ =3D BPF_MOV32_IMM(si->dst_reg, 0); +#endif + break; } =20 return insn - insn_buf; diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h index 444fe6f1cf35..7043f3641534 100644 --- a/tools/include/uapi/linux/bpf.h +++ b/tools/include/uapi/linux/bpf.h @@ -5706,6 +5706,7 @@ struct bpf_tcp_sock { __u32 delivered; /* Total data packets delivered incl. rexmits */ __u32 delivered_ce; /* Like the above but only ECE marked packets */ __u32 icsk_retransmits; /* Number of unrecovered [RTO] timeouts */ + __u32 is_mptcp; /* Is MPTCP subflow? */ }; =20 struct bpf_sock_tuple { --=20 2.34.1 From nobody Fri Apr 26 19:25:25 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4071788pis; Tue, 10 May 2022 20:39:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwg0WtgajkmbJZkFjWgs4+jArvLme/q8OE8PVXmUJvrgBkg+QBpc26dK6DcNXjfZMZmzbRf X-Received: by 2002:a17:903:1107:b0:15e:f451:4034 with SMTP id n7-20020a170903110700b0015ef4514034mr20225497plh.3.1652240385823; Tue, 10 May 2022 20:39:45 -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 u12-20020a63600c000000b003c646046b01si1291483pgb.449.2022.05.10.20.39.45 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 May 2022 20:39:45 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5211-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=MjVRaT4t; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5211-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5211-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 8A00B280A8D for ; Wed, 11 May 2022 03:39:45 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8CAE615C4; Wed, 11 May 2022 03:39:44 +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 266D215B4 for ; Wed, 11 May 2022 03:39:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652240380; 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=BuHI0gGsVN/rSgifaw34VkEaTkPb7irTtsRNAZyp+RI=; b=MjVRaT4tjbh8YkP4Z9WKLKMXDvVTK4w4DrjPFw0e4JLGvUIi6ld2NmgwFCXGvaHPePe0fG TOrXLRurBoVuZO1cbOxoFkAcN0iM/Yc5h3fMTdxt27VQ7CDMZn1YvNKrtzwpLuzX2zimMt AaNWqaSz/gHLRndrWPiTrmMWw2G2If4= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2105.outbound.protection.outlook.com [104.47.18.105]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-10-1uczR1xkPiKu7vvifIDHZA-2; Wed, 11 May 2022 05:39:39 +0200 X-MC-Unique: 1uczR1xkPiKu7vvifIDHZA-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mI0HT7EMX81M6i+QKkHipPH9O8eTLCjL0vzpJIJx8j/ZbIs7zASIdpQlos1jhuVDxJal8lBzh67AJUHXzxJXrN54aIiBlUUU4nhj1mTyktjfhQgMlOvNKkWrrZUOLpBhCGlBRVtErtmwidH+eLdy6RvXUUrUTvZA9S7QPw0sWdRTORHUUMXZiRnsmEliJ+fxlZVXp2w1xLdONIUYhQ/gn3BhQ+slmwlfjv16/rFkGMGf1Yai3or6h/1xVIZBxAn8RLYwk2aa9lUnkC7FT4fi9Ua5AU6Kw2+Gnl+eB0Xzlu3+H445SxNXd01EdgWmQ2FKxFwatGHyGAE4jkSc/CeAZg== 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=aAaaqp5lXAu/Qsd4rXbGY6UownS71onl3rE6p0mTtnA=; b=j7c33gcrQawSpWkMBy0ucDoztF4u+2rOp4XxbJeK3VXdFmIX0q2PVmMJnNpOOz59SN1xwQUdauaiLHK/trRU5ntICdU2nfT7oCzjZ1ikI4XHc9aLeVq2X7w8de0gymR6PEuPBkUC4TJ85QZgGV00wQyc/+copjny+Ea8ObLPXRtT4qgF72dAUvXJuj1xNhHSz5CmvKXXeo7cx1snHnx2aeLk23LEgTy5aoy6ZXbSwK1BML/uZLZJMVibajyZykUnwzNUney7cSzGHfMYC9G3p9KeCMYhNuVBvTHwpOfx1wsFQjXgKjFVkcg3hKStfpbP1MmOJlnIS88kZ6wKCaAhhg== 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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) by AM0PR04MB7156.eurprd04.prod.outlook.com (2603:10a6:208:19b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18; Wed, 11 May 2022 03:39:38 +0000 Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7]) by VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7%6]) with mapi id 15.20.5227.023; Wed, 11 May 2022 03:39:38 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Nicolas Rybowski , Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next 02/15] bpf: add bpf_skc_to_mptcp_sock_proto Date: Wed, 11 May 2022 11:39:03 +0800 Message-ID: <014d32e98bbf9c7fe27e070e9897d82eecf98df0.1652239604.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR03CA0108.apcprd03.prod.outlook.com (2603:1096:203:b0::24) To VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) 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: 8a0e4fcf-5376-4fcd-1e56-08da32ffe00e X-MS-TrafficTypeDiagnostic: AM0PR04MB7156: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: LN8rcxM1cHJL5kX7vSA9VnRVZSKxE3IJ/g8ERLTd2FVCicecYWAyoxQm6KdcxIdav1f68sZvcau8cc/AG4usH9LHsui622oCEy06Uuk8RE1+3AiUsxCDY5DLOqgzYOWxcPSJsEnjCXGKfHFWA7JHTmm30ysyK7xLoAJ3bo6H2wKdld6E4aeb9BaDEfp1lBWtzSIGbBezV62UonnMBNaBJ1vfgVrhR89VeR2okl3AHQWrzn7RmWLMSO0o7EhrFLKXFoHw+k5odc67eOOSqml52ezcwGhOA24puNd0K5yw/v2zFXXtJz2XcLmgcr85AfjUuY8ZVSO1DPapKwscv1q9W2n8KlDV/mAe/9vSOBoKIxuK4wZ+0c60Wyk5rQyzjZL2Hb6BpdkFpyhneP/fPDcLFg3ByIUWpxRFu8W6OrMYgPqYf9i8rJ1P1oh0+Q5eCu7mQvg2kWnT4NbFGo6f0pM8n7cZKHbV2STPrHgQ/RP7teyT1cC1ZBfnJ998xsBhfiUzU/b1P+XcdE2Ua6qDI1j++EDgDXsa3Snz/ckbH44TO6WZd3CwGysUmoUH1cjH0oNiHgguJhRFGlOoecFOyH3Gu7oJKKAM/LglkS2TZtfiYdem3eI6dRlNAoBwVWxW5wMRoQYlL5th4Y/g+wL3RmTZ9iVCpUsqvBgI7y18qcIFm78p6czcXUD3Jr5sInb8acPy X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR0402MB3503.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(6512007)(86362001)(5660300002)(4326008)(2616005)(6486002)(66476007)(8676002)(8936002)(6506007)(66556008)(38100700002)(6916009)(6666004)(66946007)(54906003)(316002)(508600001)(36756003)(2906002)(44832011)(83380400001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?axuSCqWcokAurjmzw6ebbejkuoTuaqJ6qWJu8OY+0wlq/UKzIfGu/d7a6gMY?= =?us-ascii?Q?WrIJiZWzxGFMJ/JM/TwgiUU8N9fjhn6vTjWEzPhRSAw7OOzOzouiz6i6et/F?= =?us-ascii?Q?o2rxbK9a+D4+poXoFfvhPHKGx8tHY3d3J81WHajYW7wHOy35dbqsLHDbYrtF?= =?us-ascii?Q?hkfM4wpMIofzgryuegY+rmOxt53/Se1cqI8e+z8eamA/0+HxDOvIWwQyqjh3?= =?us-ascii?Q?ogU9sqgwt6xo4cOXswiFs5LxF34ZnPZyNOsraMDt8EhzH45N0X4AFzMFojUu?= =?us-ascii?Q?Hny4Fp2n+LRmpRpn8OijapPI+7E3BGg159c/XLiULtA02rtDR9MpbX1iapSU?= =?us-ascii?Q?Opa8/gOw5TIYL2+EBWhvgnIPjBCCpeIRudNs0cbsF0Cv+p/N8gR7HRZo4kPr?= =?us-ascii?Q?SOImQ9MIVYdmsKBjE3GEQ0VFfzhGR7kVpnQ9c+P1EpA5T2uiuo6IFxIgzn8H?= =?us-ascii?Q?BATc3y3wVcoirgwrzHZtw4tJ4UzAVaswK7RCVYwq64pgQLNkE3L58/5P5nfz?= =?us-ascii?Q?MMRp5cL8q2ELp5pEfaCx8D4BkeLIVXhXfTRwRJXLNqgIsAgeQK+JBZCJnP1u?= =?us-ascii?Q?InGsEvkzK4YsAffiLZseILtCA7GdKMMQ8pHsysUFJa6VkkcuWttGmELUvzEX?= =?us-ascii?Q?kGLpKBnFI6L78k4hMS5baJN9OLnHUP1xi0bmmnlMwj5XKYjQ/m0uiBDx3u68?= =?us-ascii?Q?5isIwv5OU1jtU+pwPjfl9DF4Qt2wit6xxRCD0ptoYDDx8SzKyLCYorYh0pij?= =?us-ascii?Q?CO+faZmSjMcSe4MegeXDcOgnOsQeI5D1PuYyjIKkwJTDpatWx/1Qsh9eZogK?= =?us-ascii?Q?1o5ukZFDLvoCxfsYXQ9haVQ+T2gIwQ7nImQVr2fU3ITHXrDoCeHyo2qUrApP?= =?us-ascii?Q?HSQTyZwBg/gaLDmbBd8K7UHjR3ZpM4IugDKfDxgD95oK9cS0HOMSxLgHC5NZ?= =?us-ascii?Q?uJ5F5b0PMiZNPYoN8QvYe65mVJ56Rppcjv3oqttjcoANZBb5Rt9fleiOY086?= =?us-ascii?Q?ioRzlngimY92ncwQkwe/RiKq19ct1MdZMtX3vcGo5QwjhJNRZTy7ohU4ch1r?= =?us-ascii?Q?xK8zTLZ1fMgUGseDeahpgBJ/IcI8KmzscydfPZVD0PE8lBW++xeWHWEwREm3?= =?us-ascii?Q?LSC9gpVSO9ZDr69L0CTwL06u22AS8N7kI/nuQ1n2HLmNHoYZBPcQlfJU3g8l?= =?us-ascii?Q?Q24WtTLJU6xcgeg28wzmRUxjeS30DnREbrAgJSz8ir/Sot7+d9pmXejK870A?= =?us-ascii?Q?Plvg3ElMobshozy55Gfv+5ZqmweknTwxuqXpdzHI0Nrg82b5pH9GyN2Eo7hi?= =?us-ascii?Q?iSoP+FS1473NLA0AoIkMe6wE4rx0UtX0dMr5coYnvTSk8cxQTy9gUUFFldUd?= =?us-ascii?Q?hmHAYChy0m0uuuE99ppqf/aljwHAGypYJsuY6EJ5ZjkwXC81qMLWUdnu3Ybz?= =?us-ascii?Q?JqePKNdL8cz097gs7TnZnxCpOTxPgehmG0KZ6p+4rwWMUYlPENvqdwk/jSCC?= =?us-ascii?Q?wlavyXnvUoW+Af1d3QozYXiH/w6KNmYBNU6Wgl+o350A+KYXwPRLT2ga8KjO?= =?us-ascii?Q?Sk4f29aDvkWiA9eEg57Ac7eHChr5mQdhK0zwVIAMTjkfK11N1yAmkE0KG1CH?= =?us-ascii?Q?nQwtHGMh9rQ09kMrGlbf6DwRCu1RTU5hxoqE2szGV/RDsSf53DwmbX+q5wmi?= =?us-ascii?Q?FosdnsczFJx9yid8/jXDfR1+zGmi7V/I1BWvgxgIMnSR9b/s6au1U877z0YY?= =?us-ascii?Q?TIhAHz4MK4MA2zH35GmoHwS04v4lFCY=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8a0e4fcf-5376-4fcd-1e56-08da32ffe00e X-MS-Exchange-CrossTenant-AuthSource: VI1PR0402MB3503.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2022 03:39:38.5604 (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: IH7CKTmQxh3uPVdLnW593dT5AQjBjGpCBg90UjjaX1JvZ7toh/QLZxb4flertueRfr0KjLIG9sMNi1RIFTRytg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB7156 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 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/net/mptcp.h | 6 ++++++ include/uapi/linux/bpf.h | 7 +++++++ kernel/bpf/verifier.c | 1 + kernel/trace/bpf_trace.c | 2 ++ net/core/filter.c | 18 ++++++++++++++++++ net/mptcp/Makefile | 2 ++ net/mptcp/bpf.c | 22 ++++++++++++++++++++++ scripts/bpf_doc.py | 2 ++ tools/include/uapi/linux/bpf.h | 7 +++++++ 11 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 net/mptcp/bpf.c 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/net/mptcp.h b/include/net/mptcp.h index d4ec894ce67b..4d761ad530c9 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -284,4 +284,10 @@ 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) +struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *sk); +#else +static inline struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *= sk) { return NULL; } +#endif + #endif /* __NET_MPTCP_H */ diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index 7043f3641534..56a66778dc28 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 b474e5bd1458..b39e4af9a0ec 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); @@ -11279,6 +11280,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); @@ -11321,6 +11336,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/net/mptcp/Makefile b/net/mptcp/Makefile index cb7f53f6ab22..6e7df47c9584 100644 --- a/net/mptcp/Makefile +++ b/net/mptcp/Makefile @@ -10,3 +10,5 @@ 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 + +obj-$(CONFIG_BPF_SYSCALL) +=3D bpf.o diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c new file mode 100644 index 000000000000..535602ba2582 --- /dev/null +++ b/net/mptcp/bpf.c @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Multipath TCP + * + * Copyright (c) 2020, Tessares SA. + * Copyright (c) 2022, SUSE. + * + * Author: Nicolas Rybowski + */ + +#define pr_fmt(fmt) "MPTCP: " fmt + +#include +#include "protocol.h" + +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; +} +EXPORT_SYMBOL(bpf_mptcp_sock_from_subflow); 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 7043f3641534..56a66778dc28 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 Fri Apr 26 19:25:25 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4071827pis; Tue, 10 May 2022 20:39:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy8DwtPHACefHeyKPSDqEDMFG4BI8C+Ns8dsGijW5caxDOzolDerKxCz2ODKg9EAeztpl2x X-Received: by 2002:a17:902:d2c9:b0:15e:a266:6472 with SMTP id n9-20020a170902d2c900b0015ea2666472mr23018512plc.45.1652240394117; Tue, 10 May 2022 20:39:54 -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 z10-20020a056a00240a00b004fa3a8e00b1si848420pfh.360.2022.05.10.20.39.54 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 May 2022 20:39:54 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5212-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=cuVdZFpu; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5212-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-5212-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 CD8D5280A92 for ; Wed, 11 May 2022 03:39:53 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C784415C4; Wed, 11 May 2022 03:39:52 +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 1B8C115B4 for ; Wed, 11 May 2022 03:39:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652240389; 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=cuVdZFpuu0VJEq6ps3BHxCFEc6Usxe95C+Uoh6U7dW8YOMBpvX8onJ/TSg/3uXlXYts0aj FBpIvYMdkO8hla/yslZncJQUMkFYRDFb1bSKr9jfE6ZhpgslTlgWc5DzG6yXp9AluGpx7o zQ1HveUwnWlTcRO4k1QwhItPwa11LBA= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2108.outbound.protection.outlook.com [104.47.18.108]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-20-SQI5uDT6OFWP-omGSUN6eg-1; Wed, 11 May 2022 05:39:47 +0200 X-MC-Unique: SQI5uDT6OFWP-omGSUN6eg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NppX8Vp58Pux5LsLoYfiKEKxmT+IZ0ne4G0bHBrDyD2wivaGDLyYokhvEkBmTvSGLaOhCTxnkvnWx3UtqldtuPw2j/uwJnfE+bskTzhbeid8tCgjzdxkUdkiFgpaQzg9AF5x9YYox7CUTOT3q/A7D2+EHfyHeYLNJxpsTkLrzSJLJ+AU6Ory1r6W+0aKSBihZZULYNPmHG6KvOjzeLeymAJC9dBy7/DpXMJxbzqpZsBLsCdklDHzIA7/a0maxvclvl/z+y6HYTnqACpOU2PeWkqbNpoC+MLCe/sk/ZtkhFDIXyuvdbhvQDaaKaAtvnR4o5kTBWx8me+T9AUpNeNATg== 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=jivgZpN2supkoZ7FiAQKSH2ivtUabTFEqLGLRLcEhAIokgTIA+aOtl68QPVfFh50oIXfw7b/N1Qr1OQHo+RcWeWeOjgl0MbZvDsFop7LWvH4C1T2T9SILqMxSobw6UTt+Sn+N5MpdiuW/utTjHIu5lD7KW2LpbhES7F6Ffthoq0hkq/hfrJ3Eqp/+7K3WQ1LLVOOd926HSqYPIT0nTutFxtigqaE8xlAvDImzk/vL8iLOaCNBNNE7kYkP+uD18w3mXKrgcNIMsXnpBl/vsg/C5Dof5udL679HUTUaVSCLmu6m1of0m4Rn/sa8iWlPnMboPuweB/soKHok0hjxXEQXw== 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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) by AM0PR04MB7156.eurprd04.prod.outlook.com (2603:10a6:208:19b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18; Wed, 11 May 2022 03:39:46 +0000 Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7]) by VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7%6]) with mapi id 15.20.5227.023; Wed, 11 May 2022 03:39:46 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Mat Martineau , Andrii Nakryiko Subject: [PATCH mptcp-next 03/15] selftests/bpf: Enable CONFIG_IKCONFIG_PROC in config Date: Wed, 11 May 2022 11:39:04 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0163.apcprd02.prod.outlook.com (2603:1096:201:1f::23) To VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) 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: 9d8f27dc-b248-4ed9-349a-08da32ffe4c9 X-MS-TrafficTypeDiagnostic: AM0PR04MB7156: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: Q1AOb4md9TGFUp/e7N49YYJP/5DQGYq8TrKbxH2OqGk7xu+XruTdX5hdO7wByqb3pxBknj8YaWRAQ9Fdy9qQuD6ICYPYUXn+zPz4BaYEMnN8TErD9wzVUDkx14Ji7quG23CuF9ewnBkSioTFzUInR+ZeoIvYKkzebdaSB8qh91eTo6mpYAsS8xReZp1iF1DlwDDLMkwQoqhUy4xvYVCvon9zHfKZwM9xIEtQsYBrxa3k73K88DOQ/BXzUIdFSuIUmNLwKMiwNS89a/jOldPm4m4ZEp/VcoDVmNm6R5Jn+85FDfGWXGkJYaHOTn3tylVs/TqLgU6PUcBuZF54A1lw0Ht07QCsBD8h1Dk5INcvHTEwyBxZpX0nxMyAd9pkPZfAi61eYtw2zsXR8oQk4aAyQoDU+TIE6tL953DMfM/0UYxKT7oSGBb/bbKuuHjcunwbeP1eRRuQoILhkaKbS7QEmVMRtcWzuQnaugI7hJwA+7KbPqF7JTJ3sqDv18L76d2r1vw1F8d5DNFwSXAArTRnza040CZBuTLcqjFM6FwJ00arN8b1WJ2rHwQ73oGNMEuskz08ht1f9zpIUP+g0SqgpVJOoBN/mmrd7RoLO4X4C5F6viLaQIN/TgwsJP57/TuLRvUy5neoWOKbVMBFldg0AcuOUJWFAaxbop6HhInjaRUfRzryrl8DA5jOIp3a0P6hYjXgAJhEv97/KePcN6GYJg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR0402MB3503.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(6512007)(86362001)(5660300002)(4326008)(2616005)(6486002)(66476007)(8676002)(8936002)(6506007)(66556008)(38100700002)(6916009)(6666004)(66946007)(54906003)(316002)(508600001)(36756003)(2906002)(44832011)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?MwJDoEVxe/SVsd9X2660EvZc2GWognImZ8Kat40gVUzt/Sg/Ii0YCbN6Wb5y?= =?us-ascii?Q?igS2F8HLBmw6oiSB49gyNXOVo5fBPbSbMZ/MTPTXfDdEsK9u7bM2vi9x6hBN?= =?us-ascii?Q?QZafIZX3N9iJ+4dKxkK343VN3S3rwnHw3anne4foav9kUor9+VKsOPG5LTEm?= =?us-ascii?Q?LpQfvsmSWe+3GL2YDS1B8sklW45R21zXFm307R4Y5bOcr3bJp0yDxOwkjzbP?= =?us-ascii?Q?o7iVibcsI2UiSGgVzgLzNbDRarmuuTy4tKBm1NYzciqbP+Rxi6cwQw+d6lRM?= =?us-ascii?Q?W1hheLPVZPlbaiyOw5hmjgihjPbfoQg/nxcPF43et5LkkWV9hTHoZQWpPxck?= =?us-ascii?Q?t10D5HZJIZNiUAsQIaDooKXgmV+GVVNGgQftJjJ7jeiarTpzSDfsKCmbv2/g?= =?us-ascii?Q?fwxxchP0GZpp0+zQinHS6ogQoKCs2CxeCJiYPDLbmyrqJkmyx1la+7YbckPR?= =?us-ascii?Q?rNewcUf0CpAdBmaYY8mtJ8MgUkepbvJnorZXWWprOCu9jilt/hhjR+5xUpQv?= =?us-ascii?Q?alVW21unel5jxNd3XoW+fZJhWTx5hlpdnLt825RU1oMMd6F9en+yP52n8zSe?= =?us-ascii?Q?qWYUcWCXsiuaVwwSOPTQSDBjOU64LqJmuazhuuFujRLPnHawGBrYwyTHyJUe?= =?us-ascii?Q?B3foLxOf4SvZ+Vo+03i2sX6XbJGXcJUDFSotgWtsTnvj02dBzBbom6Lz7qD7?= =?us-ascii?Q?a4j8ipYxdB5h7gCLRE5+TX/szKSOrOuWOWKE+N4hcrlAkP1CSIH6ZmIdyIsk?= =?us-ascii?Q?MBkzEs1822E1mxNu8L3G0v706D1Q/ejlRWCrK7g0QWHCJ3LgMVaoEHmuc9nM?= =?us-ascii?Q?BtpBb92O5vTVC0eR8c24hAvPVNE2mPp+5sloLk+1/gCjTXJOIOBCi8ViXHZJ?= =?us-ascii?Q?qY3xXd+l3LPpOzGLKZ/teT7zXC/EyJCO+3pAKWkxlCKIBYLHQRRQEz9Sb4NX?= =?us-ascii?Q?3XQTJTZ5eeB5Uj2cVhQttFJmarDlOguqf1XQVeHe+gG7pDIc3/TgDOhF8EYl?= =?us-ascii?Q?TCZsRzmpOzih5RCPJZKQnUTc5kwoEhjev5VUqVkSY5cEPRI/1P5Hw8US62qq?= =?us-ascii?Q?jqyC+e4lSHyAfWd737XrgiV9+E4GTnIvFcdNjANVBDO0/0aZJAclLiLIP4du?= =?us-ascii?Q?zrFIsjMKmHl7n7D4QUYdk6MG2KDrezCg94qzQ4BmNu0Kh3vJh03S7/pR14Qx?= =?us-ascii?Q?93OwVkDClzXDcs79icxw7CxiCwAMgGaSVYXdsPu/qlNSnIVuV9VSTC+aVrBy?= =?us-ascii?Q?nqRWq9ZaQULNM5unB1BnspkV6eDj07OrLYaT4h46h7FuR2E/J5ehcmxYMgFF?= =?us-ascii?Q?3kBiIOxg73XsNOj0n1gQi3Zk6bJKkpVwjEJbVTKYBykUbBy1+ydr/FrfKdmR?= =?us-ascii?Q?TKsmDcJTEaMR/Z7XBPTYSfmSDLAqjo0GJBfXQEqMQhkC6Dx9M5EUga1whRzE?= =?us-ascii?Q?1mwH3PcOwlYeIAJMIyJBWZgXTgO/wTlvkNF1lGVTmvIqmBV6AJjYvQ9CC362?= =?us-ascii?Q?v7dtlABXL+tR1JtklsdsLtz7w5B2EE+Wqia7T1/zPkcTt1tCkxuNv8cLpNmj?= =?us-ascii?Q?xf+sWOrsb0CbPNta5ySQ/VQx0Nbfaep/o3iCjpmzs01hSJleTd78xNWdTwHe?= =?us-ascii?Q?U4H008uOPOYlXTpJtfZS5hAQwCcaiLWPMrAcqtxOVgfBw9E+9trnVQtEd6jn?= =?us-ascii?Q?A3Gy+NUE0dmx+pbVe8dQIp/ZLFPZJx18JG+c123pLk67g7U7di+SL8daZfNg?= =?us-ascii?Q?AP973ePNA9BiG2R/L2/JnJ5Lvbz0WHw=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9d8f27dc-b248-4ed9-349a-08da32ffe4c9 X-MS-Exchange-CrossTenant-AuthSource: VI1PR0402MB3503.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2022 03:39:46.5443 (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: h7qhZPVJGQ3OBpWXyqRTWxMjjppPwlQxmOuEOEvsBP5P/OELSffChbnh3cMWU0KCKP/6gNbpa3Sw7PcIRj/mCQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB7156 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 Fri Apr 26 19:25:25 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4071877pis; Tue, 10 May 2022 20:40:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzQjnUywG5VBfk9kQpdHVa80k1UmDuKb3HDytXj0CBOMjjpPGW6BWQZaHiLjnh/qINbvDWV X-Received: by 2002:a17:902:ef43:b0:156:9c5d:b0fe with SMTP id e3-20020a170902ef4300b001569c5db0femr23665794plx.158.1652240406598; Tue, 10 May 2022 20:40:06 -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 w7-20020a170902d70700b00154aa5ec43bsi998279ply.154.2022.05.10.20.40.05 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 May 2022 20:40:05 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5213-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=Bh9OXfRd; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5213-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5213-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 B0FDE280A98 for ; Wed, 11 May 2022 03:40:04 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C5A2D15C4; Wed, 11 May 2022 03:40: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.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 DA24015B4 for ; Wed, 11 May 2022 03:40:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652240400; 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=p3pqgR/e0EliKT9OR7AcAjI835k8x+k35FWH4SeX8eM=; b=Bh9OXfRdimnVt1Tw6Y7sCiCXEcTgZc97c8rvO3PmxB+67XwDLN9O7qPPp+Hs7rrM9Smes6 Uf24Md2fyz6796A8lRZg8nD5+6imJC742c3bHlKqltTnZYm8e+wZr9+Vm+47FVR7SbmkDp zq43rbm1odQHvNoV5bM0sMiCNQ5V/aw= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2109.outbound.protection.outlook.com [104.47.18.109]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-9-0wwNemcdM2GvZoLNqjp17Q-1; Wed, 11 May 2022 05:39:59 +0200 X-MC-Unique: 0wwNemcdM2GvZoLNqjp17Q-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Rm7wT3mhjsj+6K3av0UTaNKFzBPpZpfaP64aHZ+ZZ9uudUQfVXVRkX6olxJ8jie4bbJSXEAYmQW3Npl0fAWjDHKSCVKvKI0WDG83G+QZbRwQ7PKXhPRdT9D0P22BvQd9cNpfp3JAOGFG7WolISuorx+EvKd1hoZFeQx3006uInHQIgBJI5yzuGnZbsQfDDO+//ukDmx19YXyWiNC62W0/5e1dCewdCzI+s5p4xXnzPHZjTqMr4YXLi6ER/wIquXnGad3O+PP6Pf80Ws6NxiNjn3B/k22PwG1o6W/lpnvBHR4ONiUlwhTe7ahCzuiSRU35KTvg2KfeTMaJUwZWxogrA== 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=IUVtfW5pKHs3YYHsZbCFTXMBzVVkzqTFj34qWuqC1Kk=; b=epUZVH0lteGLZ/bwHN+NARAa/7bz0VdmB5J8c/4cVbE1pfbFf70fjqdcH1ZEZyjNRi40qxQsSVTjvM6wSaqCt43XHZZvR8sXxh4w8f3+S+zk4mkNi31+FUZyLfk81waJU+6mJEX84ziwuO5IXH1M0vjPseS/8z+i9JCUT7WVK7Dhy/DjSik5GNIaG7LnxQEmebb2VCJDOQcA6w+eXq3xryCUF6doiArdYqyXx6VtYi26bRvi7Gud/ez+S/A5XMqwRgje+mXHtpgyjJLLBClBUWtZ21YTrIP38ZopSCrK8iwvulyVtvjxNMmU/XkkQ2m0+jG1OjC6vKv1PysWiykXUg== 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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) by AM0PR04MB7156.eurprd04.prod.outlook.com (2603:10a6:208:19b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18; Wed, 11 May 2022 03:39:58 +0000 Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7]) by VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7%6]) with mapi id 15.20.5227.023; Wed, 11 May 2022 03:39:58 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Nicolas Rybowski , Matthieu Baerts , Geliang Tang Subject: [PATCH mptcp-next 04/15] selftests/bpf: add MPTCP test base Date: Wed, 11 May 2022 11:39:05 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0170.apcprd02.prod.outlook.com (2603:1096:201:1f::30) To VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) 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: 5c1297ee-c0bb-43ba-116e-08da32ffebdd X-MS-TrafficTypeDiagnostic: AM0PR04MB7156: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: kF/yi5S96GdeOPZ1E48Lf5cQ1HMDr2RQ2RYDNtf675CcU6srPsCEbnRCGYe56AaH2+7rh4965bUWAMuYtVEkR+CR6bm5oaLqd6Z8qkPRZ8zF5GuN5mCby63JqtzOuIRddI1cmx7OEcZMJCCJlAU32ER5dVWk/AyXHRFTV7A18vx8XBoP/6c3Gpd1VzIFcaLCcu3eTU1+gPNGu1Xfo9sFNee849QyDLoTUMLHy5HCU9e0iCL7VZL8j5nx2+HFX2Ct/xGR+9FQEBNmuoQGkpmz4u1eElXzCRvgVEyzqZ8DOlIW8YuPV50JMQVFTmC1k4Klpzcoy3EOfbxqnZ8rK9yWX9x5j/80Cre2Mr8A6EwOijnEx0kCRSQb1eJA3OdVGNHJkzZpP2n+fAlfVnnputFXQFKgU1yLzgr5XuUXM7YSGgj1AgimN5TpNCKKhR2IY5eCsqgcwqDncNvvaRnYaoE6j95IysjIkEIXFANkm2wtAYJasaSTiEwrMqHHDtxoMWIDX3P//9j+sfzASTF1h1B3K05wM0/aFOdfXZfIBQd5PVSDkkjHzHPwXwsT0wTOqkQQRiMnx72UPT43la7JAe/WnrZqxPfj7KLC88b/ic5x4lMO7XkWKMRZ7ybTCrfMEPEAY4DdshnsoceY8ZQsYshvAgKr3W/QK30WR2YQJOu0VU3B0OhPh8is974PVMroHA90 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR0402MB3503.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(6512007)(86362001)(5660300002)(107886003)(4326008)(2616005)(6486002)(66476007)(8676002)(8936002)(6506007)(66556008)(38100700002)(6916009)(6666004)(66946007)(54906003)(316002)(508600001)(36756003)(2906002)(44832011)(83380400001)(30864003)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?veJIt8XJoVc2hzkd/DZlAb3etypciCAzvFQawzyZXEA54JAXcZQONWsXOd/Z?= =?us-ascii?Q?1tz2d67ksmJCgAXqRGEIfAip6nFkpdQGWzs91ii0zTqrdJj/+wJSAFGlG2xA?= =?us-ascii?Q?U/J+p6+mX+lnZquMPfddYuvrvJxwoiHj3OWSAQJcGGzyTg7GYPRIWw9yKvWy?= =?us-ascii?Q?TNh4k5X6azi7sVKOfEX4u6ImcYKrOI8IULpvJSbi/fjYm8uhVgRo9FOJ0JU2?= =?us-ascii?Q?gmRLFQYlMn+bPLcj8R4tkn5Gu9zgp5atjremCoWfMoOMQnQhTz6wXdwoF/xj?= =?us-ascii?Q?ZpYZcm8Vc34U1CNx1gr8i1RyA/D7cTm2kKVRzCG2rLrzlKocu5szrHg9O4xF?= =?us-ascii?Q?VVx472440z6n4Qsy7m/YogTmFAYw/KK3ejtGk4yNw4vlijoUOBtuRg33chKl?= =?us-ascii?Q?HXlraGccNcUggSayBaDHj3T/UK2peM9NYPwBTSt9mvtiy8gSyKko7XU12SvT?= =?us-ascii?Q?TejcvEMGDyn81m/vr3EQNA5D19hx1KTsmfU4b1HyiijDtT9/szDVU+iqh2yK?= =?us-ascii?Q?S2BA2KFBmeMLtX/AQrU3F7hz+73zTylTKM8i7AXULbCRW54IdguEmFsfZrIJ?= =?us-ascii?Q?bkOTyUi7EsIG2njnDrQGQSg9VsGAaWCiI2AyOnWdwOHVZlKdezwJI1HTxgPm?= =?us-ascii?Q?0v/Z0MFneUcPA+zdtD4ozPgl8c5EdTr5IjPu6MyhbVwf4ocJRhoyIJSaam90?= =?us-ascii?Q?v3zse5v37CZFZYs+R/nzf1EuXlvAhOu27sMXOchY7VJQ7s8pn/tHq8aQBxci?= =?us-ascii?Q?2ufJA44B1UvCTyOKI2yxfxZKYqsjYl3UFW+RGtNDz26alIZ+pltWseBDwbyn?= =?us-ascii?Q?BtR+H0t6+O07cTBSCT0pStei7svH/320uQYPk1kdZ4eE4TsG0uViTHsoEu1C?= =?us-ascii?Q?Vk+5T9+MaMsfuQXg+84GOVc1c6b8TOnG30nrRxUc8QA+WQ+JQoio/qze569V?= =?us-ascii?Q?faDFh8YxXd+g3MXBqD/LRqK4UDpoALQRuAvB7wRCy7qhczO4CL+LJ4nOXvlY?= =?us-ascii?Q?cVdLACjbrijEcfEOb2byyBmvskr1E4IpDe5m45n5EBIiG2iifQ8VT8bV9H3W?= =?us-ascii?Q?d/x+vJM9W9AEDc5iCEJtI1gKE8CHArCHHC+pjJExifD8XO587OU8nSk46RIo?= =?us-ascii?Q?CAyZdzYdqGBdAzOWmpKNBo/L1y9559kRYogbotbgBXLAZeuWMha1R7txiU5+?= =?us-ascii?Q?GN0oZjHNi33+QE/YEbFGjO4+wHAMErtopLxIRZHqDWHTOs810Ulf7wwXV4Qa?= =?us-ascii?Q?xWV5vVXkmrT1qQ3FMi8mNykCoYy4rQF7A6J2gT6Mw2tfJB0c6AISlFGc/Rl7?= =?us-ascii?Q?YHPLDIui19KZnok+yHbWZDHlzB40Jorh9EzBEToMybdAo46jzPPgkWa22orP?= =?us-ascii?Q?VLyBW271KJo7kqBSZW+NzuppdP4JoGBIlNynMGU+KXrvrBnFlrcHU1L5CNSO?= =?us-ascii?Q?yih+Uu3+6OtxVj/Zmi6FTPh3FbqnCAgCxnYIe95RUjJszRrLFpSqWXAUtBz+?= =?us-ascii?Q?JEDDDZI8h3Oz2dJzvwe2H6RGIctICkzsKw7T6gJ6KmieHcN4/SOfKzC1kPl3?= =?us-ascii?Q?e73QXCRnSMqTFTOKRr0ydYr7P82gYnQerwCwjUaDuXcuKxAL7fqyVU1itVW/?= =?us-ascii?Q?5/nOxPop2TLSU5tWImEVDM5A+G/nc3C0D2wrXWfXw+nxiS/sb4AyiMMSaPyo?= =?us-ascii?Q?l/eUq4T/KAIGJrhBMQbfMDmKIGRjtuAUw12zN9z5CmYOUOqvAEHc8xr7SEJT?= =?us-ascii?Q?6R2TmujwKGB/dpa51CvmR0g1xIyLbWE=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5c1297ee-c0bb-43ba-116e-08da32ffebdd X-MS-Exchange-CrossTenant-AuthSource: VI1PR0402MB3503.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2022 03:39:58.3091 (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: 5ETAVk41P/CvbTceCH2ZXvuflyN6OSiFe6XksL39s6YO1VK1yFJuIMrfOvQXwaLqQ7O3tF9BANJkOOI0b5682g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB7156 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) 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/config | 1 + tools/testing/selftests/bpf/network_helpers.c | 43 ++++-- tools/testing/selftests/bpf/network_helpers.h | 4 + .../testing/selftests/bpf/prog_tests/mptcp.c | 136 ++++++++++++++++++ .../testing/selftests/bpf/progs/mptcp_sock.c | 50 +++++++ 6 files changed, 227 insertions(+), 8 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 0ea12c2b53f3..fe03a22d7fe1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -13798,6 +13798,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/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..c9a2e39e34fc 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; @@ -265,7 +282,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, opts->protocol); if (fd < 0) { log_err("Failed to create client socket"); return -1; @@ -298,6 +315,16 @@ int connect_to_fd(int server_fd, int timeout_ms) return connect_to_fd_opts(server_fd, &opts); } =20 +int connect_to_mptcp_fd(int server_fd, int timeout_ms) +{ + struct network_helper_opts opts =3D { + .timeout_ms =3D timeout_ms, + .protocol =3D IPPROTO_MPTCP, + }; + + return connect_to_fd_opts(server_fd, &opts); +} + int connect_fd_to_fd(int client_fd, int server_fd, int timeout_ms) { struct sockaddr_storage addr; diff --git a/tools/testing/selftests/bpf/network_helpers.h b/tools/testing/= selftests/bpf/network_helpers.h index a4b3b2f9877b..e0feb115b2ae 100644 --- a/tools/testing/selftests/bpf/network_helpers.h +++ b/tools/testing/selftests/bpf/network_helpers.h @@ -21,6 +21,7 @@ struct network_helper_opts { const char *cc; int timeout_ms; bool must_fail; + int protocol; }; =20 /* ipv4 test vector */ @@ -42,11 +43,14 @@ 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); void free_fds(int *fds, unsigned int nr_close_fds); int connect_to_fd(int server_fd, int timeout_ms); +int connect_to_mptcp_fd(int server_fd, int timeout_ms); int connect_to_fd_opts(int server_fd, const struct network_helper_opts *op= ts); int connect_fd_to_fd(int client_fd, int server_fd, int timeout_ms); int fastopen_connect(int server_fd, const char *data, unsigned int data_le= n, 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..cb0389ca8690 --- /dev/null +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -0,0 +1,136 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2020, Tessares SA. */ +/* Copyright (c) 2022, SUSE. */ + +#include +#include "cgroup_helpers.h" +#include "network_helpers.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 (val.invoked !=3D 1) { + log_err("%s: unexpected invoked count %d !=3D 1", + msg, val.invoked); + err++; + } + + if (val.is_mptcp !=3D 0) { + log_err("%s: unexpected bpf_tcp_sock.is_mptcp %d !=3D 0", + msg, val.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 bpf_program *prog; + struct bpf_object *obj; + struct bpf_map *map; + + obj =3D bpf_object__open("./mptcp_sock.o"); + if (libbpf_get_error(obj)) + return -EIO; + + err =3D bpf_object__load(obj); + if (!ASSERT_OK(err, "bpf_object__load")) + goto out; + + prog =3D bpf_object__find_program_by_name(obj, "_sockops"); + if (!ASSERT_OK_PTR(prog, "bpf_object__find_program_by_name")) { + err =3D -EIO; + goto out; + } + + prog_fd =3D bpf_program__fd(prog); + if (!ASSERT_GE(prog_fd, 0, "bpf_program__fd")) { + err =3D -EIO; + goto out; + } + + map =3D bpf_object__find_map_by_name(obj, "socket_storage_map"); + if (!ASSERT_OK_PTR(map, "bpf_object__find_map_by_name")) { + err =3D -EIO; + goto out; + } + + map_fd =3D bpf_map__fd(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 is_mptcp ? connect_to_mptcp_fd(server_fd, 0) : + 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: + bpf_object__close(obj); + return err; +} + +void test_base(void) +{ + int server_fd, cgroup_fd; + + cgroup_fd =3D test__join_cgroup("/mptcp"); + if (CHECK_FAIL(cgroup_fd < 0)) + return; + + /* without MPTCP */ + server_fd =3D start_server(AF_INET, SOCK_STREAM, NULL, 0, 0); + if (CHECK_FAIL(server_fd < 0)) + goto with_mptcp; + + CHECK_FAIL(run_test(cgroup_fd, server_fd, false)); + + close(server_fd); + +with_mptcp: + /* with MPTCP */ + server_fd =3D start_mptcp_server(AF_INET, NULL, 0, 0); + if (CHECK_FAIL(server_fd < 0)) + goto close_cgroup_fd; + + CHECK_FAIL(run_test(cgroup_fd, server_fd, true)); + + 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..19f5f8a183f5 --- /dev/null +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2020, Tessares SA. */ +/* Copyright (c) 2022, SUSE. */ + +#include +#include + +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; + struct bpf_tcp_sock *tcp_sk; + int op =3D (int)ctx->op; + struct bpf_sock *sk; + + if (op !=3D BPF_SOCK_OPS_TCP_CONNECT_CB) + return 1; + + sk =3D ctx->sk; + if (!sk) + return 1; + + tcp_sk =3D bpf_tcp_sock(sk); + if (!tcp_sk) + return 1; + + 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 tcp_sk->is_mptcp; + + return 1; +} --=20 2.34.1 From nobody Fri Apr 26 19:25:25 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4071892pis; Tue, 10 May 2022 20:40:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwDjhcX5tcpJn90XJEmkj4zmscHooc6uCPXYY8aSxYyZ2JWU+Rfg305atQem8wVUwByPgpW X-Received: by 2002:a63:60d:0:b0:3c1:7361:b265 with SMTP id 13-20020a63060d000000b003c17361b265mr19651087pgg.434.1652240413032; Tue, 10 May 2022 20:40:13 -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 na3-20020a17090b4c0300b001d28b845edcsi1515890pjb.59.2022.05.10.20.40.12 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 May 2022 20:40:13 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5214-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=c8eKQe9y; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5214-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5214-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 BF25D280A97 for ; Wed, 11 May 2022 03:40:12 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A04E415C4; Wed, 11 May 2022 03:40:11 +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 C86D815B4 for ; Wed, 11 May 2022 03:40:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652240408; 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=cwhjTBcpXQVQKOc870jf0cthSsqmz8e+9edPui63mB4=; b=c8eKQe9y8UgLcSKcM851T5JMy/hybDOuaW6Jvs9PDAFiPcqubcxoXrKLxZPZ9Up+nlpJDG XumQCErKxWCXn+pAT0LLK1gYFzya4tVpFG2Y4O8HRBwMGv8QmTOKBCmK/ELQGxbj2PxvSb bogNevas2A9Bz7dLqUX0QwHW0ATJOG8= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2107.outbound.protection.outlook.com [104.47.18.107]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-15-p8yvRme1NqCKDTLjzGkgOw-1; Wed, 11 May 2022 05:40:06 +0200 X-MC-Unique: p8yvRme1NqCKDTLjzGkgOw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Tz2vwN5XIbYveE1ZpjtPU3iJM+G6SSGBmLKk4kVl2mLXMDLJ2ScMXgm1LioXUT8i4w8Jdj5QTFzTPKJlp+bjkUlwVQI4Eqmb3QGRGLbyq88ztgQKIGHCI13bHtpXYPvaqxeNvsCmQrxVyYKnsaAMl5tk/4bRbW/Qe9JSYAL/KWVmKCUY9uZmmLrIuuoDzYQB4LI3iv8Kdc1gjggj4ibNHCErL/a+Ubm1AUV3dKksLyAXlcJ0oryNhAvE9EMb5ymmXJ3Hz8I6ersAnHOl/Hsvdbpp5bBwAinegxA8NS+bqB5c+vDTmt/KrrmbepqNuzqYsY41LOhpNdBIZv7+X0lVyg== 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=Bi6HXoBZrXWa0F7ugJxrRFWQ0vqjBE3i8YlQmC0/ZVQ=; b=EGMgSlMYhF9qedBYbYVB/rwLpWBvw0wRQBoPThAm9hgh1jNsRuY6YYb/EXAPNPdHCk09XakaV49SMIR9CSpyx3puWRvCMai5iBCHFq+ciry0iPPYLnDYbCicTxE6SCnANcXccy4PNnJhIZT/rxMGmGMn5U+PPQrl3zaIDZMqI+gF8+3C+G+Z9xEIMLlxP3Uxx/u2PqAVg6LHVuf1xWM5BIZlHH7AFkj+ixExbSHrFkCGubUjaKrYtnOTxfN7tN8W7cE8AR4VkGPagAYlIQ/WfivrMg3oE1g11BSuSm4ZA0aecuC8AtiGH9i9fno0cq/1mNc9zD/tDz764IRQFQSJAw== 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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) by AM0PR04MB7156.eurprd04.prod.outlook.com (2603:10a6:208:19b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18; Wed, 11 May 2022 03:40:06 +0000 Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7]) by VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7%6]) with mapi id 15.20.5227.023; Wed, 11 May 2022 03:40:06 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Mat Martineau , Matthieu Baerts Subject: [PATCH mptcp-next 05/15] selftests/bpf: test bpf_skc_to_mptcp_sock Date: Wed, 11 May 2022 11:39:06 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR04CA0088.apcprd04.prod.outlook.com (2603:1096:202:15::32) To VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) 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: 8b0c41ab-66b4-4117-3e21-08da32fff06d X-MS-TrafficTypeDiagnostic: AM0PR04MB7156: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: aQPUZLvjx1nked9/z73145DrG4mdvfYfV/BQa69YQXXOdu0YCvjFUxq6MjKZeliuvTqCRw8TECVgxJgfuINwVhIY1pzTgT721FvQAp2ZOuXBCyQgn4fWT305RgfzQdBDAQfkWtO/mYC2fAsA2RDDq7Q5V9HKfvAWvu6YUtiltSit9yRDfYLG4DsN0r9B70WEPfp/setbFd0hQjSaDJ+V8TowSDxtuaXUNPeLncKt9nbOtbQPnjrpT9TLwseVYUZ/LEq8b4IBy3F6ZvxPtDxG9k+W3BUAhiL97HDDzBPi8/h1ZyLT5NsTr8XWAJd+Yx+mQ9w73WEtE/tPd9ygDzZMZtKxs+r9An3Vr8B/socW0s5BoDGRiSY4D9fblPajBfyZOEB5WfvbzOKcTpTGsNz3RUmUi+WCwr+rDmQPCDA7zCdkzNdFdzYUoPWZhO7c3Iev4wQWY6bkhBAVXr9yyC5zQST2xRhXvLrh4g5/VT6sxeF/j5sPwxwOWyJ7ViwO1U3U1rHiv0r+ejTDQLsLUmcEX3chJ1+W3ma6AE77UwpzYIzzeML9HDsLBY1JvYhsHCBsqVG/hPw+qM/Qo0PG4RcUGoa5Kd8dsAPVvReZGwMOvEYnG6dOtDK64GKQyJ0uXpxPsiTZx0n8LkML8UkyR539DA6cRpHI/vrcrA7GOmDDgV6UhGEZ2ZZWN4BM02yWQdUj X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR0402MB3503.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(6512007)(86362001)(5660300002)(4326008)(2616005)(6486002)(66476007)(8676002)(8936002)(6506007)(66556008)(38100700002)(6916009)(66946007)(54906003)(316002)(508600001)(36756003)(2906002)(44832011)(83380400001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lTnkCSOwN/l+fGL0e/YzDaMQ2D0OapX4OB8/QYR77Dsos7YrsaZ80LaghEQF?= =?us-ascii?Q?/Tn7hnFogQz3Da2fJ6HbrS1rgWQHIZqbKeBKNFSePp6/D+faQv+Qqb9eD9FN?= =?us-ascii?Q?jY3XUMfjl9AYesERZaEabbbss4Vb69QON0vKK1gMV/ltu8gnxoJbW1bX660H?= =?us-ascii?Q?fh2sE6Dw2e/6WAMOLy9B9c+lLDLBJXtca/FQhJNh7ugKsguIswcp123nOM3F?= =?us-ascii?Q?Hw2efzgdBS2ccTbZv4GXZjvg1Yktz77gCPt33KU1/sfmGm4Q4d6WqKwPsWZ6?= =?us-ascii?Q?c7nEErvzHt7qw7BAOhZdWny0XQng4Q5SAwiJk1a6Qih6fw0wnPbhgIH5nEA4?= =?us-ascii?Q?NGtRBAT8flfnicYJLfcELVo+HxJdRvo0817l4hcqUk8MS4mjq+nBFoj3Xhlv?= =?us-ascii?Q?TgS9JBBPbicLZF/BkIFvJsaNoA3eBdQQ1WgdZTRHJ6rcDJVsPSaBbNks2BRP?= =?us-ascii?Q?EwihXph/xl94RM0upda8sEE0dHQPr/zLMbyIX+0CXRwBgwbnBkFQczfDZtOj?= =?us-ascii?Q?j4iMAqQi1AO/MAI3+epCr5pjh3M8TU/x0W1oIgCeaTYlkD4/MZjYEFv8GK1P?= =?us-ascii?Q?5c05TUidsoPOptnKCEw5duJAoc3GrgOJjot2oLrs1bC3YT/15/V3qV0UCfbe?= =?us-ascii?Q?difQPvr6hmh83nvA4iQHeIcXJsFl5SdEwU514zBO1pOfBdJ8SipWIrluLKga?= =?us-ascii?Q?VEWMxhK9MpOATI/irZyablZifixM3UUf7Kjj7gPKKMT516zoN7f6Ckmu5+fH?= =?us-ascii?Q?fNudjBRApbJKaYGur6dOadJii2mvAZWiDAcw3ra6IO4chCO7GqR9EKHKGjO0?= =?us-ascii?Q?LiqraXniDFtLWhloPEq+cTZG6eFc+uXjgsz6FY0tKjnLJ5HqFVKWkFMzQ4ax?= =?us-ascii?Q?Ne0VdHAX5ZTEZ05+Ct31FJPERWObALUOuu0v5cqdxOze7JZSMVbk24XN5mB4?= =?us-ascii?Q?cwND+KH63/R0BKqJqPcIhEbUZisdMi2HQPecvFIXSSjYhtijsiLfC5126bzS?= =?us-ascii?Q?0ii00gsosopNX2tA4iS4a46zlTWBsdrFMUNMZSUn8RP3mjg0uVRytxl5iYRF?= =?us-ascii?Q?KcGc++7fDovrmq+q0UABDYV46/e6824GjQtoIvZv5pAJ8ds5YLP2FOQSo5ds?= =?us-ascii?Q?VQDCbFuirnZId0iluwLMViDVSwKQ2gvPBMmDw9AJsMPnY8iWfqc+vbwBhlsa?= =?us-ascii?Q?euKXjSrb2gpbLvLG2LW1hmW4Fvg3bqOkc5ElWQeB00M9Ry+4ikNLdyB9gb3S?= =?us-ascii?Q?LTY557X+OWb12eSqz84U2Tuc807TxTW1rFweil4+V95CDoTwuyswl9rNSFBh?= =?us-ascii?Q?DXYNVqbypl4J4VlBanQyG4jS3yXjPgv2vUK4kBRlZ9t52JCCjo7ZUzR7nFtm?= =?us-ascii?Q?NJbiEPcs5lxs/Y9ZZrr0lvsmnXASqAqep66ZA/4ZmMZPgivQVjZ9ZwHfdqIl?= =?us-ascii?Q?6XIcC6TsUafQGZOJGDt4GrMr+uQxfTYCMk53kYJk0VMOTGOghwWhsiYLaEfc?= =?us-ascii?Q?WrL5+Vkc6pYXYmtUXExNRjX6jC4T2UC7vbio73Z44JaBPt3xweiQAMNVrmld?= =?us-ascii?Q?DlPCeuN81SqLsoVT14k5E7LoD3S1ouAyN6QHDG3rYCMZKDryNmAVsx49RUyw?= =?us-ascii?Q?m1+KDuUn5gfULSYr4mHh4Snn6VVCxNRPBe8vbgmlKk0Ozb0et1XwtXno1y1l?= =?us-ascii?Q?ddurQGZexFp6j0h+cnb4JWik8hfXph8LH/Pm7ZRPnyrAsbZgjQ2XXtYSNGzF?= =?us-ascii?Q?izH9CN79hhCGP4PxmFQ+9YP24Qlsz6w=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8b0c41ab-66b4-4117-3e21-08da32fff06d X-MS-Exchange-CrossTenant-AuthSource: VI1PR0402MB3503.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2022 03:40:06.1055 (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: XZ7F9W2MsWxlWRYbpEh6mWdY1+GsBNcTFCvtSKmNhxF/Zmdp4Y2MlfOkzPM9Ws6y5n3bhLOOBctLy1guTVYh7g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB7156 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) 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 | 45 ++++++++++++++----- .../testing/selftests/bpf/progs/mptcp_sock.c | 24 ++++++++-- 3 files changed, 59 insertions(+), 15 deletions(-) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index b1ede6f0b821..a43b1afe22bd 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -225,4 +225,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 cb0389ca8690..02e7fd8918e6 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -11,14 +11,12 @@ 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) { + char *msg =3D "plain TCP socket"; 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; @@ -38,6 +36,31 @@ 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) +{ + char *msg =3D "MPTCP subflow socket"; + 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 (val.invoked !=3D 1) { + log_err("%s: unexpected invoked count %d !=3D 1", + msg, val.invoked); + err++; + } + + if (val.is_mptcp !=3D 1) { + log_err("%s: unexpected bpf_tcp_sock.is_mptcp %d !=3D 1", + msg, val.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; @@ -88,8 +111,8 @@ static int run_test(int cgroup_fd, int server_fd, bool i= s_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 @@ -103,25 +126,25 @@ void test_base(void) int server_fd, cgroup_fd; =20 cgroup_fd =3D test__join_cgroup("/mptcp"); - if (CHECK_FAIL(cgroup_fd < 0)) + if (!ASSERT_GE(cgroup_fd, 0, "test__join_cgroup")) return; =20 /* without MPTCP */ server_fd =3D start_server(AF_INET, SOCK_STREAM, NULL, 0, 0); - if (CHECK_FAIL(server_fd < 0)) + if (!ASSERT_GE(server_fd, 0, "start_server")) goto with_mptcp; =20 - CHECK_FAIL(run_test(cgroup_fd, server_fd, false)); + ASSERT_OK(run_test(cgroup_fd, server_fd, false), "run_test tcp"); =20 close(server_fd); =20 with_mptcp: /* with MPTCP */ server_fd =3D start_mptcp_server(AF_INET, NULL, 0, 0); - if (CHECK_FAIL(server_fd < 0)) + if (!ASSERT_GE(server_fd, 0, "start_mptcp_server")) goto close_cgroup_fd; =20 - CHECK_FAIL(run_test(cgroup_fd, server_fd, true)); + ASSERT_OK(run_test(cgroup_fd, server_fd, true), "run_test mptcp"); =20 close(server_fd); =20 diff --git a/tools/testing/selftests/bpf/progs/mptcp_sock.c b/tools/testing= /selftests/bpf/progs/mptcp_sock.c index 19f5f8a183f5..dd2448d1e7fc 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_sock.c +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -4,8 +4,10 @@ =20 #include #include +#include "bpf_tcp_helpers.h" =20 char _license[] SEC("license") =3D "GPL"; +extern bool CONFIG_MPTCP __kconfig; =20 struct mptcp_storage { __u32 invoked; @@ -24,6 +26,7 @@ int _sockops(struct bpf_sock_ops *ctx) { struct mptcp_storage *storage; struct bpf_tcp_sock *tcp_sk; + struct mptcp_sock *msk; int op =3D (int)ctx->op; struct bpf_sock *sk; =20 @@ -38,11 +41,24 @@ int _sockops(struct bpf_sock_ops *ctx) if (!tcp_sk) return 1; =20 - storage =3D bpf_sk_storage_get(&socket_storage_map, sk, 0, - BPF_SK_STORAGE_GET_F_CREATE); - if (!storage) - return 1; + if (!tcp_sk->is_mptcp) { + storage =3D bpf_sk_storage_get(&socket_storage_map, sk, 0, + BPF_SK_STORAGE_GET_F_CREATE); + if (!storage) + return 1; + } else { + if (!CONFIG_MPTCP) + return 1; + + 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 tcp_sk->is_mptcp; =20 --=20 2.34.1 From nobody Fri Apr 26 19:25:25 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4071923pis; Tue, 10 May 2022 20:40:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxN1fbJtFikIN1yoHQAdikwbaSPKqBnTfNWBxB+z1RYA7uLukjJipDHIcypDPUJGZ4sBobn X-Received: by 2002:a17:903:2044:b0:15e:c057:d454 with SMTP id q4-20020a170903204400b0015ec057d454mr23133469pla.126.1652240420218; Tue, 10 May 2022 20:40:20 -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 hk11-20020a17090b224b00b001d26ee86442si1447519pjb.93.2022.05.10.20.40.20 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 May 2022 20:40:20 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5215-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=lcYYTSWO; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5215-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-5215-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 CCD97280A93 for ; Wed, 11 May 2022 03:40:19 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DA5CC15C4; Wed, 11 May 2022 03:40:18 +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 31D3115B4 for ; Wed, 11 May 2022 03:40:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652240415; 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=RzHMu0DhIXXgIrmq93EQ6TWdAuNgoNShD0rrP+6Zaq8=; b=lcYYTSWOtfPUQyYMwlzRtC/xTGifenjDJ/u+WSG4GQqn9hrv/SrTQdTyW25oWOAOu5kGU7 7jo+cMynEU1X3D7ApMsyuriy93SwUPI2+5RMpoxBSuT8rLcIpDl84JaplHLO4I6jUcwNEb peg/fWCNZO69Eps1V28LESDqz1D0Si4= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2104.outbound.protection.outlook.com [104.47.18.104]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-29-PiZMFNObNnetsqpNkmMk4g-2; Wed, 11 May 2022 05:40:14 +0200 X-MC-Unique: PiZMFNObNnetsqpNkmMk4g-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fe5Ri8Ekih1JI5BccPu5Wp/ih9BT1cXa5A4WAIx01Dz3jvpS6fEpRdc4R/HjX0FwGCxcQ2efBMsmdjZ9Z4oJ8ElLWUk+2QZFJECxxmfg31p2U+fcasic0VCkHon4quMBUFonVosTufbIVWOPGNqQW8jrmo4JdZolTuyVcO1ag9VnHwN6KBv6UlYwX2F1yMafd+n+TP0taEOFJOpAsbNMkzqQOXLZkHFnVzJ6BhDeUaX3dQmm8AgGsc4U8aRLsxvN83EHNyoclRMtghmgIPQy8TeW2fN//GFGlqKmY3VHIjRfnwFcr2RaPLIBAsMFX/PWFrgpeuUqEEC0yAzRwXUmQQ== 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=Cmm5PdZwRqf/Yo5VI+SMMioR3Dg8MLhaX1gjthNXcoY=; b=oWz/A75uahrlo3sa4ntVRq6ZEwDjMabgassOp8eGWyNSanBYlATVCs7aiMr+8WUTFxICQjlFrOdolNXblR3OrdSXNVRaFAdJUZO1bYxAVHeqx9qNKaZPwGNvtnxWTdmk5/GaQyS+eqTAZxkOar5yA6WDE07VItEX7VSrjTbUq7jVodhPWOEw9ThTTI4xikoMfVD0PDbvD6FomIGCWHpgfFO3ZT0xpRkU1VgX0p/czwcg0RFhiu8ndNJ1jhJASARWlYSMpOWoga+woOQ/iqkxQBK38B2S+MM75ozwexj33brE4GlvIxg6ecUwVYg9dgYCuHiNk32b54R2fmk3scN6mw== 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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) by AM0PR04MB7156.eurprd04.prod.outlook.com (2603:10a6:208:19b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18; Wed, 11 May 2022 03:40:13 +0000 Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7]) by VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7%6]) with mapi id 15.20.5227.023; Wed, 11 May 2022 03:40:13 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next 06/15] selftests/bpf: verify token of struct mptcp_sock Date: Wed, 11 May 2022 11:39:07 +0800 Message-ID: <8c01c19169b5f3a5254d97979fed89da2fcc706c.1652239604.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR04CA0087.apcprd04.prod.outlook.com (2603:1096:202:15::31) To VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) 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: 40cf365a-e4a8-4f1a-586a-08da32fff4ea X-MS-TrafficTypeDiagnostic: AM0PR04MB7156: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: ZpIT5Q6ukKdF6Qk7WvaQoj6YB7fIBV69FKPsqYcs+VM6gcUy4n8Og6ecHwgUdwjYBOo4AJmahnXSBMVOsr3sr6JwTtjoxva3mymlMtXubxuHwIlyaWW3YJieanmp+IdsTvGdqUd3p0VGbheUmwEjQ8AG2iOj1gO0sKBjj08hRdDQjfv+12g+c6+Ze+ES8EImR3jjHFqP7Rs1v9zu+q3cyYcCuG/lHWnafXZAIV5qX+Qs0li/mYDjpkWWHguooMeDVTQWzASvB+sHPgPeBQkBA3DxeUwciV+dK7iGYs1KYAa/CcrUx5zZMu7B5WVkeLxxJBSSlKNYsPRzVbMLM69BLtWmkcmPX+wt5lZIt7DosmtHCaiu0+kZ8ZuxyHizLHU7IPj+7guNNaCtBqhYnvk2NuToLf5CGO8CFAA7mEVLtQSb08+KSuB3V7S35W40FrGcXZ4gsYpKKMP44SOqQZhE9Hx7ceFSo8yH974nlyG7pngCdKWOIHGuD+bvLiRZppOofT083nWTOML0kM8cY2Eg2C+YCfRh96vLcrTaF6F2bh+cfrWxYqGopLO3zB64PDY4e7RVWHM/8rygLWPgg8JrhzpVyZR2WVGipTkaTxmGqvlJJL/FPm5b3sEBhAsdliojwxJ800ci+VudrIgzJyJg0Tu2QJ/5xtd0uPTkM8F8/0Zz4jnLbGQvYLqxqfu39wmg X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR0402MB3503.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(6512007)(86362001)(5660300002)(4326008)(2616005)(6486002)(66476007)(8676002)(8936002)(6506007)(66556008)(38100700002)(6916009)(6666004)(66946007)(54906003)(316002)(508600001)(15650500001)(36756003)(2906002)(44832011)(83380400001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0fYJaEQkg9QzPMeu0nkJQQ7ECacVc/O1Hdy1txYdAI+BAnOY9RVgfBzkRFcv?= =?us-ascii?Q?neIn+hlLsekiWRcodHs8llnaURNFuRe2FvSyUrHEAguxoNh5kTVCAff88/xk?= =?us-ascii?Q?mEBXtI/Ukzxxd4X7lD660hZyQ35mR0CdFRGl4p2nKTpE24dTIi9HmdiwWg9p?= =?us-ascii?Q?usnTM6ud4rARhvM3PmksrQiU8lvC/JAXnmqtuW/VpfDzeUUEQx6tE72xLGCD?= =?us-ascii?Q?FY1Z+4KvOkgVGlkLBJD9aKw2uxFQ0mvDMWa3aqRRjLotwCQZ3k9YGuw0MkHJ?= =?us-ascii?Q?3YPwgveiCSJ7wYMQemfFkDB1gufeRPQXvhZoIPlnDUpaqkRsyFAZA10R8bBL?= =?us-ascii?Q?0MnV1WIXvZQMaFe/9HxPNMHoLVBDF2TPiUX6Ltam4nUnYhO91ZrmsEQ+kkiq?= =?us-ascii?Q?wUXxSbY4i7Ms5jyebW/0ZYIFw1u8LiN0Hf2kPtOnJFBn10v85kg5OTRdZ94s?= =?us-ascii?Q?sG7l2L9r3Lznqs9lbqYZPe3JefZGcD51zuQBswWEI42+2stQCQX2bq/VCsVO?= =?us-ascii?Q?DJ/rxLmMtgFH3HyWoGvjqJhzP7dy4qPFV67tEbk0qPbMwBfb+7S+eZZfE/rs?= =?us-ascii?Q?Jo5t/LFXVmhnBf3JHmsros9E+DIySF0tiS+kYzMUHWf5hl6KW+JVw/sWOUqs?= =?us-ascii?Q?whwvnlFZsUVOsLNVK8ccJmzMAWXudiF9ojVjIG0wNIxZVNLrbGr0RtZOLfwK?= =?us-ascii?Q?XOvaBYvhulmlTfRx3bwbqxLlDijLSeJWBUIGeeobYc4ILEtbbneoXmoD1vsl?= =?us-ascii?Q?LSe+fldNmV6Ma4MFtl37vDSZBAzjdledodIq9NTx++NWjdghTCt0VW/ngmgX?= =?us-ascii?Q?GeEDrFLabCJcwYTumNP2Rxpb4p9UjSUzOScovtlhXnyFPOKH1Sqx+wUzoF3J?= =?us-ascii?Q?VlcWBUj3fWjHAHwZmBBCM2n1ZnwRu8rE+6aSqUv6wKIdjbyM2iPNh57BFSOw?= =?us-ascii?Q?tY44Kuo0GfJ51inxX9lU2O1agNZvB9bWgfMwJcj3CArzSn9+gIsQWRoWXNBW?= =?us-ascii?Q?85LhHsZzukI84yBlPUmnlNntnUunQDKyuApYxvaXIza1/HIqJidssp0DSDz1?= =?us-ascii?Q?FZA3nT0E9LXSWM0QCixGEnMz+mfJoFg62UEdRuISIGWielYs3K6tF6FsSV7k?= =?us-ascii?Q?DxtyZVO4hVYDSSGY05YLgiaIQ2NGiBn67nJsZTgHLTSwTkWmAy8lvpyacOTl?= =?us-ascii?Q?dgrk/h+9G/QRk8KW6LfW7eWkoEStL/2hMXFnyzI6g0m5W/AMK5WdamlXFR9z?= =?us-ascii?Q?A9HtkaiWwfhC5L1pRd2cGljSq9zQ5zWRheyrT7gNvmd5aDpI7X9fvFlsDmbP?= =?us-ascii?Q?BAshEXCuLhrIi4R37zaf//Zkx2gA92yMDoqUuY2AgZX0UeFx3/jUK0WqJ/V+?= =?us-ascii?Q?t9/PDpXO5vmdCI87p+++RXZ5jngn1t+NGIpfmda2U0RNp4jXYtBPKbUEA+4y?= =?us-ascii?Q?OIzAlMXo2ZSxXQuY0Ee9L83bnQUAw5itz3nlL8IVdOu++ycrSx9ENjLJuSlx?= =?us-ascii?Q?MnaZOQ/IEnaKEhs40Tmq7GM03Ne0nOoLJS/9crvKUQ2VauB9WJe9bPOi5gIP?= =?us-ascii?Q?uUH7zD2gDCcor+NCSzjM8B4ZwD18TUrja0IJQEsgzVACb/2HSiWzFhEP8Z2r?= =?us-ascii?Q?8rhCu08afcR1nD0ZYrwRzqtWvtJyZeaLzsX90kpMFUEX6DvLaO8v6dt/EnaN?= =?us-ascii?Q?YbPrm8Ji6sN8u9vea8u7EV2isjo9c2YNLGkSC2oypERFQJdawIcsnQnoGqCz?= =?us-ascii?Q?7w0Y1Gb80cfNg0vGdN45wyI+RC1ZWcc=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 40cf365a-e4a8-4f1a-586a-08da32fff4ea X-MS-Exchange-CrossTenant-AuthSource: VI1PR0402MB3503.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2022 03:40:13.5113 (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: JNPxgOMbFEPodbH0w0NXplqLaUZLaB7xSiwF/AuiwwUsS5EB7ITE+XEt625qumC/5dJ+rbdsfUmHhfCn8kmbtg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB7156 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) Acked-by: Matthieu Baerts Acked-by: Mat Martineau Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 1 + .../testing/selftests/bpf/prog_tests/mptcp.c | 64 +++++++++++++++++++ .../testing/selftests/bpf/progs/mptcp_sock.c | 5 ++ 3 files changed, 70 insertions(+) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index a43b1afe22bd..eee49cca092a 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -228,6 +228,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 02e7fd8918e6..ac98aa314123 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -9,8 +9,11 @@ struct mptcp_storage { __u32 invoked; __u32 is_mptcp; + __u32 token; }; =20 +static char monitor_log_path[64]; + static int verify_tsk(int map_fd, int client_fd) { char *msg =3D "plain TCP socket"; @@ -36,11 +39,52 @@ static int verify_tsk(int map_fd, int client_fd) return err; } =20 +/* + * Parse the token from the output of 'ip mptcp monitor': + * + * [ CREATED] token=3D3ca933d3 remid=3D0 locid=3D0 saddr4=3D127.0.0.= 1 ... + * [ CREATED] token=3D2ab57040 remid=3D0 locid=3D0 saddr4=3D127.0.0.= 1 ... + */ +static __u32 get_msk_token(void) +{ + char *prefix =3D "[ CREATED] token=3D"; + char buf[BUFSIZ] =3D {}; + __u32 token =3D 0; + ssize_t len; + int fd; + + sync(); + + fd =3D open(monitor_log_path, O_RDONLY); + if (!ASSERT_GE(fd, 0, "Failed to open monitor_log_path")) + return token; + + len =3D read(fd, buf, sizeof(buf)); + if (!ASSERT_GT(len, 0, "Failed to read monitor_log_path")) + goto err; + + if (strncmp(buf, prefix, strlen(prefix))) { + log_err("Invalid prefix %s", buf); + goto err; + } + + token =3D strtol(buf + strlen(prefix), NULL, 16); + +err: + close(fd); + return token; +} + static int verify_msk(int map_fd, int client_fd) { char *msg =3D "MPTCP subflow socket"; int err, cfd =3D client_fd; struct mptcp_storage val; + __u32 token; + + token =3D get_msk_token(); + if (!ASSERT_GT(token, 0, "Unexpected token")) + return -1; =20 err =3D bpf_map_lookup_elem(map_fd, &cfd, &val); if (!ASSERT_OK(err, "bpf_map_lookup_elem")) @@ -58,6 +102,12 @@ static int verify_msk(int map_fd, int client_fd) err++; } =20 + if (val.token !=3D token) { + log_err("Unexpected mptcp_sock.token %x !=3D %x", + val.token, token); + err++; + } + return err; } =20 @@ -123,6 +173,7 @@ static int run_test(int cgroup_fd, int server_fd, bool = is_mptcp) =20 void test_base(void) { + char cmd[256], tmp_dir[] =3D "/tmp/XXXXXX"; int server_fd, cgroup_fd; =20 cgroup_fd =3D test__join_cgroup("/mptcp"); @@ -140,6 +191,17 @@ void test_base(void) =20 with_mptcp: /* with MPTCP */ + if (system("ip mptcp help 2>&1 | grep -q monitor")) { + test__skip(); + goto close_cgroup_fd; + } + if (!ASSERT_OK_PTR(mkdtemp(tmp_dir), "mkdtemp")) + goto close_cgroup_fd; + snprintf(monitor_log_path, sizeof(monitor_log_path), + "%s/ip_mptcp_monitor", tmp_dir); + snprintf(cmd, sizeof(cmd), "ip mptcp monitor > %s &", monitor_log_path); + if (!ASSERT_OK(system(cmd), "ip mptcp monitor")) + goto close_cgroup_fd; server_fd =3D start_mptcp_server(AF_INET, NULL, 0, 0); if (!ASSERT_GE(server_fd, 0, "start_mptcp_server")) goto close_cgroup_fd; @@ -147,6 +209,8 @@ void test_base(void) ASSERT_OK(run_test(cgroup_fd, server_fd, true), "run_test mptcp"); =20 close(server_fd); + snprintf(cmd, sizeof(cmd), "rm -rf %s", tmp_dir); + system(cmd); =20 close_cgroup_fd: close(cgroup_fd); diff --git a/tools/testing/selftests/bpf/progs/mptcp_sock.c b/tools/testing= /selftests/bpf/progs/mptcp_sock.c index dd2448d1e7fc..2a0decd78a0d 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_sock.c +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -12,6 +12,7 @@ extern bool CONFIG_MPTCP __kconfig; struct mptcp_storage { __u32 invoked; __u32 is_mptcp; + __u32 token; }; =20 struct { @@ -46,6 +47,8 @@ int _sockops(struct bpf_sock_ops *ctx) BPF_SK_STORAGE_GET_F_CREATE); if (!storage) return 1; + + storage->token =3D 0; } else { if (!CONFIG_MPTCP) return 1; @@ -58,6 +61,8 @@ 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 tcp_sk->is_mptcp; --=20 2.34.1 From nobody Fri Apr 26 19:25:25 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4072072pis; Tue, 10 May 2022 20:40:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwu3l/6rexUBadH/+0BBjZCRUGT5uZNDKkqSBzEpBa4ktRttCsITEj8dwP/te+Pz6CXdUWo X-Received: by 2002:a62:1ad4:0:b0:510:c635:e516 with SMTP id a203-20020a621ad4000000b00510c635e516mr4667153pfa.42.1652240429448; Tue, 10 May 2022 20:40:29 -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 c12-20020a170902c2cc00b0015e9643c383si1018527pla.337.2022.05.10.20.40.29 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 May 2022 20:40:29 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5216-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=IMahOXzG; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5216-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5216-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 1475D280AA2 for ; Wed, 11 May 2022 03:40:29 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 073D515C4; Wed, 11 May 2022 03:40:28 +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 ED8F515B4 for ; Wed, 11 May 2022 03:40:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652240424; 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=GBFdHU7SOMGVcbVv7OsaEJsj7C74mLTXe7z/+3sQLXQ=; b=IMahOXzG6+b9pd68s38M1wO7gbQIHpBdAhfCXJLS7YuG4yBLnKLEW3BXuNjJDfIJhxbG4h v/zELGvK1O+h/5RIliAhSDJV9HgCQYiillB8xan+Jvkh6kCDXinz2NdvSwvkegYr4fahLS WHXcPJwu7p02My8undv8oaESb331wFg= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2105.outbound.protection.outlook.com [104.47.18.105]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-41-UIqSH9iuOlWN5KGyFYiICg-1; Wed, 11 May 2022 05:40:23 +0200 X-MC-Unique: UIqSH9iuOlWN5KGyFYiICg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JDjANaoKCVS5ivC3wfY44LlvzCascwQCJKeKAbzah/oLrHsKuFOHD30SN4RcSgjbkXfGmcEdJBbinaCrWADfVXoqPGdz/AmfWNI1ZwQYZDk7GtPQvSl9dgbkoJoK785926uC7Ed2R4zsQzuP5Tg55FV1qxkJnUBnyyovLQU1qI01+BU9ln0vzuh6VEwrvDLNxNV4k72b0+01BvLay2vX64PalU0tB/C4/EFzDv74IXNG4dt6bWz/wAdAUbsz43q2rNC/VpWnDcPd5kgMqYs3j5/RrpLaixPihuoCGJJgJqLSQDaC8eloLyQ2BdfN0ohA5zgmjRCMW52//JFVeHtSlg== 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=hWO1GTIGI0xmFz/FXIpGrJOe+oqRO6fysUx8YfnmRKg=; b=d5vKO1BeaHuapgXfpdGnZ0mPpCJxT+5XIOkS4LJ73RgV6L37kWPLM3kN8/TGrg5GKDOmyQXdga+TiFMKGEeNFT7Utb0JMO5NCNZc3LPGIiy/VOuX4J6CFnHvBXuFHxJEBp8V7P6OkUeumSu1FcFwRpZvYniLYmmNo8WHyaNHWA527ygym51xqggBUmPWnZrCGCFHMJ9ccU2r3CBnAh2PD+P1S7Zk77Tp33BScUiyFFslYZ5M9vHSagEXYf3Gn6trKSd1hP7uPtKIzBMY+zwaJ0wVjMY2sFXtrHFhIQ3d3b73p96cY/Bm2teQ/Bi0aL/QhNYB6/Q3qAIYi09b273AdQ== 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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) by AM0PR04MB7156.eurprd04.prod.outlook.com (2603:10a6:208:19b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18; Wed, 11 May 2022 03:40:22 +0000 Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7]) by VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7%6]) with mapi id 15.20.5227.023; Wed, 11 May 2022 03:40:22 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Mat Martineau , Matthieu Baerts Subject: [PATCH mptcp-next 07/15] selftests/bpf: verify ca_name of struct mptcp_sock Date: Wed, 11 May 2022 11:39:08 +0800 Message-ID: <5087972053f44be54c5c49f8efae7a92dde54e2e.1652239604.git.geliang.tang@suse.com> 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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) 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: 97f415eb-5556-4b04-5263-08da32fffa2d X-MS-TrafficTypeDiagnostic: AM0PR04MB7156: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: J6qLNGLbHAOacbkqx5TcN9MiHXEIo4k8BRDKTTLm/EH8tf7JAE1L0ou4PoCA86grb2m/KV7dG0AuXULFmmSLBoLyfn/z+t9EqlBH5eGa8QszalL6WFWkjzDO/edrvSWlUq/6ClEYD00kRMxCxNBJgxSNWK1bOfC1Xh/KEI1OhjemGzNMD3jcxUREk+ZQQeOSI7MFxRlyf4DVCknfTW/Rp0pSe459mVwcnAEQHDzI5mCnlpjltO41rvsBfUELoB4BnvOvmdUkq9wXlxxnq6dTtfZ3Dy6QLIma9Sg/wtuGx1QYGagijsWq6gGVqOz30Y9neDUtpE1Xj+WZj5hdUNeWTdSD0VbbbE75P2hJ3K+OafddWz/8ArI2T5+K1vs/LWw25yPpBPTitivLNb/pe+WkE2ENzZ8T82wxe4Nu3fG/wbyavdblQKTN2DDfAbmaIdDH93zp7sC3lVrXPjP7+F6qFptJOatBX29kfS69hrEwC5Iv/HtOj7XH5+THQOdhuVoh4RK6nSChbsZcSFz3El6PtSKaAFm7Tg5AWIBjjXYEsqKxvTmTDXvxqC2Kn9B2VsKQLwXpHG8tg/6lMIE9WBXaZEPbgV2F+M/nwUjArC4szZmFsK3dQRDi+ctCE3s1MkIwlV2jBy3Bt18r+hhcZ/cC8h61V15x//felpqLkOEEhVqsvC4U5laVv9SN7qOZcqRD X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR0402MB3503.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(6512007)(86362001)(5660300002)(4326008)(2616005)(6486002)(66476007)(8676002)(8936002)(6506007)(66556008)(38100700002)(6916009)(6666004)(66946007)(54906003)(316002)(508600001)(15650500001)(36756003)(2906002)(44832011)(83380400001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?pCJvdHXWjzk25sz8zKFg17tWzH8qtQ28dAMRYscttM+tk6cz0FWL0rKTKZMO?= =?us-ascii?Q?z/KMrfgzm/7Z3MUkB4gzysTwyopaW4vVJjcemdPYN6cvJb09gXXi5Qb4TFcz?= =?us-ascii?Q?iOdSIoLETfS5Py4MpAWbPNInoKgLfSRby4alNxJ/JRbrmk/9ibTLkZB4eF8A?= =?us-ascii?Q?oLwuUsJa2FrewCgE5GjL2qUadS1jXC9uzWzZ9KNe51e/5wDC/wfQPENp9DrS?= =?us-ascii?Q?c70FPVf7qmogTWWRkQQedutQNC73jQ9aqTJLHu6N/LVuH77nk0sEaTCuqwrG?= =?us-ascii?Q?LYKrhGklzz7emwJUhzmXN1COD/vhrdHH4m56AwqvG9Ew8EMqCvrok3ln+M3K?= =?us-ascii?Q?cBgIjjjAE3PEJvUpZkjuB4mwMhEByXN/Crbb8ehbiPRtvja7F1G2Vk+AhZyg?= =?us-ascii?Q?kEH29YJl1AQcj9M6Z38yx3js9SjMpHi+NTzYfDIY9gkLLtSwTnXTPcqdeanB?= =?us-ascii?Q?nwKO2Sj7rYctqJHZc83M4Y35b4DsP3267fhVG4snr51gnIZ5bfvL3EFuYx4s?= =?us-ascii?Q?ad/evTKqO/HbZ9r0q1W+tRm+YMePbyDEPsfM2m1k28UJXb9NoU8ewRF7+s5y?= =?us-ascii?Q?DlX6vANduPqJF5rRK+Lx/MMRE9zNtRVWo4aQZNA2nids7toiJ9TiZVV/b/It?= =?us-ascii?Q?sRI6WVXDFYdIwk4xp7iK5rihGPlKURKZ1ASXcro0K6xq5lQEahLcE6BfRXRp?= =?us-ascii?Q?Ia2w1sG3xBua4gybFboj1viN4VUxmpAhuIaL6Rv4fXxfkrpTY95jd5VBJBX8?= =?us-ascii?Q?yVXBLMWS8KJHOjhCsF+kxgIHQfDN2k9kOvEfsKdszMP2Jw2jgQy/wVspqgdI?= =?us-ascii?Q?eoJIUZWj2bYYojX56e9cj+m1igo0ykYM3SDaSWMucKxxkoa+V54yCcZwnl7+?= =?us-ascii?Q?rYyZvqT1eGMnoLFbSg/ypxPCcg3ZJy3Z1PnrzAWyzVjdshD5KS+ly85C65eh?= =?us-ascii?Q?hhtk5cfIgq4LtXsMxsjpdgIfL31knNVZo0Zg0Z6ffg/AMxHtThk81iatwBmS?= =?us-ascii?Q?UOH95/8552BfmSextbX/csdbkdIBKmy9fMNMoIqXKDntAN3tpYf4G8wiivHz?= =?us-ascii?Q?C+0yFUrFEAnp7LY3BRlf6C9AsKURdOuxSFAGIrIFdZPfWfSpvtP7ypfw8jHO?= =?us-ascii?Q?JVbh6TAVA+nTrLl/Xme+C3DrXTxkQrXo52xu6LtMdw3gLlBGRXKVjCVx0i3t?= =?us-ascii?Q?mrHn9+29z6nDG/ZFJk+ZuWP1uCrZOWgWzSgEXtDU+X/Fqfs7CyMeTZiGrZHK?= =?us-ascii?Q?ZHafYYrF+RQSUVzHPjgASh8Q79CMqRXDFhNBPfPbF/dleNbKTvoINUef2iA4?= =?us-ascii?Q?FnizBSeCwTcVQA7YVu0XqX9YLHPvSGq05F7w8qH0DzxW2/B5VzXKBW5cXX5q?= =?us-ascii?Q?0MKfPMepU59kSny+gSV7j777sP/prMNr3ipYiUfOROe/m/0MiO4If7Fye6bi?= =?us-ascii?Q?B/uD8c4bDpgY6uX9FCvXFgRFCQwTi8ADP9FoRgIkEUBXsqMsDbEwb5lwp+yx?= =?us-ascii?Q?1V8zIglmJeHl989yLHJMjHgjsIpMxUdZRQEiZhlgw9c7YkIXydUmtzCG0YVo?= =?us-ascii?Q?8pSI7zrLN61LhYDXYPF7xHGhCOA+8vm0LhG0qb8RbO0lUvcZIqMKmvdKnJtm?= =?us-ascii?Q?8PsYa726UzUvNL0KY00gF7aibXDclXH5UGxayHKkSpgBQD/ifqGP4YgRDPTI?= =?us-ascii?Q?NwWJiPwSDBiJRAnQTwsXsrjyuQ0EABicEOwVZ5U3l4LzDEDV0EbqxlOPkYVX?= =?us-ascii?Q?qSppeAH11TGOeHMwo64JOSFy6DMGfP4=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 97f415eb-5556-4b04-5263-08da32fffa2d X-MS-Exchange-CrossTenant-AuthSource: VI1PR0402MB3503.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2022 03:40:22.3544 (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: mVlg0TX8wUGlXpduAh7asMPG7LHKk6omZCLfMOY+VVdYqltHDBFXsfaPmLmqt9e5xRnji9sVZ3MHl43a/UIXQQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB7156 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 | 34 +++++++++++++++++++ .../testing/selftests/bpf/progs/mptcp_sock.c | 4 +++ 3 files changed, 43 insertions(+) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index eee49cca092a..f882915b2553 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 { @@ -229,6 +233,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 ac98aa314123..2ff7f18ea0ce 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -6,10 +6,15 @@ #include "cgroup_helpers.h" #include "network_helpers.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 char monitor_log_path[64]; @@ -75,17 +80,40 @@ static __u32 get_msk_token(void) return token; } =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) { char *msg =3D "MPTCP subflow socket"; int err, cfd =3D client_fd; struct mptcp_storage val; + char ca_name[TCP_CA_NAME_MAX]; __u32 token; =20 token =3D get_msk_token(); if (!ASSERT_GT(token, 0, "Unexpected 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; @@ -108,6 +136,12 @@ static int verify_msk(int map_fd, int client_fd) err++; } =20 + if (strncmp(val.ca_name, ca_name, TCP_CA_NAME_MAX)) { + log_err("Unexpected mptcp_sock.ca_name %s !=3D %s", + val.ca_name, 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 2a0decd78a0d..52448912fe5d 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 { @@ -49,6 +51,7 @@ int _sockops(struct bpf_sock_ops *ctx) return 1; =20 storage->token =3D 0; + bzero(storage->ca_name, TCP_CA_NAME_MAX); } else { if (!CONFIG_MPTCP) return 1; @@ -63,6 +66,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 tcp_sk->is_mptcp; --=20 2.34.1 From nobody Fri Apr 26 19:25:25 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4072127pis; Tue, 10 May 2022 20:40:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyeH0cd87lXMQqknUvMbGE8mhqj55NEOqym1RY9Uo8Wbl7/l3TbpeoWeqswpkKg3unibtRm X-Received: by 2002:a63:6b42:0:b0:3da:ebd8:2e38 with SMTP id g63-20020a636b42000000b003daebd82e38mr4997487pgc.273.1652240437069; Tue, 10 May 2022 20:40:37 -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 x13-20020a63aa4d000000b003c66e022eddsi1407187pgo.10.2022.05.10.20.40.36 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 May 2022 20:40:37 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5217-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=Yk1bAhWJ; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5217-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5217-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 94D7E280AAF for ; Wed, 11 May 2022 03:40:36 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8766015C4; Wed, 11 May 2022 03:40:35 +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 139F715B4 for ; Wed, 11 May 2022 03:40:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652240432; 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=Tu235g8IKJ0G4DD1eVUxgajDzMCkYQ6WvGC+CcZhN6w=; b=Yk1bAhWJJheLMRbFZ4OD+9v3lOKPQdO1zs67WxoZPVJldODQMBLZ66ZAeAi2UTQYCTrbgO RfnTJ1rwznInlGTNBSjSLm6cg6YfztSfJnks+NYeHoQA7aDwCmhYxiPQYE8rJdqw8KdZPC t7kbjybWSSiLyUjXy9obTV+cDU2r2O4= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2113.outbound.protection.outlook.com [104.47.18.113]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-36-RlxQJaeuO1umQANbflClVw-1; Wed, 11 May 2022 05:40:31 +0200 X-MC-Unique: RlxQJaeuO1umQANbflClVw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FxECshCNiVdPbLhsVGsIWaDHcQ+BOVB5og9uGMTNSgD40AXbkr9WPbFhwMTTfP5F6MBM5NQmBCqyM9q8+GFXVe5ZXA5st4dwnCscfj7/lisfy16MkfENfBghp5qxoLDKRNkWuQyQEUL+yCH3KivWOVkU4uuomBPF7Pn853t6B5U94xvXfHFx40oqGoFhGTFNq3AaW8Jur3qmD7SbvEfGx2L+SQ5BwPQNlkCQusFsn+yDTvsRzhaKUEtQnveyAgloWpdqFjCG2yfNANsMSkt+bQ/pmSTwC95sHHkhc07oKy0+W2m6qRhhepa9cSqjHnA7cSg9+2J5tGTeS6V1flAG4A== 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=d/07qtSQrkARiXUKIBKQDzFegku/tzjLCEH3k8JCFzY=; b=b3HUUFhip1TFglCo7FugiosGEf2g8L2nK4ite6S9APr6dV7aAsSjitpdvGgpBzVHcUbgkPsxvZU1LjghFGg1aef60OMKv7cO5hb73tmqtlnPbi+W/o0O7JRGzedtsRb76Dwr3NYVKjM44xDlB31pFIrY4tVWxgrpJL15DwH3NT5INoDh1tLQfWHjyOGv5+jfmDVwGNMrXiXb9zxW3Dt28GGpLQKbdbJnIVSK2jDbfu4+S2o1LW4XAdWH1kZlLPr91EWcXrkv6tQc+RTdAi75NYT7oOt6MeXX+7u3/Ad8dxXJ0O2r1f0tAOmqVYIkm60jcXbX4yzWfoDC2EwQQ4UqnQ== 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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) by AM0PR04MB7156.eurprd04.prod.outlook.com (2603:10a6:208:19b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18; Wed, 11 May 2022 03:40:30 +0000 Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7]) by VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7%6]) with mapi id 15.20.5227.023; Wed, 11 May 2022 03:40:30 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Mat Martineau , Matthieu Baerts Subject: [PATCH mptcp-next 08/15] selftests/bpf: verify first of struct mptcp_sock Date: Wed, 11 May 2022 11:39:09 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR06CA0021.apcprd06.prod.outlook.com (2603:1096:202:2e::33) To VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) 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: a7dcd027-951f-4588-68bd-08da32fffee8 X-MS-TrafficTypeDiagnostic: AM0PR04MB7156: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: qyB3DEXnr7EDD/e8qExuu9HGrIrSacGpG27g1IvRJpMndH2n8chJpp5cpmu/Pcp4OlPlGsUeKjcJsmlS/NClAg/OXnMS5H8A1KU5sXa0aQDq4UEFpinnJ5FtctY6967XK4J4Iz9MQ135flahDg6xHCtyzpYADXSqa7OlqYyDsg8R5CsvnEuHa3RjWY5EZu5/2BAvt3lwmB4h4KhrXKR0pcQTYhx/Y97d7alpmUo7xd1jZ4iLKP7qwWfzFxJs9pUlVrIZWVDdeBczLyGua9mSIIud9Q0Bgggtf07PtPhpafPQNDVQIlme6amNbRlwCplkFmgTQw62pBHWVrrKpAJpuEFOtghSwOYTkq1Rk+6Us5fFfnm95TxmiIrX4kV1q8pGEcElL6XzbIIrIwpmC9DtkcP3X8xFsaRYxYQOWNpRGXmQN8xCJQMizQLA9OhGV416IsPmHow3w5q1Sw6KZ+8NZScGDxpXLKHSpceJngwXJj9NgZ6/SBUFgYAtIUlVeHCWcTVMozrzK2sk5ZL0e8hdd3Xp1Gc/r0IU5hNhrfspW9i9R4rDOrR70hTYABWj/UxLz30ecNgLasB3hRdsL06HDxN9wn+//oTnurgy6wj8EwPOrTL/ue8oFrDgL1JE+hbQmrMSVHnROs/xv+2L7LXuWe6bXRIr3+/ZVBAD03chiwTEFut6E62SsOJp9rqHEUcp5s/qh5o/08xC8SsfVCM06Q== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR0402MB3503.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(6512007)(86362001)(5660300002)(4326008)(2616005)(6486002)(66476007)(8676002)(8936002)(6506007)(66556008)(38100700002)(6916009)(6666004)(66946007)(54906003)(316002)(508600001)(15650500001)(36756003)(2906002)(44832011)(83380400001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?/FyVu1LdpZ1pQT6cxmsD8F0YxSjLicG5WkvrBhvKriUamo/7JSpKW7u38cjc?= =?us-ascii?Q?RKBJFEtcqABtwUgX4CaG3WpZoMlSwiTRWgEauyj54lzo/WxnQ8W8mDx1aY/v?= =?us-ascii?Q?GKz/p4i7YCCk3BzQWAiZN8xhfLHaZi8FNJstoUdrrJn4QaywveK1bq8H0pgW?= =?us-ascii?Q?Lx8Rglrxr0+gxGIVP372/ZkRzGuHlghr4dRwYXEEz/KoJ+WWQOsVlm3VUEkU?= =?us-ascii?Q?X8Fl2/kPnYu/bU8h6cHsrcziFzPitQpafOk2gwjvnZj++IuWjGGISrgO2vGy?= =?us-ascii?Q?e1+JpKbhwQdhacs+/HAt+sH3UrIiuZ3218GrU2qwfqRUGw5dMi3kkz2rPXH/?= =?us-ascii?Q?quh9BuCa3sVBpkmkObDeGh7QbFyaZx4IINiX6Q2h5ZuMTEcjLSBkbXHn4gqd?= =?us-ascii?Q?Pa279nbcsaqLOxBOt5Sztj7JMPbOixfyG/YstzWUEnj3z6oeQIGhtEMWDNUP?= =?us-ascii?Q?GlZFMoRdDeSVGZw1NUYyhiShEfVLPTpwi7ipPp6KyM5MB0td2eRIt4EDDswC?= =?us-ascii?Q?KQgXzVMVPmDPR/4VzMFCjvmpiv6IeacwZ/wvTrNPIjabywaOl6pYJE/nnevL?= =?us-ascii?Q?mS3H2e5/1AzFBXR8g4Hn1aucaF7N1d0lZzNpNkbYycxzvhJwWfsFUhrpsPSf?= =?us-ascii?Q?LbAgVJHdAGheMWc1QFb0v9sDzzEoMph6XxOEDtnq+zEHW1zljIwT+v358htY?= =?us-ascii?Q?DKlPjAx+or59zcuxVbm6HYelVPGZKW3v3Soh7N+LuiEbqcIEPAXVIjnZtQmM?= =?us-ascii?Q?HSWzrv/Xw6UWdCRAywAca8hZ+t8HKz+NnlY6kndl7hupFEkxVU64rd5r6tgk?= =?us-ascii?Q?9zaxZZB/n1WOaNdS6ljRaaGkYhH8EoY+Jvbzk8XKf86r/4nYX2HJfOZeIROr?= =?us-ascii?Q?SnnsFafyOFh/eAWpC1bMFkpSeQl36GvyUn7WrvoMw5XLNUiC3frFQrODCpI0?= =?us-ascii?Q?kfRzCdO9z15KxRu0UZ3kzn6FRGw4RlZDtXqyvx02a55gpT5A6vSkjvkNGj4/?= =?us-ascii?Q?vUdAJvlik/dB5Z/l0HUj6nQO4+peFMWVLZe20zdR89a7ObfXVm7JUyuwJU0i?= =?us-ascii?Q?QTNljEUdEQ3pSqeJwNGQ+gHZmQC+s62zXUVYsYOzaF5hQYp1vnePV3K9On5G?= =?us-ascii?Q?GkrVJg93y4IBsFQ/lbBtpHZMBChCkRpKhPabetNNN6BARtLZSUs5p7ZWg/3D?= =?us-ascii?Q?kmPxx7dBJGPCnC4IkjOscfPQov9h0ErtUjaJPdaBUqUK8N3TCihfIwKrCkJg?= =?us-ascii?Q?64tXFVT6bUKiolbeoCeguFF7znUzHhzKKFJgYyiKqTS2S4Mm4cTpp0BnRNfo?= =?us-ascii?Q?SBIxhrTkt1wlbyi9h7YfYHiRd+YudBjMZlqMwysXztakokFjFS+T2b2kSRKY?= =?us-ascii?Q?pI/y4L506JFfD1MGLR5eh8RFuQk2PFP3tytxIKLMJ3kbTz04tabiY5fLtwJz?= =?us-ascii?Q?eiiOmZdny6Tdw0K1GYuMyv2ZySh7oHKgP3BTUibIyQ+JMH6+XKkxpTMWXNyt?= =?us-ascii?Q?VDMoR/ddjEhRWebX1OnMoqr3ldDbTO4Syad1WIkm6kODmSeojr+epA+BouHP?= =?us-ascii?Q?cOWThmHf7lrS7jj7S9T9MvHsKkObnYMnyWtU982e913smgXMmDOKX7j9ZBIw?= =?us-ascii?Q?0bxyZ1BjfV5JgeGCV+gCphI40SN83hPIyRT6a2wEczJ/eRpXuOHX40335Ium?= =?us-ascii?Q?4gyiwvW6MjOUPDteZlk708d2fl2rhHyrshXeTSkLDmCK/24zk0D/B9urrEMi?= =?us-ascii?Q?yvKzCWnitHg17AImLIvagbJcYrD2MD8=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: a7dcd027-951f-4588-68bd-08da32fffee8 X-MS-Exchange-CrossTenant-AuthSource: VI1PR0402MB3503.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2022 03:40:30.3852 (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: kwTLlA5w4hVItRx/yXOfNijj+gcArPeNl+oJ33C/mzwiCvedSUM1lGzLzmdaWy0sEr0vYHJWisoQ0CMGySNSWg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB7156 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(). 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 | 8 ++++++++ tools/testing/selftests/bpf/progs/mptcp_sock.c | 5 +++++ 3 files changed, 14 insertions(+) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index f882915b2553..f1044778455b 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -233,6 +233,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 2ff7f18ea0ce..51a3e17acb9e 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -13,7 +13,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 @@ -136,6 +138,12 @@ static int verify_msk(int map_fd, int client_fd) err++; } =20 + if (val.first !=3D val.sk) { + log_err("Unexpected mptcp_sock.first %p !=3D %p", + val.first, val.sk); + err++; + } + if (strncmp(val.ca_name, ca_name, TCP_CA_NAME_MAX)) { log_err("Unexpected mptcp_sock.ca_name %s !=3D %s", val.ca_name, ca_name); diff --git a/tools/testing/selftests/bpf/progs/mptcp_sock.c b/tools/testing= /selftests/bpf/progs/mptcp_sock.c index 52448912fe5d..4c939e04b391 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_sock.c +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -13,7 +13,9 @@ extern bool CONFIG_MPTCP __kconfig; struct mptcp_storage { __u32 invoked; __u32 is_mptcp; + struct sock *sk; __u32 token; + struct sock *first; char ca_name[TCP_CA_NAME_MAX]; }; =20 @@ -52,6 +54,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 { if (!CONFIG_MPTCP) return 1; @@ -67,9 +70,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 tcp_sk->is_mptcp; + storage->sk =3D (struct sock *)sk; =20 return 1; } --=20 2.34.1 From nobody Fri Apr 26 19:25:25 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4072177pis; Tue, 10 May 2022 20:40:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxyXyoLDXAlh3c6Dh79me4mcRwElEPBFoujQfk6frEUq0SJIYx3GiZv4RTcJM3s3GQ8hE2+ X-Received: by 2002:a17:90a:5215:b0:1ca:79cf:f3dd with SMTP id v21-20020a17090a521500b001ca79cff3ddmr3232480pjh.6.1652240444637; Tue, 10 May 2022 20:40:44 -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 e3-20020a170903240300b0015eb33b2f0asi960919plo.525.2022.05.10.20.40.44 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 May 2022 20:40:44 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5218-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=iRfpSYoL; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5218-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-5218-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 39034280AC3 for ; Wed, 11 May 2022 03:40:44 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 47C3915C4; Wed, 11 May 2022 03:40:43 +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 0D8C615B4 for ; Wed, 11 May 2022 03:40:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652240439; 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=ihJ4REGzQ0YWsJ7ntbQs23JaJ+6t4W18ivm6EXexG+Q=; b=iRfpSYoLxSdWN2YPBkLDhZjqNewJrFJkW7l9qt6CK4KEnNpefAiINEkT31yk7By4Mq1Lo5 eHyKVvlkRSvCVuf6FUFZQ5JSF36RroYzdUnM9A3YI0GTvbVy1vKtWqeeoXDXAk6YoApirE q9aOWfOYUh4BRc4xUKdH6il1VTX4EsM= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2110.outbound.protection.outlook.com [104.47.18.110]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-17-lz2pbmVNNMeYSeZm-XDeDQ-2; Wed, 11 May 2022 05:40:38 +0200 X-MC-Unique: lz2pbmVNNMeYSeZm-XDeDQ-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jLkITqH9lI/lWLKHYEmMPbIBn/Z0yvJLlryNbySKmxGAAm1cG0v7FGzcjijWgkn69oY7M/4ZNEhiT0OicHf4HnmfkZcsONqHJtW5XNKXjPiFbfyhhqF5LxR/v2tu0LBk9XUN76/y7veU6c+unC/f/UmfvFzoXd3BoxmgEm79cUQFhjP7xuCcfcrEd2gJnoUunl2OEX5442nNUFqiniAv3ll9AALSN2IOdwDHELAT44hfnWJbZawEtgBhrcBCcdHbfQUFaxUnj3+qDDeI9SJqU3D2OMBYy2YG3vGJkz2tye3SWwNX+470NZQJjBUb3Co8ZtYqBDPoPMrY8+pwYgtMPQ== 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=Ozj8fcMKkCMSdyKatnXE7jXrj+xg9HDHBRYWlRawFPQ=; b=NTGgII/rS3vjfxoJHPk43zN/w+w7s3pyQJ1XoNDOr5Mc/5wsZmO70noFc8/qhnby7s7xxFVu4Q3IeO2AB0Ekc8xxJeJ0d1wtuHpo1kYglYdUMl/39uKcK1PTPbo5mPl5Js8JlqLeeh5u3XRepr2O4Vo0sFxYl0vNiaflOu4P7dFGhC34a8fQ8KfcbR7vwiB4surPGWjwQcAEFsxqdi1GWhrtlA+PwfFymI5vduYFbapYVs/IAX0HOphThze6bKsHWBOLVKy3rLwQ//nGkYHWPr7PoCbfC2+ZfzsDQv/XOo8jOLrBiTpTS4W9o0HM4Qo0XmzUP1fuhtBax/OyJ5yyUA== 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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) by AM0PR04MB7156.eurprd04.prod.outlook.com (2603:10a6:208:19b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18; Wed, 11 May 2022 03:40:37 +0000 Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7]) by VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7%6]) with mapi id 15.20.5227.023; Wed, 11 May 2022 03:40:37 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Paolo Abeni , Mat Martineau Subject: [PATCH mptcp-next 09/15] mptcp: add struct mptcp_sched_ops Date: Wed, 11 May 2022 11:39:10 +0800 Message-ID: <0ec1339efeb6939f9acf2d79aa43102e1724a3bb.1652239604.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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) 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: f5842f86-5098-4f4d-5df1-08da3300033f X-MS-TrafficTypeDiagnostic: AM0PR04MB7156: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: 9yS+soolOmT1MDaZkaUTGha+6QuXCiHAIov+LguJW+JBnpd92k0EhSmq0S1EAoQJyoatbrHozSWtdcvanjfkPS3nN7ckKg/uf2xi939ig1wM96Tafqw+r5sVXroaz/2xt7CCsaf7/asDwgEgbJtFTG4N/G23T6BtP8jbcdK3t5HyyORJwhkY87pg4xzKBT78+Q1azpqu8tZ5fdmNvXobDlHQ5t5QYS3pHuQtO14uePwU4dvySrQJYrjFg9UUJagh4qs+DuP0QFyjFVX3l5SykOf9JWomD4SqD2GSbN/8+MYTpHMpD9ozJME+e7lUMYYjB0+E9V918qKzvjfShEWM8MbafdGHnfoz3Xnx9nyZ0lJhrMA45eDVRDeFTru+iymZwksCfTdfWugtawDJQo0ki1UHaXOfbZuYgFKzWs5ALw8R35JwBlc9M9cViMUCiDUQFnXWysPUx3vadlSqghzUVW8TxvlSdhB1YgOz7qc5ZffeSa2jiPDjsMHczoXC5dP8IwviMiYD6atZNIO+XJaFaBVPGvx+ylhS8r5WoymETLeaFrFCjeHTYdfX2aUE2OopNHb9WdYlkqDF0YX7+YPerxGe50dF1qZA94sMo+llsPkoUPy4kgi3LCJealHy9XIXREHwHjVEjEOEOTYwNj83kEPatih9XN78hgqvVr/NQRK0NB41KXLr+DOL5T1nt46HoiQhmT9jaufua8TaMG4JdA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR0402MB3503.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(6512007)(86362001)(5660300002)(4326008)(2616005)(6486002)(66476007)(8676002)(8936002)(6506007)(66556008)(38100700002)(6916009)(6666004)(66946007)(54906003)(316002)(508600001)(36756003)(2906002)(44832011)(83380400001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?P2CJ3nw39/KNjBz76DXoJHYmtgOrAMC0BmUXiOa2HrMLgl+B6kFwazVj7vtA?= =?us-ascii?Q?2XTTZU4BobxxpOhWGCCIuMZwjMbKCO2Hd8IUT4HH46cluUz7QAe7bL9YHFtZ?= =?us-ascii?Q?WSMmfGvv3Z06IZYs08a13z0z5OGY8qGbphvwI7T0zomipaNPDe88SK6bUgRd?= =?us-ascii?Q?Z5513zVxqT+eWPcaDIt+aUp+OkfCiT1HqAfoSx5lG8YbDL7bOOEr4f2arCwY?= =?us-ascii?Q?ko1uqRUyNbemxv/SBM791lYb/4vggqboVP0JuyLZ3QTcBYUuOA1sUScK8jR8?= =?us-ascii?Q?OGTKAlN8qbzQ6AZXXsJ4KoUXCk8g8gHgx5fAXZ4+OBCSncUA6gnfrxX15R2Y?= =?us-ascii?Q?lKgh9XdgNO5RwEu7bbLeHJMg6bFNIvt2YZXodh5fwDtuxAUTolLWsVEyAPz0?= =?us-ascii?Q?HUV+WvRQS2ErLwisnbMPC7c9reTkyMdpf9gFbkCsIPvWMko30Z4AseEvUNt5?= =?us-ascii?Q?MSopD3czD2ba8Ql4sDlektczxINu7q7FStFJEsT46TVc5W47UdJj0HgcB09D?= =?us-ascii?Q?VV+/AE+yVFOuf1A96Q7mIBL7d1VjOZQSx4RnFON7Y0bXS4UQ+ilu9DOOy78d?= =?us-ascii?Q?36Yc4ochU6PYUXK9Qez2AZfuHvSyqkTBUMRqaopQbGqnAmNgLEZbMb5377QW?= =?us-ascii?Q?2ys8ZawDOqgf+tGRpziPizumvqw/8F7YWnDS3wh4yHWuA817XEBBXfHMxU5m?= =?us-ascii?Q?2/Ev8agxz8eoytQ1lsPtd3Bt7EN9hohUFzH47sgXAPrrfxT4bkFR3VJIX4dU?= =?us-ascii?Q?KXo7G7/aSO2gnMmVAbCWn3nTZWBHyxw3XRWkSEE9yvW72FNhiTJWssBzUrTr?= =?us-ascii?Q?0M+ODOJ7IUS+v3ca2IYUhWHxajzHy5pZVqZq9ukgW661pCDy6nmvjL98Qskw?= =?us-ascii?Q?E6UX7zOvhPl5udPWtux/r1nr62TvUxlaaKTlJgla75XUlju13ieNQGTjNcyP?= =?us-ascii?Q?ULWGCxmJ8umQo0gOjQOW0NqjrFvW47dpvI6+C1w2eouFVB9oL4oye0B7ahN8?= =?us-ascii?Q?BCaNKrptdtcFuQnbvrUdd1pbmVCYX684tXZKqqKe0kH4xz8eoBQefbzwuX8W?= =?us-ascii?Q?OyvZoKcGrAR272U9AAQi7syN/y3YAShZxw7INI75mMkW2CcTebRXrKGa37RM?= =?us-ascii?Q?acEXY2S50DeH1vqnhODt7sUOq17vrGLCAB0xIpAo5ORqmUeqUNS73fUUAJb8?= =?us-ascii?Q?OsgKiMi+XF+W/7ZQ8gIzagCYLI3yE05KdeyPW9+s05/YUZXy1JsoYdznZMoz?= =?us-ascii?Q?F6yk4ZZ3qId5c3tTqlzwU4F2/+/9jJqXq0uLrM2IAJh1+6O4wGXw7FPeuqM3?= =?us-ascii?Q?HiJNUV4ohjm+DR991f+ADE8fiBmA1+gIJ2v0Fz2M9iXBiQ33VBpG9VYSKc9D?= =?us-ascii?Q?PYhIPAgZE/WfnR6heJR/dY3YzYpLJTryY9XUebxnjXFpJQRL9D8nEab82tIk?= =?us-ascii?Q?aK+88rcFkabTwc7H3hC6eLTDDb7Q0+NatDG7jZEkG5LrQAt2V4BQCYUgIhfx?= =?us-ascii?Q?18UakEeSEbUXPqd/02mszm9iLSUrVkrdCuwDd5iJJYyvVTAw34136NsXiMbq?= =?us-ascii?Q?JryILWguNR3jT9KTBPKJF0QwjhMcLZI4ULyul7mOHQaYxcvkBR6b38e/dyb3?= =?us-ascii?Q?3GyV8T8rXJSNOPFiA0e4A1yGhIRFAR92X8pAQafDNryvQXV0nfSwhHNKz+xX?= =?us-ascii?Q?d4wXfxD+bMc7mc7hDXeFE+GXPHRNNaZYIHfUeJur+U2ouXlyjP8K/9wSe2GR?= =?us-ascii?Q?y0bKAxzdQK4q8YTpV2mpTb/hT1HHvuY=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: f5842f86-5098-4f4d-5df1-08da3300033f X-MS-Exchange-CrossTenant-AuthSource: VI1PR0402MB3503.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2022 03:40:37.5409 (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: 593C2x6ZPjPqnJYjyhDXXQhJ8TGekDHQ3/v/qBdtMYuwL7uge1DkKEx1gt31H9QF2lGxIFrB2w1Q5zbwB9b9Qg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB7156 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 4d761ad530c9..b596ba7a8494 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -95,6 +95,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 6e7df47c9584..8a7f68efa35f 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 06b8ebc15204..2f6c4486a009 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -621,6 +621,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 f1044778455b..ff4d57993e10 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -229,6 +229,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 Fri Apr 26 19:25:25 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4072278pis; Tue, 10 May 2022 20:40:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzgb6E6IeD/P2tgBm5fBUdTfaGsz8nNUfh50uHRwiJckjXGqYc6la//EfTrnHlzrPM8ncnj X-Received: by 2002:a17:907:16a9:b0:6f4:f0f6:3f35 with SMTP id hc41-20020a17090716a900b006f4f0f63f35mr22459562ejc.683.1652240454256; Tue, 10 May 2022 20:40:54 -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 an10-20020a17090656ca00b006e83fe14ac1si1032282ejc.554.2022.05.10.20.40.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 May 2022 20:40:54 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5219-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=Kw0q+6T6; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5219-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5219-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 BEF732E09F5 for ; Wed, 11 May 2022 03:40:51 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7CA5815C4; Wed, 11 May 2022 03:40:50 +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 8178E15B4 for ; Wed, 11 May 2022 03:40:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652240446; 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=dNw6Z2XuNa3NUByUXk4xw3jn5EgSKzAkowrNy+Viams=; b=Kw0q+6T6+fw6Y1VLpILm6XL4FIf6bcmMBIyHH5oP1QO3f9mlbeS4tnZHXD0KGCGptD6bpk 61874iyqRSHMA56cuLMgOmyHWhO71vJ3uXakG8j6I1uLxGDodvmH1mdydgTqqdF3WuJIS9 u11VDakhBC5GjJmvmkbHI8/hKZrcwP8= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2113.outbound.protection.outlook.com [104.47.18.113]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-23-PowLNyJQMw-3wRr421Prdg-1; Wed, 11 May 2022 05:40:45 +0200 X-MC-Unique: PowLNyJQMw-3wRr421Prdg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lgb4LMtYvMZrg9E/GBY7FPDaMhItfjoc6Gwz7VS8jUls2/4g5JJMhXw5TA8SUS8sSn7lR6DCpusiiYlimaMlZYrjUygmvPjWWvkTAkBjOqedOfcYdDqpW1yovcu+iC4nJYx+WdO9y+eGkg9UJ1F7dhFG+AM2DrCrHzYzDKSMskn6LLtd7Czq8Lg5Cub9AEn4ZufOoF7WOGoSXbMr2azpyzsm+aa691ZxSnPdfCT1VywJawvknMBju2KLOkhWq7eKpw3PFdJlG9Tu/gBbIHoKEN/d30QrgjvB6RGnV9RjIwWE9ZL8Dk6RbHclUmksjt7B3pGa6jf1hBCZmxydv+IMGQ== 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=ZgVHXz8c0FkJs+CAoq6vFRlqNbJHmy3lfrT7rz2d/ZQ=; b=a0xAeP+fteP5aB2Jjn/IUMrw9Tdh8WJSV8MKDElZSEYpATDYYrc0GvYpVij22hPiScS/lxbYlnS1SkgchpFT8V9loR1r0GJV6Nswg6jNurwklHXmSGDAIx6skJF35P1qBF2IzhmEJKHVwpQUkDYm/Lza1hOmCsxz5qE0qubz6VqOADc4+MYV1uryNJh8VGrQumFXexPJAG6uXucC70OgGMBJj5yR9fNMFQIrARzsWt/pwS+glCEGQPPEm5bM6Ql7rWFgRhhG0H6a/J3iZ9O4e+arZ7SXk/Ecg6KYZ4F/on4SkwRLSBvNIl3gMWpQEfs8Bo2xhmedw9VHtaDK4qsgaQ== 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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) by AM0PR04MB7156.eurprd04.prod.outlook.com (2603:10a6:208:19b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18; Wed, 11 May 2022 03:40:45 +0000 Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7]) by VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7%6]) with mapi id 15.20.5227.023; Wed, 11 May 2022 03:40:45 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Paolo Abeni , Mat Martineau Subject: [PATCH mptcp-next 10/15] mptcp: add a new sysctl scheduler Date: Wed, 11 May 2022 11:39:11 +0800 Message-ID: <67bab16d588d0a15a114a8a19ac6c6e8819cc6dc.1652239604.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR04CA0058.apcprd04.prod.outlook.com (2603:1096:202:14::26) To VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) 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: 7beeff4d-4e66-4bb9-7a0e-08da3300079d X-MS-TrafficTypeDiagnostic: AM0PR04MB7156: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: OoprgtmNQSWCp4uTPW49b5ZWUf9CrK7+lxANWHCgfFRAGL87jyuIvSbpL8xrPiJYwU1eVCXLzw5yvQnocIBc82ZyhaKJQG82HrO6ZhZ36HF4oen9Ng6OgydXRhzwgYNQPwCh4qakP9SeQms2YkLDLyogSh0DrRTG6Fgkeo1oBTZ/Mzo0d3zhmocwLEtzTX+KJ99zi84Q6xShI0wmhybD+GtFPSPcd1Zcd5YzSpZjEdQPATnej8mMZitWdz4ukLSj3VVjiYoCrnQkCtv/w3YeoeXq9DtE11Kh57iZ+gEZxJuAbF3cdFxnlRybc3LQ5r7RLsAASP1tCJU4Hbkr2YRi888H56rGiT8BBhhF3cTkwiV5wJsMrAM3Et8djid86NR3n1OtVfDg7gEDw5HTk+ec0LtgMJqpVAMBDCTF3xRDV3NAoJLaSOXgdovs4Rbl8Ze4gXhU2FYx42cYthZ2P2efX32O2T0azcsZa7fFFxQbAthlZr+DppQkgQmKMayO88OzVxRltmtBQUoPZduSMBEaPfEMqEW8oHVGB276gtVEgFavseiQXB8226/219kYjkZibDQ44hePEWe+nwoJwS6YoQeO8hpYqVN9NZ9lucUJmVciFQdcmQTlpTcBEIHmLiCEQ4vizNix8WPNBhVeEU4oi9CfXa3rPRTKEFA/6MU6UyqVHFEnXHt7JhNxNEjvTI+cChV7VElO/uxGUJ3ha1qhNA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR0402MB3503.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(6512007)(86362001)(5660300002)(4326008)(2616005)(6486002)(66476007)(8676002)(8936002)(6506007)(66556008)(38100700002)(6916009)(6666004)(66946007)(54906003)(316002)(508600001)(36756003)(2906002)(44832011)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GAI+DqQZguvmez46CCYeoKtsm6ZEEl+yGMKbekdZf51kYxg5rOxZWzi7E/Q2?= =?us-ascii?Q?6degOmxChtWP8Nt/n192O7B6pqmpasrZl5DeIqQNsUFfCTA1JiIxzQlzq9Fl?= =?us-ascii?Q?Otrnj/q6gfL6nj19z8D4Qk+6M9ycQktgfhatYtgnLsiYqQWe6JXaBl7y3Q0d?= =?us-ascii?Q?V1lMGVW9+mq21NuHgOj8wWgULCDr5lgK3tM1awJYtGeKnc4hQ7mgOHVMbvRQ?= =?us-ascii?Q?QVUwDmllcAmp5vcLRsqzuCY+JpqUMTpMlWPznNNIDrJcOCq3lxbMO8cp3k9c?= =?us-ascii?Q?eQpo/rUTU51Q5WqYWfIAo3BpfWFBsjQ/fNLrAzdc1TIsjBVz7UvW2xhrdXTi?= =?us-ascii?Q?9mLPRhHKHZflH0vYuu7DHfFfzzUVcdXUrQqpOrBGD2QYvbWuUvvI3RZCQHov?= =?us-ascii?Q?pPqrmdZ272pxS7+YGZP0duStvU43b7FtspK+7AXz0x6mN4iWv8Qemfr30MCd?= =?us-ascii?Q?W5RmoHGJq+dS8QMkS0jCqrPFZ1fDLWl4ZRPTCSwLK8yi20xzZSyEWsWq7WrH?= =?us-ascii?Q?k3H6HCGjO52RL/E6j33nNWnA4zhh3b+G6Ag/Xmx2/CJIf8lJs7/ysKBarX5B?= =?us-ascii?Q?nQO0WzmV7P1f2gfg68XtRZh9wGnYKWeM7QyhhSjVd6vzPhd0fxx0gJpsRJvg?= =?us-ascii?Q?7P6xNaJmHdvon8SdSRcaMjo6phMWbeRiuSh5G60tSuUXAfCUBRe+Nry9e3No?= =?us-ascii?Q?6gG+kuanhQA84hBNYSeYRQIOEKgOSuJLi4lTSI4hZjpi1ZQdg8M9i5o+O6HD?= =?us-ascii?Q?NmnuBRgizikZ9CYQq6C26RiEB4hbe94fzOtSVYiKATrVDc4thoRRDUkRlCGR?= =?us-ascii?Q?WtwNZLgwaZCtWgCkOFg0qr5plySVEf3i2KjEYk8MFBj2t0SnRMJcS/eVCLC1?= =?us-ascii?Q?ADPzCbHXHQi42MRhiGZZvw+wDo+1e5SPn8KTmW7DjxyOooTARz/wHGth37cq?= =?us-ascii?Q?AdIsF4hYy4CcUvTHjVrpko3TuRPzvTF3+2cNZXslMdthiF7lPE6Ct05k5BMh?= =?us-ascii?Q?OBZBt6VYy/b/7Pz96IxmlnptNxGCJdCGJ8FZzX9JFyMMFr8cEyaKrY/elcQM?= =?us-ascii?Q?Dr+2wHkMzKF+8Ga17wLOfw7EdDwsbAIZ6Yq0bwR6bBOdo2FCm4GL8bpbeL8r?= =?us-ascii?Q?+wwmBZgc93ZHKlEbKxHX4pth4rd74t85So3MgCO630XeVxmbND84Gi6c+j3X?= =?us-ascii?Q?Wx4UgHuE3UeyEekyLN8cCE1W+Z6bv/8pz1lYfEvnwao0CZQlZlknydl74USv?= =?us-ascii?Q?xrP37EDlU5T2GAvmaQv0GGk/cZIC004+OovLkuc4u0kVCJkpd0pWhpo/M+y1?= =?us-ascii?Q?R5OqCf9x7TCdd8uwmbNAdHXSGtpPqOd6d7+2LPhjTmaWVcQb9uwAfZbrOJF6?= =?us-ascii?Q?Z2soCjMlFHI6tMuORChWMkQcYMGL7xG6oh8IvEjn+9QwsmUEq3QmgqdxzqM7?= =?us-ascii?Q?49n6vrwn4QzMcCwEaDh920c+dTHhc2nx4CsTLoGF14jS8FTwJ1iTxTJi57En?= =?us-ascii?Q?TZBpNCnSfVfJaolYdZQMVdi+HFi81TVXT266mR4Aglpse1KdlmzlhcjU3OYC?= =?us-ascii?Q?ZQ9Iz1xXijmbYUAOEmi8q7c4ZC0bghG/BMNHMbN27dSvJXG+gkl+FRSOUOLT?= =?us-ascii?Q?cd+anvMKtV6KYYsE7C7arFgvC/4bn5mKAN9kNK0yYpP6og9kJkkK4Qct7GPn?= =?us-ascii?Q?t2Z1Ga2wX7rBZp6YNthpVeHUzjyOvRxSjWz/+ie2IwmKZgOXZ/DUiRzR+nlM?= =?us-ascii?Q?gziUdR8znAT9vl7to/wujvx4gfv9CeA=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7beeff4d-4e66-4bb9-7a0e-08da3300079d X-MS-Exchange-CrossTenant-AuthSource: VI1PR0402MB3503.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2022 03:40:44.9780 (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: q3BAKFqXD5yPF8ZoKQmFzIFzRYt0WdEMpdr2ySb/8E/QxBYdD6Dd5Tes9idmEa19z5N/ufKFrXusK0eX7j5bKg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB7156 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 2f6c4486a009..b52cef5fdd9c 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -596,6 +596,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 Fri Apr 26 19:25:25 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4072514pis; Tue, 10 May 2022 20:41:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzbc+mBuIhK6ZlGofU9ju+w9ZfWm8+4VnUnbay03x3jxlS2rsyQEC7oVW8bsfix1gmnA8fe X-Received: by 2002:a17:907:9613:b0:6f4:3b48:b004 with SMTP id gb19-20020a170907961300b006f43b48b004mr22236849ejc.171.1652240470956; Tue, 10 May 2022 20:41:10 -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 q20-20020a170906b29400b006f3a874f673si1112506ejz.4.2022.05.10.20.41.10 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 May 2022 20:41:10 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5220-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=XTbR69Ip; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5220-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5220-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 4201D2E09EB for ; Wed, 11 May 2022 03:41:08 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1265415C5; Wed, 11 May 2022 03:41:07 +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 3880415B4 for ; Wed, 11 May 2022 03:41:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652240463; 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=4Lf39A5tikAIwxSqLTq4iWlT55z/CAiZnlAUzwxr7nE=; b=XTbR69Ip2jBnno4FXI0GNDwKerGAjbxc01vP3n+ywotSzhyNkc1CDGkGYvFyg/Q/WJR2n9 /Br1df4e/WSxnldXD7lUl8y2bvEdlvTGlGJG4QV97NHSwaKlQtfYq8WeoA0Wusndbeicpm 0GaWpTxpG+jDgQUeMVEt1omskfERYus= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2106.outbound.protection.outlook.com [104.47.18.106]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-28-e4QCW2-gPD2Y7SVg5XHOGQ-1; Wed, 11 May 2022 05:41:02 +0200 X-MC-Unique: e4QCW2-gPD2Y7SVg5XHOGQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ScezW6L+dIkuTVrMs2/iMPe2sxCkUcfFtjZJLFpOFXJWZ8JZQ2kQk00mr6oqg90sqbSiLgY+D9Y8IkWcBFYA5h+aUDPBTnsrGOvS/Xk3/eq9VsgtZPZLunG/Pn25vXj2gM+SRgpXLj55EZRq8OY0a+zp/2Tpqs3CYUb1gCjQw9c1qCROzrcOvu+a258gAtQeJST2yNBzmv5rAYaDrssfk7JrhOcUz68iVa7aA4oIqzY8tTX32hBR72q13IWfYcLbjsJv8595hdqNrTtsVwVtDH06dRSCKh0eLFPW+p03tRdzB8UnPWKnP9ABjKMjqF7k3ZH9uBXae0nmjzr7gUEaaw== 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=3D2H55MAVqP+2N9JUuSrSf1CprXJ+JM3ahdFHrWnd50=; b=RqOEzfPiZp8E1nIek+PnFaHdkpO/PjSyLTXZQaQzgb9MVgttFjQ4Xk55xkG1He/ZvqEXI6Cb/bao1maqeDvm8DfcLcDMCiE6l0gO6zKhxSb73xo0hcTXRsICkcpX4BKjLHaq8mbXxpknYVtS1e3bS5dau8o/SmloZApA4KlgmUksUa/RAXSPCdtx5DjMTO89bOiwF/fbxcgtaVS3t2HdQ7RSw+JfN473i7AFJQB/ywMg0jkxRNkFR8bpk2SXVCW0JwG4B44rDZZzvj6q7DmiQdLm50rPC9OmRZ1gswGZKRndvgyg1F+M6AXkhNDO7VJtFL2A75I3I6A4L3T1OLWUCQ== 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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) by AM0PR04MB7156.eurprd04.prod.outlook.com (2603:10a6:208:19b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18; Wed, 11 May 2022 03:40:53 +0000 Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7]) by VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7%6]) with mapi id 15.20.5227.023; Wed, 11 May 2022 03:40:53 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Paolo Abeni , Mat Martineau Subject: [PATCH mptcp-next 11/15] mptcp: add sched in mptcp_sock Date: Wed, 11 May 2022 11:39:12 +0800 Message-ID: <8bae46e5aedaafb5f68c87fab1e8357dc144b7e8.1652239604.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR04CA0060.apcprd04.prod.outlook.com (2603:1096:202:14::28) To VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) 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: 3db8dbdf-0853-481e-3e87-08da33000c88 X-MS-TrafficTypeDiagnostic: AM0PR04MB7156: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: O4irHDkEU1gfaXrFS4nZ432V4FW2qQH8sIGJa7YMyHhavg2uAu/flKo8OXYusBjebUzqlYdQ1M6zoJXUwoKfFSJhRqNZtVFizNXnoDqe76P9m/Duxfm34DI8ezZoN+gunEuxADjACj0BhPVJblVDbQSI5C8Wdk8IhZF9TwI6OeayOmCy76ABeFQsvzcTeT3dH33NUYWoFchBBdx2V1Lb1VmWhtF4dp7w+dHSHga56vV0IBXotbViQL6TUud0WO+9A1GjcL7ezDk7l0dlPVPiXiAy9ebPurgR9P5A5LKzB+OkBdioaPygmhRayGBuntPbs37YIGKqmVe5KrMw0u6CAFPrF79Cs5EH7VYdkmE8TfZBCVgpPshhArv7k2Hj2IVqfLi74SPrp4yorGpMICxH6oYlO9gaoEc1uFheez+da3YypoiP5BM3jkV8zNhvrBR5JwJnoqivxxGqplSA4Z5Na2pKmnTcKwVv/ik79MuxTSO57trjU0C/KSJn6BsC5kyvEkhBpeiIcuZusf20HhZfaySW7ZB7ATLehT9lmnlDS6kacTKRgGWrPX3jUguKC4Y8m3Ltm5+9cyJjtQMyOgOJRuAEJAyWuvsdNUBM/1YQ4pRJGzHSeANS5lPIJxN9iW1q06VqNKnkLnRMhukZTtztEuuDBfY9lCXQta2Hj0P0gRMY9NUoboojPgOaFb7pdvs0PjtYI3hB6N87925cNgYAKw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR0402MB3503.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(6512007)(86362001)(5660300002)(4326008)(2616005)(6486002)(66476007)(8676002)(8936002)(6506007)(66556008)(38100700002)(6916009)(6666004)(66946007)(54906003)(316002)(508600001)(36756003)(2906002)(44832011)(83380400001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lp0Uvk1tIlffSqGeO+4u6AGHwD+cfn0Qhb3ubQtSEGnnGk+3ucwJ4nIE62DG?= =?us-ascii?Q?FOUq/bF/RUIodNK7rGj6raB82EP2AmwVNwmATMt6RvtKiRN4tnOSfElGeOpU?= =?us-ascii?Q?dHHflf1Ej7YQkTMVwDLkHdqM03ZmQC/Sg7kTQbUytW4MLtsq47kksH1rvqqj?= =?us-ascii?Q?oPZERkf9Dyk6mKwjeon8csgN9lvW/4L4YGnxAufXwJOYXv677Dcvijz188A/?= =?us-ascii?Q?s1z8U3twc1XwXjL/B+1hlyLve3QLJy0AiTrmPrlwLe2SPYMXsRKfnOkdvsYt?= =?us-ascii?Q?fFAImKW0/1DwY7HJ3l6cgMWConIhbqsVEDSBzsXbbHh9PZrAFncgnyq1QkB8?= =?us-ascii?Q?T2bPFqPcNpb4g3o06mvl0oqYi/pPLZtrbDRl1S0PrDYRk0IEum39gfkbUFv/?= =?us-ascii?Q?0CglXlpqVmDmKYFNPQz1vQ+h7eVV5l6g5Jdy00dgasV1sIF9mBGFEy63imcF?= =?us-ascii?Q?H9x9Xk6AidZD5vjd+elXnXENOPlhKJAdet9IgVPW/zQJIgMCM7ejOAxrOJww?= =?us-ascii?Q?mJuHETWgOW5o6zqFHoM54LXX3B3UtUFQxUTlO0/5UGpT7TP9cPQK01SuuDoq?= =?us-ascii?Q?Y7SXrvKworfC55xC84DngXZ7bxeLpE8okaoM1LyfUMUqhjCcTiFgRoIyslJH?= =?us-ascii?Q?gDX55XS4O4EKQor21tsHFAnw7R38IsrH1UD8VrSjoNKXzjxTinQPrFZgYwe9?= =?us-ascii?Q?Sb7gj5azVa1yvAcCuV7AppfpcLyOaQlTGEk7QcpirHZLGquSInOHLmEysexR?= =?us-ascii?Q?Fttnaa+fKhtJVQXxKWLpiR1RYKcoJUc67RJ9GGOtCnp+8R1X8TglmvopvWe6?= =?us-ascii?Q?3ijV6GaSGaYhNhh0W99v/oGBThhIq1/tuzCp6+ojgiPEQHtxWYQOFO7zi046?= =?us-ascii?Q?4W5xl6LfIPIaUfIbXGjAwcnjcDB/EP+FZ4ZAXnpjurWfRDMXFtk087V4Bo8c?= =?us-ascii?Q?1WT0ZPjLhaStVDxXAp2YH3iLAz/cArjYphC+onsIZY7Nii9++273PSdkvhlt?= =?us-ascii?Q?hLNyJ+VyDBSbzngy+xjDx5zEgF92q9/pYPzua4UeOewoO1jowMoWvnN7/nPc?= =?us-ascii?Q?IvAKyfodS3wuhKpPCCb1dekv0RYW87dE6ggYX251Z/pMg4WeQYwsSx1K9C9E?= =?us-ascii?Q?8Xy0G+aU7jckc4IsjT/vuPFeU9z+Dwlt+pPTn+ttA22CvQoDpmqs1YzgC0KT?= =?us-ascii?Q?ph3Csno4lMpmZn9QDDtcILfUogn7hvNpjn7mAQzu4c3fvfU58YHjQywsrm9g?= =?us-ascii?Q?cCmp/GeMQEJvkPTuNpcOsHjqCcVTFWxbE/gV9D/u9sGWX/SKuFKm29/QoBGH?= =?us-ascii?Q?bGyu+jiov57O6k4kfC9kqnY40tFeLPWSaeoMOH2xiZm1hnZmfitcjpoi0FCd?= =?us-ascii?Q?hpomVodCqqk5aFR7VsDfbhbBUHA4BRV0rM1UlRi0BtmSqMoIe0wq8DVCZKjV?= =?us-ascii?Q?pdQ+KypYVaRvvxIOX8ppWD+K1YRWsHPeQLLFnWt1MPA6p63bkD8pqbd2nYhm?= =?us-ascii?Q?0H8S/YONF9cEUPQaYBbtrOE7vIjeE1Q4CGIsy/AVM2MYL3Je2HgIqQtpIuxI?= =?us-ascii?Q?3hjP9w8Uyee4ne4kzYNlfihIsyWL4rTNQqCaNbNs96L1A43qA69wj83yPgG8?= =?us-ascii?Q?cK9qf2Txrg37yd3GtX7ZH5z8VTXHv38VeY9Q0Rn5aA7LABDHnIqrinyfu4qf?= =?us-ascii?Q?ZSN62IZ6Jx55UDp7lX+QaH/rRHcS7u1QDRl3zf3LfCSYu76Jg8ejnYRUQLD4?= =?us-ascii?Q?qQsB0zI3kYRekCumh+MQhg2bJTpe+k8=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3db8dbdf-0853-481e-3e87-08da33000c88 X-MS-Exchange-CrossTenant-AuthSource: VI1PR0402MB3503.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2022 03:40:53.1180 (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: 59VPjIuvP7S7/5F/+dAbMQM68bKzn1h87aO2SQ/Ks2n/mhwCyJ9LZideDMl+NvpMdNtPaBpZqNAFUntcBM+RPQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB7156 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 921d67174e49..3e9246822412 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2657,6 +2657,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 */ @@ -2812,6 +2817,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 @@ -2985,6 +2991,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 b52cef5fdd9c..85dd69b8d9d5 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -298,6 +298,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 */ @@ -625,6 +626,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 ff4d57993e10..1ef66a16771c 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -252,6 +252,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 Fri Apr 26 19:25:25 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4072488pis; Tue, 10 May 2022 20:41:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwRDPAZ92yM+uXJi9s9V+iQM4wUcK+3/oC2VkvNbkR7xRtvJOyxZUA4Z/stAzrYzO5omzN1 X-Received: by 2002:a65:6e47:0:b0:3c6:7d47:ddc8 with SMTP id be7-20020a656e47000000b003c67d47ddc8mr14550370pgb.157.1652240469522; Tue, 10 May 2022 20:41:09 -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 j72-20020a638b4b000000b003db370eadc2si103625pge.222.2022.05.10.20.41.09 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 May 2022 20:41:09 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5221-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=e40EMAG8; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5221-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5221-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 27085280BE9 for ; Wed, 11 May 2022 03:41:09 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7F98815B4; Wed, 11 May 2022 03:41:07 +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 1AE7515C4 for ; Wed, 11 May 2022 03:41:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652240464; 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=QVxj7r/DO7WmmHjuG9sV1Fa3xU7BZHTs8Vnx4cTk1Wo=; b=e40EMAG81tk2+wtRryA7h9KnRpjftW4IzdAMwJoL3vM1TzCQMJvxxqDscvAiGnZwC+5e/j IVUORyKh4cGmIuoWXYKz9VSPig2WInuqt9x7iap7lfYGOVYTZy86L370IxNwYxLQ5a1xZZ Z6qwabZEEqf9fyVnBNDIc6aAnjEX7es= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2106.outbound.protection.outlook.com [104.47.18.106]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-28-7MZFxPzVPGmgBZMP2zptzQ-2; Wed, 11 May 2022 05:41:03 +0200 X-MC-Unique: 7MZFxPzVPGmgBZMP2zptzQ-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g9zviBY518ioMYyRYHJaBh/tpdLbrTLv/Wc65KUgKwXnJUgc7imXt3W0N0BtLiMaUEmKGVver2YFP42TU6igNnh/qfBM5OYbyVm5jzEROws8h/V0oM8BzsCJecUVrrGlmr/OdwT0ZfCk1CdC5XXATHxb4/0r5DB+ouZqdvMidoQDGS/Vi6EsRYFsiLmeoirN7G/4nSDhXjIM+rbrA65VJ1tAIVuyl9ryTLohzqLorYttXY9mrWkfKf0/rSlzAlz5LPHIX7r90AuKLhrJKOI7l2NCpkzsxZylOef9fPDkaCzkeEy1ngaDlTzAnX0wXe0Y+9tya5i7pwQuc2aZcZdtig== 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=3ZKH+jmRjjHcvw2C8uNF3rRV0lIs9iBD7qyfLQx5bHc=; b=St3DIoYTIg6M8irkCSX3QdIKsUNrT5ynrwdELk99YBUPJhm4GmzazYpNjVPntuIMk8gaP43X+OBPDcUE3pCAjhHXTluTAwIT82WjNoPZUNE+VeoXwU7DRDCRtolzi1YOxuWR/rtKxJf4LSmJTDb9dxeMCerPw3gFowetI26V5XsyBNRkHXgh3oQqx81tXeDzRZ1Qu8McAjKBEbub2OXz2OMBEsSX7hYpNODMIe9r9wxWEPxch6zWrgnFPMjk0PBVIvbktxNXLSKGib4+oDvyxVMizx8g8v8B5EmwWv7wrkiudMnz3PwzgUI8qfgUcxDOMhiPodcZfrWunqurDRTpTw== 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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) by AM0PR04MB7156.eurprd04.prod.outlook.com (2603:10a6:208:19b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18; Wed, 11 May 2022 03:40:59 +0000 Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7]) by VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7%6]) with mapi id 15.20.5227.023; Wed, 11 May 2022 03:40:59 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Paolo Abeni , Mat Martineau Subject: [PATCH mptcp-next 12/15] mptcp: add get_subflow wrappers Date: Wed, 11 May 2022 11:39:13 +0800 Message-ID: <47087b6146dfa1bd172bfdaf8ded17ecfaf54037.1652239604.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0163.apcprd02.prod.outlook.com (2603:1096:201:1f::23) To VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) 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: 0f8dbdb4-55eb-43dd-12ad-08da3300107b X-MS-TrafficTypeDiagnostic: AM0PR04MB7156: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: qVdF4h0BsLtmhxvJgapu9MbYZHKPdhrADK3wkN2xFgnrzI1hgD8k9lBdA7XnN20i2ZP/zIJmU02oUVaK18HOKfLYFQG2pRNOGFRVJQL33HI345C0BG7JpF6/GMLHhm/9Yg7cTN4fMsuLCpamN/2U5ZUGZNHaIBvS4lSudvLacq4BCBU17+4m8HJCbWOkr4xYZP7LmXsvxhT9cqesC60gopZ+yMTiIP/4gxPpWEBCW9n2hYKnDMXsSovWnYOQKx+oZqCdpiJOsTJbgalkzlstcW2bj4bZUXvzdEj5VpwIaYF3ElGZh34wCr8YLInaTdqVb7qDRtDEy5Cfi87k8kVpMqoAQHHel9x0jHYyz2BWyZv5X+AThAOUw2Sz/bTkIHjCS9jABNFdRUJBnV1AAb1yJURcexQURO9VuUWW5ZsTfxcKQS0V1LBFfvfnRejZQAGmyohRdc5XINKt9gB+iApVcrOgR9OzWMN1yb6deaWwoh1ifqmy2dS1iDFori8eG/uXvR+AWjhfZaPFxGRiq8zUNA35Kfc6npknSuOA+KQEsrokl2xFRS0PSuOlT7VUrspJqcfJDriUadsIR/Sg8nkFYku9yDP8POLXYFgOCaNCvC9dkMaHX3TOWVrELxT4O/OUgjLBkF6ujueirwVNCNUBtniavrtAU/nK0BLV5Rhad7qzNCP9SG8DWXyayicqGNlS X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR0402MB3503.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(6512007)(86362001)(5660300002)(4326008)(2616005)(6486002)(66476007)(8676002)(8936002)(6506007)(66556008)(38100700002)(6916009)(6666004)(66946007)(54906003)(316002)(508600001)(36756003)(2906002)(44832011)(83380400001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?YzfFhdZamqKgVBARhjfFeB9LqgWUtEhDkOf9tV/Yy1NvQRTaiBdtLlGmmaE5?= =?us-ascii?Q?DgGtbdVROEwlPFubTcxD1TJ8ZR0O/8fiQtE2+rLNq6NKk8K/Q9bMFqwQK5hN?= =?us-ascii?Q?V1aR8XjFdn2MKNwz5pVLkM1X/eRkSWnnInDXTaTI97Kq/LkhW2g+RMtv+13t?= =?us-ascii?Q?u2yEovptpsr7qDpN5+QQUp9KBsv7paW+JwfBnmZQf8mZb6DTEwFi5Kn5X6/G?= =?us-ascii?Q?PduJlhkogkvkHs18UsCQecMurtqfuRXUBk3pvkBdnd/xkEv2QC7Pjf5GLA4P?= =?us-ascii?Q?cdAvpM+5BINPi8e05+FpsCV/J/+oT0nQbCXyAaoh4YxNGFkmW1KDEWP0s7B8?= =?us-ascii?Q?uXvZvkYbbvGY/pfUVg4ZMyl/lBNnzdeTL3k7s39JSMV3MrBs6bhYZStSEEJE?= =?us-ascii?Q?MUFi3o8Y2/yTwrRPVTWZSW7ZR765TBfbUX1br24fjVwAcKO4YbpGQucyZgMT?= =?us-ascii?Q?oiaK9QP1w4uSA5Dq3uuVaSR8+gzdaGT0DfmHiqD7DhR9aTa0JN5rUv8lDLPQ?= =?us-ascii?Q?+cbvoNx5GBssqSev4cnjn8xNWyrXOWdGFL2boSPA0RBMc23X6SBW1TUOUtB6?= =?us-ascii?Q?t8TAd60iYWfxMl1NjmhG/JP9CLkPUZdzXB/WBwD6aap9XKAEEOKOHDcP+ESw?= =?us-ascii?Q?Sy2jddA2/CiLMz43qE795GuTh4DLV0ENcBZdnNH4HQj3mKMFMk0SqN8SQ32u?= =?us-ascii?Q?Dklguk0CKpx9F5Wna8MGkgh/VVVo8RISALJlsPxS4M78I6S2jcAmlFwwXGU4?= =?us-ascii?Q?SuWC/B75iVV1AavIQCdYZNZBMIPTlPIHxczBR3hfPCH+bmmIBbLNEaMrdaHS?= =?us-ascii?Q?kJSB87PJkl6OiqlD9cykmQbk7TbW4K3Ek541eZB38Vh23NnndLhO1K/6r6oF?= =?us-ascii?Q?gwEZbodTVtpdtxAw4OcLlf+Gs0FM7fwZsZJ90qQrIMb42EBNrFWavN0FAyzY?= =?us-ascii?Q?/84LO+JdUPvtbL8hmiQBkyNERDoLJJbG80i113HNhPaCy7DEcIebS+cWnaPa?= =?us-ascii?Q?0ZvbWtdgyf+10nZt7S4QFuzbT1t1U67CEMcYa5jt5Ou5fvwyFp+DmqFnUaEO?= =?us-ascii?Q?M4AjueeC9KSrBgZ3xmvB49xSIqafU55X92ZL1TkuBY0BCOuameJonQ3GOq4l?= =?us-ascii?Q?mEUGW5uJCS+61ZIZEoYISoQUJc5YRc1WfjNGhA29siwavRoNvKHgKzo+nwvM?= =?us-ascii?Q?g/Hw5tuS2P/yjN9RITkr9ArzBaz6FZ146vfm2arvNgKJxgwKm69tBXMObDpu?= =?us-ascii?Q?DCp1nfYrot268Z4OXmvZ6zDXnX19nPGzUeLpGLXb48ZF9ElKOJOL1h3dRADP?= =?us-ascii?Q?btGI+9xdGtIYLJi+OAT3KxTdSjESGETb2ysbxU3MvE97y5gVeLtDIdnLqU3S?= =?us-ascii?Q?uiyIvxagPo8I9xCzqbJfx0beJY1Ko7I1RNcZQm3Y0XK9D172b3csAN5CClRj?= =?us-ascii?Q?X/2uNEdX/8aHxA2oi0zGQIfgE4xZV0lmlM4hOjlKvt9kx5FbPDNaKwmY0Uxn?= =?us-ascii?Q?vpYgwF4o3aTWqdt/Kc0A5IAvMtALE6hjXEOHKtaW8NsSfj10WkxiqaWl+fa8?= =?us-ascii?Q?d749DrIOMcCAUV8bydJJkYfaca+KHAK/UvtIy3tn+AbpVlpiCgiMvsQ8Lpd0?= =?us-ascii?Q?kKuwlq+7yTwU4s5a4O++4lBBLC+FlkW6OWlnuOEKdgPvCdxmvyik+CmOOY0G?= =?us-ascii?Q?UOwbAVpQOuv5PDJgOwTUGp8yp85e5YmECkFkpaBMGVaMb9jgGUjJPsLcuWVM?= =?us-ascii?Q?LLYX67g2FcsBeDgDT7JtMA/FKxFXfCg=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0f8dbdb4-55eb-43dd-12ad-08da3300107b X-MS-Exchange-CrossTenant-AuthSource: VI1PR0402MB3503.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2022 03:40:59.8676 (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: vQrOuqA0lHWXLqp+359Go8wFd8amw17UuGIkA5p6i40/Heebx4vYCl0L2SinnWJAhSgYdEra+YRPfI9B1x+Acg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB7156 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 3e9246822412..ea3c93322592 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) { @@ -2216,17 +2208,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 @@ -2479,7 +2466,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)) { @@ -3128,7 +3115,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 85dd69b8d9d5..59a23838782f 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -629,6 +629,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 Fri Apr 26 19:25:25 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4072530pis; Tue, 10 May 2022 20:41:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyz3WKXf33Vxj3sOZoWPpcrK9bJ5Nk0lwfBBOLV9c0fz9UCpUeuZrWOV86i6TuZwDgiAPrP X-Received: by 2002:a17:906:4a4f:b0:6f4:5605:65c2 with SMTP id a15-20020a1709064a4f00b006f4560565c2mr21665250ejv.410.1652240477216; Tue, 10 May 2022 20:41:17 -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 l1-20020a170907914100b006f382c47ad9si1020195ejs.846.2022.05.10.20.41.16 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 May 2022 20:41:17 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5222-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=Qhp0wF12; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5222-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5222-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 EA0D12E09FA for ; Wed, 11 May 2022 03:41:14 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A6DED15C4; Wed, 11 May 2022 03:41: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 910BD15B4 for ; Wed, 11 May 2022 03:41:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652240470; 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=wN0KjzJM9Ev/2k5zp049T/Kc3dOdK+O2RKGqo4NrXVw=; b=Qhp0wF12hbsAekSvXUK6hZStaZ1O5i1mG/0x8Gr7tE0tBixjMfYBsLf4/x+6Hst/tcEott lyIfblJYLbq41EnmMZsQw6ZA9q1lTpL2oZftcQhM3MBxi1MPOCNXBGcZ9nZit2pCXl7tzp NqrJzNgQRq9jBtEol41zBFaRMJyFLjc= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2113.outbound.protection.outlook.com [104.47.18.113]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-15-whxVqwckPCKVI4bIHL6Img-1; Wed, 11 May 2022 05:41:08 +0200 X-MC-Unique: whxVqwckPCKVI4bIHL6Img-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WNbS2xpGlxWFhs5dOvktCWatWNcUX+mq7lU4pHRSeMzo9wx+AyC8WyRQrbk8M6Wnb66csbv6jUKZIN8EjskBU8lOrUMNwte3OPiuDwnSBMwrlV6TM+WuhWeLqwbWGMHNbY7u0cxt23XO3EkAaLdY8auZf01WEozOsSvmTuAiLJSk6/sqBJra2HrtfVsRQAm/2LqZcMkujZg4jb9pepoJNquQEubD8qqpBdF7hzJ4b2evI/5OmlmJqtFxG33yG/sS54ilNApo4IMBFHC1Vje8TAvvQ3hFoiD0lbRx3Z6X6K9OLHbVIXPlJ+AklxlF0l5PabkDGM4hYiSUvDDLIqjLaQ== 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=qfatK8xf2UjGyo9mADrgza71Y9wgPq69zv3wfKdrO3w=; b=Zj56SE/hpZiMu8qN7pOBDxIV891sLskdE/ziQHzUR4Ml/H4yCMAi/BfgaV624qpy9K2qNTKau6gq72OnJZ+ADJ8j42KvlMkUmF8RMkmUH/c06S/wwu20sS/foOvNaRZEMeRaEY2jO80yQSuxkDXh8pelPqaVZfG4e/iWkywNDFvWt/5htAHRBrsP9bUAzBNcthzRxZe6wwjoDGTbr4kDU69ybM2CGdQgG8yqV8KDuOUP+ySio8bW2mhvFEeioigm0pWHg8PG8wh4iBZb+vJs1abddO47xxqPm4YZmDLvvHO0fXP+FOzohjPVvExJ5p7QP8rylzCh55MpBjjMBP3KVg== 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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) by AM0PR04MB7156.eurprd04.prod.outlook.com (2603:10a6:208:19b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18; Wed, 11 May 2022 03:41:08 +0000 Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7]) by VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7%6]) with mapi id 15.20.5227.023; Wed, 11 May 2022 03:41:08 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Paolo Abeni , Mat Martineau Subject: [PATCH mptcp-next 13/15] mptcp: add bpf_mptcp_sched_ops Date: Wed, 11 May 2022 11:39:14 +0800 Message-ID: <41774e8612c969c3f8490f85765df5fefa480f12.1652239604.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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) 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: a031f0ff-faf8-4337-1296-08da33001561 X-MS-TrafficTypeDiagnostic: AM0PR04MB7156: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: 7lfXb+etMZcAov+tKvUDLZFv/iN2T0azs3WnG50zQjjNAqRTh47+nCxbUzt19/qFjigfyMOw2+ru6r7jpam3womrkQetdpMSGkRcWBvjYx73X6nIrFu4817AnEX2S3fBV14POYMu/xZ8vi22WxGhFLI6uSayQskMwT14ejVxkf7xJTjqZBsT2AkLDXY4M5TX0wBru4IFYUWsvzhO/PmboabdMC0ZXIY7UgOFnv/S7CFZoZLBFMRkCgeKP39pWp079aWrVOpBbAgeDVKv1iPO/4sZ/EhJFKEx2tIrvIwkt84+P4JpZZfzbDPFWJYDykm3o9pHRUlKRxjQrkt1K/KTpOILkA1fSQMRoLDu+cS7Xbe9v6DUagDUV+SZ9AhebY0PdbuPKKBthAnR4ihZXOgBR3tfPxonu2gNSx9EJYR0d0LEacU1A4fz0qjkashVqu1s5V0E6rPiV+D5+8qq2jMlqginojagb/7Fog5d05mTkLTIaBna6hrbnDq0jg99Eqwq86vXCdye58gPVdAKMMUVyAtVLd1KXT9ycmo2STHYee/5c7x6JizcfBA1/I8KTtZahGlKu4meIsoRz6MnghoEwrzgzuNbeowwuNwT7E3YTVLrgyw8L7y4NcQeSbx++JZhrxWkQmhnIaX1ca982nME2kkR01SQpbJmq+jlo1/sSOJ8M3F/M7up/jZAfIVKH2xnQrS1PciGpBmFK4OJV3vTEg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR0402MB3503.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(6512007)(86362001)(5660300002)(4326008)(2616005)(6486002)(66476007)(8676002)(8936002)(6506007)(66556008)(38100700002)(6916009)(6666004)(66946007)(54906003)(316002)(508600001)(36756003)(2906002)(44832011)(83380400001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?W0PYxGArAZeeWLHINQSDgJxN63rxk8Z06+witvRi2kxoVBNNyGicR+iDRxTu?= =?us-ascii?Q?9joDlGP+HdXiVBBBWjPCFA2i50ztwHYKyOBkqgLyuuDDvEU0kVkxHJX6W9ko?= =?us-ascii?Q?exHLnOSILBS2l8bBAieUQAD6DU5+cfLBVaUuzV/ORd7Dvpt+RuD0wt4ZXuZD?= =?us-ascii?Q?6s203JIuUhtChhMUZpumAf6ss2aPwTxRAG50VGN55x9h5pbYsbI2tZ/ZZh7z?= =?us-ascii?Q?nAite9aIrzcXMPrB33cmeO1KzuyYqQ6o1k3qp30nZnvqv/VM5cDRHjlqqSCx?= =?us-ascii?Q?rmG5xxvFVYLhHxOCAwT0/UzIoOUJfNbTyDV0b9Ox6eVAs7o86I2XpHKpc0RO?= =?us-ascii?Q?aPOrYsVREPVl9V8afeljV9K1T1tqL0h0Jr2X6Kqr/e6pmHeP0p5jVl8vqGYj?= =?us-ascii?Q?4zFUV+2dS9aKFMimhY7kXwmgSvMJUDgpy/m3wMByMrSB01jaz4G94AVmcHnp?= =?us-ascii?Q?CRVln8Hq+rBPscsxsT/N2Bd3dLA5ed5XPgOcMs2uljzSQm/05ydC/8uOckyt?= =?us-ascii?Q?F+HsiTY07a5AVg52xHBf+Y3bu1r2+Q4/2IZK7MD731gNhmIH8ACAr+41Y4Aq?= =?us-ascii?Q?KVHm7xHYH8ij5fH7Y8niKMKEGitnkaXo/lrDjKsJmffuK9B+tbxruuJfWg9V?= =?us-ascii?Q?st4CX/aHErgCqFwNahOo5notM78BRX4mSs3Yp4MkWpGOw80Px2aRvV36zPK9?= =?us-ascii?Q?VyekbHGiXZuPDv39C2gxLHCNiLhzI3fXcX9NK60yutRUyout7JFfxDQSp/k6?= =?us-ascii?Q?wQ7zQx8ygESXrKWNLYqEPze33n7giIa9PjTT7miPriZCmq2MwF4/jvQC7x1r?= =?us-ascii?Q?xjkz2c1o8mZZ9EqkKosv1R7LDDSmrbyGqqVNUN3Iq9NIYj9sMkguoY5JN/eN?= =?us-ascii?Q?+IQRBl3vHu2Yof/zGAIeISkIBhNAtatOjURWqgqkD922NbmvANn3+nEksunr?= =?us-ascii?Q?+Q08RHFS2LzCmZiCEAFDNUiuK7QK76rJu2KAuApv0IjL8mLQavV2mfIs6+0E?= =?us-ascii?Q?HfruSpoYXbvcfRAUCYyFBi0QRP/PGoNAAaX1XJYwwaKTUEq5f1NF0R6ZBe1B?= =?us-ascii?Q?GsFC33DdrwWC5yLTFWSiUABJFet97+syQ5oXbuF2MtvXSAyT/qZ0emfle+1J?= =?us-ascii?Q?9FwbHUjIQpwu8q4OHysBZB/yj1g90NfwaWYFh+4/Q2HzUv/GN8o29jTVNj+a?= =?us-ascii?Q?JFzBJrAavDDLGcWxgxYBfX10bBm6yWAngOHycQLlzzlrW3loxPRBR+uw6nz5?= =?us-ascii?Q?lY0pWQiO04keCTL5rF2qyFMmpUy+VMQV1D9TYdDAhUud0tHVltXictnh3CkG?= =?us-ascii?Q?wZHtKsRICTCrKc/Ct4vD0p+LWJs5hKQi1te7WBFiN0FCfBk94/yBV6f/pC9+?= =?us-ascii?Q?GOgvy23VHMdCMw96HIytIszW9nHWmXf1JtBhm/07cGVyHpyAaZ91dC2BHeIK?= =?us-ascii?Q?GMJmOoLoRwp4nrz8MLImawbZuAfNOYtAPteq1rGxI7aHDNM2TNlONGx2gz5/?= =?us-ascii?Q?8Ic4U0brio0ObDxh/rG32Hh+wyk5hSiJhf6Y3G7/BcChCp6WrIBbocBzkgU4?= =?us-ascii?Q?8VirMVIheUpXVtRuH5vFYYhMVgNoH9DerM4moTP+zT7JRyvYkKZlpt/0ffM3?= =?us-ascii?Q?huwt5XtpLQzbDYJUSxxm28bviGIwdzjqsHOeYY+tMb7UI3XFEhIGs7lKf2Gx?= =?us-ascii?Q?fj6//2jP8T0byMyj8+XZkf1mlnr/vz+WeF9Ho47F+hMETZZS0jUmQFF0RtMQ?= =?us-ascii?Q?/84qhfAfTpWJv8HHrgP64pPW2HhEdsk=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: a031f0ff-faf8-4337-1296-08da33001561 X-MS-Exchange-CrossTenant-AuthSource: VI1PR0402MB3503.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2022 03:41:08.0546 (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: 7yBbhFUBZY8i3UpZefkzHv2OIlRAmgZgwoClNsFV1VRWCAQZX49asTE8tcEdUGlPV+F0+ajUvZfSX6a7rXsb5A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB7156 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/bpf.c | 153 ++++++++++++++++++++++++++++++ 2 files changed, 157 insertions(+) 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/bpf.c b/net/mptcp/bpf.c index 535602ba2582..b7cde38f7a6b 100644 --- a/net/mptcp/bpf.c +++ b/net/mptcp/bpf.c @@ -10,8 +10,161 @@ #define pr_fmt(fmt) "MPTCP: " fmt =20 #include +#include +#include +#include #include "protocol.h" =20 +#ifdef CONFIG_BPF_JIT +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", +}; +#endif /* CONFIG_BPF_JIT */ + 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)) --=20 2.34.1 From nobody Fri Apr 26 19:25:25 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4072563pis; Tue, 10 May 2022 20:41:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzGI/QDAQtKAlbu314jYEmlIV5h9dNKNKPH/Yyo3J66rXrAuW63iPyWCqp4kP+sp9Vd8GZn X-Received: by 2002:a17:907:1623:b0:6f6:e9ce:9926 with SMTP id hb35-20020a170907162300b006f6e9ce9926mr19217992ejc.360.1652240483336; Tue, 10 May 2022 20:41:23 -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 s7-20020a170906bc4700b006f39ef3b072si1178610ejv.658.2022.05.10.20.41.22 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 May 2022 20:41:23 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5223-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=BhvQQ68Y; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5223-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5223-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 046072E09DA for ; Wed, 11 May 2022 03:41:22 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C669715C4; Wed, 11 May 2022 03:41:20 +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 6C85A15B4 for ; Wed, 11 May 2022 03:41:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652240477; 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=BhvQQ68YZgFCPDpnVFIpnyIngSsuMENiOeTRtQmgCv9A2ioBOpE/uxTSdJiIQWNnO54pfV EKpR0tooUZiR3bOsbiVEn0EgVpkiHXHF1eF7Yb18VJfD5MYXOpsxYTN6PnsdRubPLAvITN 3hkm13vqVH+zhNWOeM6mU6V0Ow3CnrI= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2110.outbound.protection.outlook.com [104.47.18.110]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-29-SLv4lnd6OK6E2ntxw6ttJg-1; Wed, 11 May 2022 05:41:16 +0200 X-MC-Unique: SLv4lnd6OK6E2ntxw6ttJg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YcEp5qSq3/YawFlC0MmcBWpMQJ8YTXBy0QAC7MFuAyHSoojr/Rz8gHLU32l7PYf6RoJ26dVcFVbPwL5CU3B9huGQDPhc+jgNiS6PcC8h4sLrlrN8F5gyZCh/3RE3GqBDMnY/unMV98njagDcIKLuqrtzb9FznVfpwI8e0m7vyr4Pi/se5Sg9Iri3l9vt/mpwykSn3rb2IuHN9WbURvmbCI+bk+yXgY479YeuUJ8LvErUJh/NGH3mhLm9yEWLQ+BSLpdY3pEMdTI2AET74ADRDDheWF2myiZPFOhUPcmKJZxtoeJa7E5lKkILW3sBiKGoDBt5vvr2wF76LRUhWTt28A== 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=Rl+pE8Nx7/RRzxOLtF4DLt1YfjKhmM36+Jg3YdY3oKfNoM6zspzw+19Eju8NSQeCUBICaHEpjzDOtdDUHCRpdZ8N6qEWHLSXTW2hoat+x0nu4SxdzjpRedKm+p6Llh3KPSYmP1pezEej0w3aUh8JNppTJj7uRz4tF0KMnuXpqstquhVyCCAYFu+YB+SBGemy7D4MlON7VZeuFuvdakgblPTRcQt7ishnxC8UImhth6bjzrH8AG1Hjs9/bZtRYFJZqeaWqt4JmlVT6A/orHzgczs9qbhCHVdxoqs2t9DfH4OkWmGQUjSj8sFEBtfXyQB4aPZGqh4o/0SR5yljm0C7Hw== 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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) by AM0PR04MB7156.eurprd04.prod.outlook.com (2603:10a6:208:19b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18; Wed, 11 May 2022 03:41:16 +0000 Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7]) by VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7%6]) with mapi id 15.20.5227.023; Wed, 11 May 2022 03:41:16 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Paolo Abeni , Mat Martineau Subject: [PATCH mptcp-next 14/15] selftests/bpf: add bpf_first scheduler Date: Wed, 11 May 2022 11:39:15 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0158.apcprd02.prod.outlook.com (2603:1096:201:1f::18) To VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) 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: 1b5b9904-b5a6-4476-9da7-08da33001a31 X-MS-TrafficTypeDiagnostic: AM0PR04MB7156: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: yWc+EoNh4F7UOCVDy+/JKDzDuy2ToBoR7N2x+kLtREGFHb6v5B8LcI0hmQGLgFhAIK4fbbmiU+fUQ6PIkYivNHvVLgxNIZOV1jJGFI5cVgom5qt3wgRw49JNw2LaupC73nAnEriSyfYaGI03fE/pX4Q+61EzuoMcs7AwNUYOgUvCc+/xfOITRw07uqmOOC2Af9htxKH6wrb2NA1cKXZV7xQWcLTwrtrKH+JduBwFHYD6P3Q65BS+R1akpIW3n5DoLukY1c0B52664CkXw6Cp+FVZpJh57ZKRPDjvbcXNqSzC9tTIFsN78MnCuk9R7tkPm2nsJC53w6Gj6ANyM/CdNHj3MXsWvZbVEnUFWl9G/L1UoZ7Puryb0xZVl/iGEE2L9fUUukeTRix2cFo9LzhXqzUcas3VXghXgp7Efm1GR1ggpkcZ4DjZWhE5FUO3y5Lzq/6G3wSI6K8T2ltBkZ5OM/Nk9byaAkP7jQ5eQQaPa+Dnn7syoHlKBClMVfm51Fy3KewKjeCHKAgTYB7wGx2UM5iH06Ntm9q4WozKyr+U2ThojUdKJvvRMbvGNCY6nNUP0qVolEQHWDVvHDwEbIRK+BxJnOVnFQTD+wdzqTZKM7fvLfTyXPkRNrymDLA8aa4K/z8PO/asyHDbumIQyuEl5GzAhvb4bpp1WTUcPzemzjRLLqbVu1HWe58Ik7pupufbPpenKHr3jSY0MFDoez7lXg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR0402MB3503.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(6512007)(86362001)(5660300002)(4326008)(2616005)(6486002)(66476007)(8676002)(8936002)(6506007)(66556008)(38100700002)(6916009)(66946007)(54906003)(316002)(508600001)(36756003)(2906002)(44832011)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?+x5RFyBsFfnaowwYeq4JPcaQNgfwVbJ887j63wt2aCM9GIVkWO3Lnw+p92ME?= =?us-ascii?Q?uGpqZaB8qqEstXSLRvgu1bCGbiIPhJKNqrP+CZ5TGBhNlnxKiSciTnKh05jr?= =?us-ascii?Q?xbX+DcE0dMEMDLlJBswkTFV3JtZmd100WZkHJmkYhptp3Ko3gc8/8Lb5NeJH?= =?us-ascii?Q?j1jooPseFrELv/3dafhlNjmzoArcSFscj8Ypx/FcazQzY6jeGDfuO5UcohE7?= =?us-ascii?Q?vL3Kq1tJgRRJHIsQoEEUIQ28vnNDWXKtBCXViepK9bM54EhWzn6uhsx+RrOl?= =?us-ascii?Q?wSrXPRnmPONsSgv30jjQVTq/d6lQ+vVwE2NqeMmJsdwhfEn5p2TYaXSfUaBs?= =?us-ascii?Q?OOWOlMZ3CirwzdyF8zz0HzfauWbMy08Ia+CIBhMFs07AO9+QToNAZ2HqBasF?= =?us-ascii?Q?MmPZpjoCQ6DuIeTZU2QJkNcjK5PstRP6xw9Yf2BvdlEuqq4V30d+e+9yZEYy?= =?us-ascii?Q?UJEv6g/BU1Z+7G5TD3sCqgloFMQgM4sLfrUxdYow/JGBiI6Ry3zsCRPrXrny?= =?us-ascii?Q?M4RlWJDua0Btk6lNgl69MRbRKCaytAI3Ws1WSdmoBYQrlJoEW2NKgqA21Rl4?= =?us-ascii?Q?nb/5kx5zLALQMK/5otwoq7OQ4XbwGkAWuFGjomGwDY6NDBn6HqP2pQdbxDSI?= =?us-ascii?Q?8XU0f4IF94jGbIjeE0hBXMHHeDRjkTtDs2NsVhE9+SkuM7RZSQwwYwtfm/3q?= =?us-ascii?Q?Kydbm79gAJC8Z2elsRDzIykc2RAY7eCV4uSsF3cwig1T07dVMn8W5+WIw0Nt?= =?us-ascii?Q?jBd2cuf1Fl+yoOQ4Skhp/CJj4+6IowUgvs+3cURt4NngJfK7V9uxtvF3ar9D?= =?us-ascii?Q?KfkOw6rAojEmxRbGepISzEek03rogv356kPRqYNY+7BgvMqID1MZk2e6Cf02?= =?us-ascii?Q?OErIh8/pyI3zCOmFbQpc7hHi/VVKdmv6e+guGi8M6cn+yn3O0WfMBVyD8krK?= =?us-ascii?Q?USIjBuPt/rgb7jVTEz4PObgGglJZQGzwb0dm3dZly6Qiylz7Al2KScoLnesf?= =?us-ascii?Q?2Iz4lC39gY5XsZ1ScRJi1DfHZ1fEsCsH9WxAjvxWtAf4XNuy0uNc3POGb8Ap?= =?us-ascii?Q?BbRDFn10UkYjuIuo6i3lGgg8BCBSi41LONnal7KRkjqMbp1T7/D144kthg5m?= =?us-ascii?Q?kvKU9lyw5dvWIvdgVRuXdsS5nlg3FbS6R3EMYwQRsxD7X1JIRvYBQM7X0GE/?= =?us-ascii?Q?6R5P8JH7+4iCBfMIIijKctRZ04yAEsxutu6O/NdRTXk0lbJHO1IOmCgTFUVg?= =?us-ascii?Q?EGx7Nk6FtYfxwKZeE5yQDvfwSZO32y41Qle3stV2yS+njJCdPoa32WHcYM+6?= =?us-ascii?Q?GkV9WOsVrz1p0yQ5Nf+sUl3cAef3UyL5Cys+qZzgbH9StLD9mduuq1xRONl2?= =?us-ascii?Q?cEulXCCqfIaYrK5hbG1wG4KNJkDkFW5WPCqtts3iwY7Je3VDSCMWKNhhjyn3?= =?us-ascii?Q?WZm6DMWKEhayNaUmrNZkFzXC1XjVIRrfYK0MKmMXqRi5kn1RTRKk3jnfnJR1?= =?us-ascii?Q?anK0XfyNEaJhoU+s4zeHD2alm2YaIhcFqO9SQCZ7K/PWSuN9UFePedXfkrS5?= =?us-ascii?Q?zlPPI0Vn4RuTcH8diRoIjy1/2bInIQzWC2JlYJcc2ls32xhzXNc3xSMSxWFU?= =?us-ascii?Q?q2I8roRL6GwO6ubVPeIO5hdMlqENbMqXC+wOBp8T9x7RLMjrkpA4CV4yIeLp?= =?us-ascii?Q?ybxdlxYBKD5SWDo5/qzd4DgtCuubBlRokIp4I1fi8fXrOwbMSJ0+gw/wmq57?= =?us-ascii?Q?BTzndj3KPEZ+Gusct6N6/LoBO9blgkI=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1b5b9904-b5a6-4476-9da7-08da33001a31 X-MS-Exchange-CrossTenant-AuthSource: VI1PR0402MB3503.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2022 03:41:16.1322 (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: LKIQcvQ8YO+MMwGJ7XuhYxku0y71QmYwGzionjdAIqaaEsA7ARAJskPFx7N/x+54oY/RL20mjt0f0WmufX/xBw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB7156 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 Fri Apr 26 19:25:25 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:869:b0:4b8:7781:bd2f with SMTP id d41csp4072586pis; Tue, 10 May 2022 20:41:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwX6rIAh+dvxk0D9zmrSxkiWA0jEV+g4FRzewnGxGkg1IzpwxlC3Kc5VDdpUFiC1+umJEk7 X-Received: by 2002:a62:c545:0:b0:50d:2d0f:2e8a with SMTP id j66-20020a62c545000000b0050d2d0f2e8amr23026072pfg.12.1652240491086; Tue, 10 May 2022 20:41:31 -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 i20-20020a631314000000b003db1c1a5d96si1416165pgl.101.2022.05.10.20.41.31 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 May 2022 20:41:31 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5224-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="HTEE/vL6"; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5224-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-5224-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 BA33C280BEA for ; Wed, 11 May 2022 03:41:30 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CE2ED15C4; Wed, 11 May 2022 03:41:29 +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 C44A015B4 for ; Wed, 11 May 2022 03:41:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652240485; 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=K7zQKCn14xxiVLEwTVTt+pl3CZZbVbDOCIkUlcCRSMM=; b=HTEE/vL6NZK61B1Hb/C/TdfPlmsVLpgdDZIwdoqiCRUG0NfQ23dziDu242NJfmVuvnGwMy ksu7GNP5mT3kUGmPBpOegkAoMeFpLeKVyBkLg2chl2Q418vWdUfgJ+qT8uF8B7K5xMO/Bj by3NqCpuclB9TEFNGtZxgDaO734Q2v4= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2105.outbound.protection.outlook.com [104.47.18.105]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-12-ETxCLBLQOLCiRwsxZRQMEA-1; Wed, 11 May 2022 05:41:24 +0200 X-MC-Unique: ETxCLBLQOLCiRwsxZRQMEA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dpV63D2fyHAb0AOcWPFM3A7cKOK5ht7882OH6slAGBUeRPhHVjpSzVSnmwFzafdMyZcsh7xs2PzouwDTsmsnj4pxLOIi6zZgxqdzjsi0Ar0YaMNDxwi/UXKY0f+G9rCLRgHn0seKattPTIO7gVf1b9XLkwXFmcKvqIy7YeHnoElhQqx0D9C2gTmtVcSr4TP9OYTmyo/86UGbtWUezFfWqopuaOeGlyhKcKgaLZfZFWl2+alXf6/qT4CzpxzDii+oMIiosU4Y1UPWhEf7t4M8PZtlb69fXoYO20oJRlExTkPvpAp+mYHqVeRgig83IJKFy+BlTdkVwMsZ1XIlOCbQXw== 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=uCMa2tjPOfDjxGZRa7gSwnyDial+zK8DZhmU3DmXAoQ=; b=OZk00fKNVh/it9O08Dn4UpCukjnveOyjJISQGAyEPIWcVnBQcQRCoanAg0cM2mjO/mS9NGaAhCBpeMFHNJWF2JePH8kAL5IFpZTw+L/8D5yHxj57ot7o8FWEn1HvDwyJM/feplrdZetZ9pM/QoCBjAysJWNwf6QNf6Y6FHtbw32nlLgD5VTdqO6r+E6fUECkkrUPe1BMvwz74h+X2dCS8ddy7XINgh4YxTrMa9iR42OpXq9qB1DYXhTuv27sJ89dojrHq26Eysq/P6V8BzKwmW0hbhwKCOmf36mSHEEVa8bdZdmQg5UscZgSZnwFB1UZNwCTAXkunY37cXJTOPi2bw== 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 VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) by AM0PR04MB7156.eurprd04.prod.outlook.com (2603:10a6:208:19b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18; Wed, 11 May 2022 03:41:24 +0000 Received: from VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7]) by VI1PR0402MB3503.eurprd04.prod.outlook.com ([fe80::b5c8:f15:91fb:33f7%6]) with mapi id 15.20.5227.023; Wed, 11 May 2022 03:41:24 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Paolo Abeni , Mat Martineau Subject: [PATCH mptcp-next 15/15] selftests/bpf: add bpf_first test Date: Wed, 11 May 2022 11:39:16 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0169.apcprd02.prod.outlook.com (2603:1096:201:1f::29) To VI1PR0402MB3503.eurprd04.prod.outlook.com (2603:10a6:803:d::26) 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: 58bf02e9-d5de-4fae-8cfd-08da33001ee5 X-MS-TrafficTypeDiagnostic: AM0PR04MB7156: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: kiaT2Xv4GY0Ydqe9cdckF50nDvZ0wEwj+utG+ooCtgjax7UK+TnHsXVKU7oDnmwlHyDGrE0ASYMjNAYKumFh5tXrRx04/QaMdffM4S2ETI98QRLeXHgVZVjearem+BebU+6en0H8WEwugDR6u4/RqezgbdW6TjBwba5Wr5BgQ3maftAuo9f1/if1pmLOXuln/POZUfZlbRk8gZVdybocREDB5NaApX7uB9faWSijuS6ncENpoLU7NJEY1Pkm5F+cJxnsdybBw4OPtfbY9yLv+MYp9rY5txuFv8dEsvcYxZ5V06PaZaNF6eVlQ2bUUf+8LbznKM8lBtrS3ySnKLmzLmhJsWwGmbyg4rv427nHMTvNAzusQInIaSdb5msAywnMH/bptKknV+H6shk0Py86UR6mxQ/KLF59hjS1PoFqVsCxskIAkTZC79Py2+XuMc2ZuaGY8TB0Dn1mH8D3RHlksccvGk426iP4pWAwBcZhz9b1F71F1o9lZS4E5ds4JWmBE2Bb3LwKqdW11hKv/scGDsW9RkvT6d9IcRYwWSpqf5/7fVW9t1gqOyOIjScgipdHgaGvfJ3+WoNzNKSG78mPwdkIkzbAbx+JIRQ7qJeiLe1Oc5PKX0ZAA3QVm6dSIJ5kP20JMgotmHeGRdrbqlxK9AAdDZPGh6iRu4B8oUyzZLXOohuhajSxZz48eN7vPUyC X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR0402MB3503.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(6512007)(86362001)(5660300002)(4326008)(2616005)(6486002)(66476007)(8676002)(8936002)(6506007)(66556008)(38100700002)(6916009)(6666004)(66946007)(54906003)(316002)(508600001)(36756003)(2906002)(44832011)(83380400001)(186003)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GTNPurqoADgh5TdX+PqBS4xpWIWda7J/6vT4KXYUsyskWFASApOM7MrqNart?= =?us-ascii?Q?VndKWuama7B+PCRyyfxavSPanqIMX3UOSpduvFAOkTlj8niGP7PAhIGNozt4?= =?us-ascii?Q?mUrCOkTN1RA7iAbHOCXHPBOjA9OOGdg0ROP+qTfkoKY44dO9TXysd/ukIY1H?= =?us-ascii?Q?A/jzCd/st7MZTI0m5LGnbIZRYcPbJdjiJyBdHVrXuqMhg6o97II/hSNxo2qG?= =?us-ascii?Q?TChrTdtXhlsGDYcSxsCdG0DO47OKTubfwCFoJANDkyD5eA6FKAysf+vttTFM?= =?us-ascii?Q?ws5qqtqSKYQL5S1iR+W02b4OPDB3QWRMF/mzsxTTlglQAZSgXhmZJBcey64+?= =?us-ascii?Q?GiGnBYUjUdi4at0AZy8PMD7jFc7rBPF4lpUNsp1tORWWrUJ5OkTMf96qk4yz?= =?us-ascii?Q?6HiX6zEzVQRN4bTq9nVPvMKJTynaUaqcpOdwQqgR6045uavcqU47jPADYYU6?= =?us-ascii?Q?2RjpXM6zhNtes4nYRRqgX8sThlzuX54HMLNOsJSOBSY4yBrQezWP1Nxn/X9J?= =?us-ascii?Q?YgscPm/+309OWXIupSt8WyshEE7mxEmJ2/w0JLhAXZ1qFAzcsVpb/z3d3qjh?= =?us-ascii?Q?iUaKh/8UOI66s9EWU+lDNPp05Ei4FXfy8ptLtDGTAMUMurZBTa/ttS5976lr?= =?us-ascii?Q?lMigpc5t3x3RAdruhTClfHwlGGA2wQJ23c1KkB8QwqFZMrq5R8WDoHq9Ur1P?= =?us-ascii?Q?9pIOn4jl3+7raXPjSIegDk9Qzm/WH28qAkHY1UtBCMjnXqUABMG3PPu2iMEu?= =?us-ascii?Q?YK/8va8OEHJ8U3tFSY8sEbXUQ+LUCA7R0FuS+nCECNztuLTgpMbKCDHcF9N1?= =?us-ascii?Q?+r8cQ/d73kls5jNtpeIOBaHeBlZ8lz+G4TV833trLgeY5jzMjt4L0kGX1Pki?= =?us-ascii?Q?/W//g95CKP2BZ45axFqkZoXh+NY18nWBYOu1IowB6oJQ4im4xspi1Bzmj5Lp?= =?us-ascii?Q?iihLr5jXrlUCLYWSVkY12mH3Kul9bQIyiBYuCL6SS5P2MtXcE4MwGNuffVZT?= =?us-ascii?Q?LRsNXPUWJCaCOWjQlW67dFpTKbw8hAUf06lsjI1zveNBwYndXUnVqiAY9wnN?= =?us-ascii?Q?h0qafAqJuwWV8Xn3OOS0S0CEUuF7nqywVXfvc5ob7/KeZqaQEvtZl20xhE74?= =?us-ascii?Q?FEZzVRgluFVC+wJ1+9JV/Y0Hdep4T5Eforfv237TdbFo5PKG4Q/Y+iBDWsRB?= =?us-ascii?Q?HZCAljoVqoMOuytdRa4qtQwEB69rMpb4hR1OHa2l0fjGmAhzOIAwCLwoTcxJ?= =?us-ascii?Q?8sk6wU9GHY+CnytBOoJowQBNJDIFkezIzdNBTCWlUFDSjFQuqmZf9Ur8p3Sq?= =?us-ascii?Q?/a7EbzesjbOeShCZlrHnYIKL66SQcyOAKRBYN6cRVZgKR/bkoleIgrb1GCVu?= =?us-ascii?Q?VHgt8TUJEv6GxwaSPeIMv1/ShhCZgFiTa89JoUbZiOgoiTHbSFFEZp0Y09JI?= =?us-ascii?Q?6Pv2CHrmoSYYL9H7VvDeWqPCPGz/pyQ2kG8Pd/UPy0szyl0V1pznHgGIpEbz?= =?us-ascii?Q?P2r0ahV4xNv50BiA2m2pAQNEc5G6oBJAUc3JIpa+7nWifWKE6EbPFf9cj8tO?= =?us-ascii?Q?5S3Rup/QXcJ6AvEmdwk1TEwTG9Uhct8pl/Nmwq3tWkO0V5XOk9ETBkKmLZU8?= =?us-ascii?Q?0zewyZWZPI2+oHvMbEwA3DwMFrXP+4qQlTH6abGZ2WSe9xPoO5VSmMTryCuP?= =?us-ascii?Q?IfglbYWZzJM3PB4DP/5YPyzeM7AXVDjRnlNxDEbKtaWwn6GDru9OLjoxOl8m?= =?us-ascii?Q?m5G6RtEyJSAo4Feu1cDVPoWKaHJxKQI=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 58bf02e9-d5de-4fae-8cfd-08da33001ee5 X-MS-Exchange-CrossTenant-AuthSource: VI1PR0402MB3503.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 May 2022 03:41:24.0223 (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: ljIBuuLP8b6dvVluezesq0thDh4MKSuajOPYtN9hf5OfISh9iKtn9xAlkUWwIKHvNN4y6rV7x120f2FLmrslAg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB7156 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 | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 51a3e17acb9e..93a5739712ce 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -5,6 +5,7 @@ #include #include "cgroup_helpers.h" #include "network_helpers.h" +#include "mptcp_bpf_first.skel.h" =20 #ifndef TCP_CA_NAME_MAX #define TCP_CA_NAME_MAX 16 @@ -20,6 +21,8 @@ struct mptcp_storage { }; =20 static char monitor_log_path[64]; +static const unsigned int total_bytes =3D 10 * 1024 * 1024; +static int stop, duration; =20 static int verify_tsk(int map_fd, int client_fd) { @@ -258,8 +261,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_mptcp_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