Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp28131605rwd; Tue, 4 Jul 2023 13:36:08 -0700 (PDT) X-Google-Smtp-Source: APBJJlEp9TvoZBHlpcJwaNshLf0M/VHhQQNAVXtHwOoQKZD/6jZSl2E7DFpBfN/MKRKWFpWnHOEb X-Received: by 2002:a17:90a:5148:b0:262:e821:b3f8 with SMTP id k8-20020a17090a514800b00262e821b3f8mr15359424pjm.38.1688502968623; Tue, 04 Jul 2023 13:36:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688502968; cv=none; d=google.com; s=arc-20160816; b=rp5v7sjx4ghXa+iCol5y45NG9QHekj5Qcoq5/YXRUn5U6BJEyD7MyKndYGlfQaPVOp IHJ4StD6gZcfIyICsSlande1WXwTF6tiZVxgJ2F8x1IwgvXdoM+bN3U94y8vU0w1IAWa Wi/4z6rPQx2JaPJPHdnyWNsvlPmRkrv/hRJQDMy21T1nvzWwOJhU4fcUU0ZRTglv5zGT WWuiLMA3gYiaXYU3FwVN/1q+byOzBaXUvPlHhISANV8RUogJ+H8eJQt8c8HAhIo+sboW 1Hf5w820j5xhEruu6hI42qcKxh5KkoUTcVZ9ECo7SRjBfH7n4u16oNB0RCaja3uP2ILc xFwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=+qNcOBkx9KVjEG4DcNywvaFsWzeBVICK48QZpMcCWbo=; fh=I0Y8/Ezccu6vjyk/6L87n8hF01qW3e76KPOdidBpltc=; b=n5M5MQa8f+FHDIAbbt9CsBM1NJlBQGAGu/UTuniXslOJ0QJQPU5oPIK2gpMBxVMHkF 2OmqRurUrAYdc8DDebAmXIqbmh+K+ZOSKOyTZ8ET5PQnxUVKYSb8fDQYPayfQzzJHuF9 dw6D0/R+OfE6GEdDGvZvCnW0sGO6a2zBG38U/hM+ckDrbmx39VYRGM81yqVAjtfhSKlH wa+V16b+fI6Zu6yNO66/u2add3Pzo9FqCBilHby5WfmemwOLoSttjhMEqYJRjuSSt48B E52OVJ1hYmh+4bJrQMESzkVfp/rd28oZhlgkr26etvvTgBbhMTB3NXrgDzvjLdR9ynot XGAA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=YoZEoS3H; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v191-20020a6389c8000000b0055ba60a3303si5224518pgd.582.2023.07.04.13.35.55; Tue, 04 Jul 2023 13:36:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=YoZEoS3H; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231561AbjGDThL (ORCPT + 99 others); Tue, 4 Jul 2023 15:37:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40618 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229451AbjGDThK (ORCPT ); Tue, 4 Jul 2023 15:37:10 -0400 Received: from mail-yw1-x1130.google.com (mail-yw1-x1130.google.com [IPv6:2607:f8b0:4864:20::1130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BC62110D9; Tue, 4 Jul 2023 12:37:09 -0700 (PDT) Received: by mail-yw1-x1130.google.com with SMTP id 00721157ae682-5702415be17so66327127b3.2; Tue, 04 Jul 2023 12:37:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1688499429; x=1691091429; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=+qNcOBkx9KVjEG4DcNywvaFsWzeBVICK48QZpMcCWbo=; b=YoZEoS3HG+fXtDw3Jor1iWRblhnEgEBM16kwycBU8suOmtv9Wtd26RvJH77xQhwPGN lBbN9ouQOhII8QMt4oidpGYD7dpcLIi784wwl7XoWOMSMISloDMLULgVIDSIxAVXJN41 MgnIhrrSxOkq415c7jYj3CMY659EnZ+fGTAUuCDeeZABg7uSeDYKm7QcsHZySXBtXIKT AYAcFLPgb9BV/oRP5aGSXlJtlYUi0WpDLpSIW/1R63avlDGQvWLoS9msGfh8FE1GlpOs 4Dq0oglqUO/vqPOiV58Psf4oklGn0ds9KKN0WQ+KlxlzOl1hPSUOdEsZ9LA07MJMTVWJ Fjdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688499429; x=1691091429; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+qNcOBkx9KVjEG4DcNywvaFsWzeBVICK48QZpMcCWbo=; b=GgCOGGeomqUUBrgsOlOchRPx+Ti7KH6AaHVsHMIFvHXMZdJ4aeVtrMAsT95Yrntte1 zbIE/jfZOiScmkvaWcQ4QNPk04/Jg4/Z8AjeCdjOdTI6l9Zw1osYBpEH69fDYV6YW5+F UGnrkkOnSjNHjA1UVEOPZpy8rnxPVy0ntgqCxiRbZ/SJu3PuuvTzI1WKYNkp144br38n L5VrtC/ZhVfXQcJPMrt80EHgeygUK4GY234PtEOwrdCPJWPi/vdpDCOKolzdoV2TDe6R +c8osUyRz67jKnvGh574/VZ8nVg/TXkuhsfjuVvlE5gsNXm2QB1fxxmmcmj8rqcYdGiW rfwg== X-Gm-Message-State: ABy/qLZPSRs2cNqQJPeK/L1ON61g6jyv3YwyOGwIGCr+PQBQrL7GneVo wSNzMRyFaBWK7nkB8d+spIlU6plTXTgvczQL58I= X-Received: by 2002:a81:9e43:0:b0:565:3749:c24d with SMTP id n3-20020a819e43000000b005653749c24dmr15651223ywj.14.1688499428944; Tue, 04 Jul 2023 12:37:08 -0700 (PDT) MIME-Version: 1.0 References: <20230703175048.151683-1-jthinz@mailbox.tu-berlin.de> <64a33ce7b50d2_6520520875@john.notmuch> In-Reply-To: From: Willem de Bruijn Date: Tue, 4 Jul 2023 15:36:32 -0400 Message-ID: Subject: Re: [PATCH 0/2] bpf, net: Allow setting SO_TIMESTAMPING* from BPF To: =?UTF-8?B?SsO2cm4tVGhvcmJlbiBIaW56?= Cc: John Fastabend , bpf@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, linux-kselftest@vger.kernel.org, Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Shuah Khan , Willem de Bruijn , Deepa Dinamani , Arnd Bergmann Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > On Mon, 2023-07-03 at 14:25 -0700, John Fastabend wrote: > > J=C3=B6rn-Thorben Hinz wrote: > > > BPF applications, e.g., a TCP congestion control, might benefit > > > from > > > precise packet timestamps. These timestamps are already available > > > in > > > __sk_buff and bpf_sock_ops, but could not be requested: A BPF > > > program > > > was not allowed to set SO_TIMESTAMPING* on a socket. This change > > > enables > > > BPF programs to actively request the generation of timestamps from > > > a > > > stream socket. > > > > > > To reuse the setget_sockopt BPF prog test for > > > bpf_{get,set}sockopt(SO_TIMESTAMPING_NEW), also implement the > > > missing > > > getsockopt(SO_TIMESTAMPING_NEW) in the network stack. > > > > > > I reckon the way I added getsockopt(SO_TIMESTAMPING_NEW) causes an > > > API > > > change: For existing users that set SO_TIMESTAMPING_NEW but queried > > > SO_TIMESTAMPING_OLD afterwards, it would now look as if no > > > timestamping > > > flags have been set. Is this an acceptable change? If not, I=E2=80=99= m > > > happy to > > > change getsockopt() to only be strict about the newly-implemented > > > getsockopt(SO_TIMESTAMPING_NEW), or not distinguish between > > > SO_TIMESTAMPING_NEW and SO_TIMESTAMPING_OLD at all. > > > > Yeah, I think it would be best if we keep the old behavior and let > > SO_TIMESTAMPING_OLD return timestamps for both new/old. It looks > > like it should be relatively easy to implement? > Alright, I guessed that would be preferred. > > Yes, if there is no objection to making the added > getsockopt(SO_TIMESTAMPING_NEW) this tiny bit more =E2=80=9Cstrict=E2=80= =9D, it=E2=80=99s just > a matter of modifying the if inserted in sk_getsockopt(). (And, well, > in the other case I would even remove this if.) The difference is in the struct that is returned, on 32-bit platforms. Both calls should always be allowed? See also put_cmsg_scm_timestamping64 vs put_cmsg_scm_timestamping. For the second patch: the _OLD/_NEW was introduced to work around limitations on 32-bit platforms. This is intended to be transparent to users, by defining SO_TIMESTAMPING accordingly. Can the new BPF code always enforce the 64-bit version, that is, only implement the _NEW variants? And perhaps just call it SO_TIMESTAMPING directly.