Received: by 2002:ab2:620c:0:b0:1ef:ffd0:ce49 with SMTP id o12csp1326828lqt; Tue, 19 Mar 2024 23:23:31 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXgHYmgfA2Wu4c5VKHtxDLWvDT2ZLx8uCUeoegScfZK4AKOO4Gd0qK+nLicOI7GGyfDruMCShqUdkDBlrAM9d9xuF09bwWtpZqE86k+cQ== X-Google-Smtp-Source: AGHT+IGVP9hBLFbXHtJeNw4RUOCKwRpoy+3RjhtOdIpJSEAboSNLjgUT+Nflxe9PQUTpPqAUIwz+ X-Received: by 2002:a2e:3310:0:b0:2d6:8868:f1a6 with SMTP id d16-20020a2e3310000000b002d68868f1a6mr2769362ljc.43.1710915810892; Tue, 19 Mar 2024 23:23:30 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1710915810; cv=pass; d=google.com; s=arc-20160816; b=F2y4SvAbg5MeSaazZTNAmi7yRKgslbJmEi+vuYGGcllE77KdzN6RS9LnKg1tCxyxE+ 2o2+z9YWz+O685QRhHMIvYDyidtV2lQA8zNcJSSN+EG4v//m1/1UlV0IRQE5QbUquwWa zDXtn2LJq0Nb9niWsPJ4IWHAqB/vZDIXz+dIctDxJxWmCW2OGEs9mOuXYhayEZhusllt gwMrb/94/I6anXa01h+E4qqgN5a/q68A9XnFF9Gktm+Q44MC6mM8Pmh+jh3mI9n0+C6y BAVtxtECipzv/emZT16fxcq7Ce578e6AX9B5Zh2sdvqvGs7a/I6cHAjW0D7wjat1fTXU G+Dg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:in-reply-to:references:cc:to:from :content-language:subject:user-agent:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:date:message-id:dkim-signature; bh=OMPXI3u8TkCfqqrW7UKeDyKVc2JyB9/Mz90//A5Weeo=; fh=UtCPncgmTl1KqIk7V14B62Ji2kDPaPX3KRq08Tfk9d4=; b=ebJFpDVPoR9EhLBs1EIalqE81qKmfkUAOAbSoz0O53q1cnYL4TMENKRocMnKGGMtiW q4fqJzo/EdabvBFTt0JruLiEoH/WYil2lCNsXOnL7/NEhLFzd4Y3wtWgzJeqycFag3jh aTK8KmSLxi8stFhmAz8VYbkpE3mdNOEbzrgq+Hp8wbKoecjsgd5GmcCA4nHkuW1N0zvc USHdNNkX0n37Odxqq/eaAHVbq2USGweMjrolXbzOUcuBIeXBG9G6+yDTNeGkHnjiqp0O LOZI1kzdgRXcuKwAKr4donFrr+2v/1EfJlCVj/r11yG+P6NlVdOkBOs0Z7BBsbUaqRI8 Lktg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=lQdBdNWD; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-kernel+bounces-108490-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-108490-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id he9-20020a1709073d8900b00a46b02c32cbsi3376404ejc.389.2024.03.19.23.23.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Mar 2024 23:23:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-108490-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=lQdBdNWD; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-kernel+bounces-108490-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-108490-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.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 am.mirrors.kernel.org (Postfix) with ESMTPS id 729EE1F23231 for ; Wed, 20 Mar 2024 06:23:30 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 53AF31B5B7; Wed, 20 Mar 2024 06:23:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="lQdBdNWD" Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 6F49E1DDDB; Wed, 20 Mar 2024 06:23:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710915796; cv=none; b=cdwLC0f3of4uFasdUDeFHzTefPm6k8Nn1lLBFC+WFv81AJRPuwLtMiBqm808rQz2mgDgS0T3Q81FMT8DbuRhkOxIE4sr4mIX//fT5RqxonNzJUk/RokEIX+tgrOGLEvPPySye+6Uaf07zDw7Nmlp+MkLzZg35g+TISFDEG03KGI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710915796; c=relaxed/simple; bh=JepxoVn/y92Zm8LSWzg0iAPKkXS0xVOaDszLYrBRltk=; h=Message-ID:Date:MIME-Version:Subject:From:To:CC:References: In-Reply-To:Content-Type; b=ewHl250FmRDJHEKMvyJ14yprOwamHynkoVW1GpqbApxFyXSiAKuLkEmjNFLZ6C6W24BcCgNmKo17cbVobcVY0A8LdjuODu6s9bqWujrO9+gaNdafIGtHq5SzzMPu89P3cnR4q2OfZLsailLJSBGvFe4D3/TVOP5r6KRajO6kdNI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com; spf=pass smtp.mailfrom=quicinc.com; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b=lQdBdNWD; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=quicinc.com Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 42K585e5025111; Wed, 20 Mar 2024 06:22:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= message-id:date:mime-version:subject:from:to:cc:references :in-reply-to:content-type:content-transfer-encoding; s= qcppdkim1; bh=OMPXI3u8TkCfqqrW7UKeDyKVc2JyB9/Mz90//A5Weeo=; b=lQ dBdNWDRiSduSQ8MKPf7UDbwEaZYbYRAF0DNdVpRFqQVfIEjei3V8ZujgI+bs4Wlr nmqRVmwXlQZ/MCNdJfjyfE6zvUgJPxlQWmD8LDzR41JRN0QAQLbi1jrfu77hrQ/n WAVP9mh9vNwQSdXeZYOZwbzRZOjCp63SaZtC+4A+pI8lyTtrCLWSAvKf2ndDcoSL ezCLeiptKcsdOlss97JnfKBGsyTheNO8ojw6FllFwjw2hbb9+zS+gyC/5VEArD6i PjveUx34Y2cZu8cmrkQYcbkK+4Pxt95zTLkMvqYscsLW0ntMET2HUUuRQNeJ/2IU 65VpnWwdIIme1a8X2sgg== Received: from nasanppmta03.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3wyqpe09ds-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 20 Mar 2024 06:22:47 +0000 (GMT) Received: from nasanex01a.na.qualcomm.com (nasanex01a.na.qualcomm.com [10.52.223.231]) by NASANPPMTA03.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 42K6MkqO030140 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 20 Mar 2024 06:22:46 GMT Received: from [10.110.44.107] (10.80.80.8) by nasanex01a.na.qualcomm.com (10.52.223.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Tue, 19 Mar 2024 23:22:42 -0700 Message-ID: Date: Tue, 19 Mar 2024 23:22:41 -0700 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH net-next v4] net: Re-use and set mono_delivery_time bit for userspace tstamp packets Content-Language: en-US From: "Abhishek Chauhan (ABC)" To: Martin KaFai Lau CC: Willem de Bruijn , , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , , , Andrew Halaney , Martin KaFai Lau , bpf , Daniel Borkmann , "Alexei Starovoitov" , Andrii Nakryiko References: <20240301201348.2815102-1-quic_abchauha@quicinc.com> <2a4cb416-5d95-459d-8c1c-3fb225240363@linux.dev> <65f16946cd33e_344ff1294fc@willemb.c.googlers.com.notmuch> <28282905-065a-4233-a0a2-53aa9b85f381@linux.dev> <65f2004e65802_3d1e792943e@willemb.c.googlers.com.notmuch> <0dff8f05-e18d-47c8-9f19-351c44ea8624@linux.dev> <65f21d65820fc_3d934129463@willemb.c.googlers.com.notmuch> <65f2c81fc7988_3ee61729465@willemb.c.googlers.com.notmuch> <5692ddb3-9558-4440-a7bf-47fcc47401ed@linux.dev> <65f35e00a83c0_2132294f5@willemb.c.googlers.com.notmuch> <8d245f5a-0c75-4634-9513-3d420eb2c88f@linux.dev> <66ad9e5b-0126-476e-bf0f-6a33f446c976@quicinc.com> In-Reply-To: <66ad9e5b-0126-476e-bf0f-6a33f446c976@quicinc.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nasanex01a.na.qualcomm.com (10.52.223.231) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: spoDDDnBw54sPQ9lWY3jvni3HkwhnNgA X-Proofpoint-ORIG-GUID: spoDDDnBw54sPQ9lWY3jvni3HkwhnNgA X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-03-20_03,2024-03-18_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 bulkscore=0 adultscore=0 clxscore=1015 malwarescore=0 lowpriorityscore=0 impostorscore=0 spamscore=0 phishscore=0 mlxlogscore=999 priorityscore=1501 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2403140001 definitions=main-2403200048 On 3/18/2024 12:02 PM, Abhishek Chauhan (ABC) wrote: > > > On 3/14/2024 3:29 PM, Abhishek Chauhan (ABC) wrote: >> >> >> On 3/14/2024 2:48 PM, Martin KaFai Lau wrote: >>> On 3/14/24 1:53 PM, Abhishek Chauhan (ABC) wrote: >>>>>> The bpf_convert_tstamp_{read,write} and the helper bpf_skb_set_tstamp need to be >>>>>> changed to handle the new "user_delivery_time" bit anyway, e.g. >>>>>> bpf_skb_set_tstamp(BPF_SKB_TSTAMP_DELIVERY_MONO) needs to clear the >>>>>> "user_delivery_time" bit. >>>>>> >>>>>> I think the "struct inet_frag_queue" also needs a new "user_delivery_time" >>>>>> field. "mono_delivery_time" is already in there. >>> >>> [ ... ] >>> > > Martin, Do we really need to add user_delivery_time as part of inet_frag_queue struct? I was wondering why is this required since we are using tstamp_type:2 to > distinguish between timestamp anyway . > > Let me know what you think ? > >>> I would think the first step is to revert this patch. I don't think much of the current patch can be reused. >>> >>>> 1. I will raise one patch to introduce rename mono_delivery_time to >>>> tstamp_type >>> >>> Right, I expect something like this: >>> >>> struct sk_buff { >>>         /* ... */ >>> -            __u8                    mono_delivery_time:1; >>> +        __u8            tstamp_type:1; >>>         /* ... */ >>> }; >>> >> >> Okay ,This should be straight-forward. >> >>>> 2. I will introduce setting of userspace timestamp type as the second bit >>>> whem transmit_time is set. >>> >>> I expect the second patch should be introducing the enum first >>> >>> enum skb_tstamp_type { >>>     SKB_TSTAMP_TYPE_RX_REAL = 0, /* A RX (receive) time in real */ >>>     SKB_TSTAMP_TYPE_TX_MONO = 1, /* A TX (delivery) time in mono */ >>> }; >>> >>> and start doing "skb->tstamp_type = SKB_TSTAMP_TYPE_TX_MONO;" instead of >>> "skb->tstamp_type = 1;" >>> >>> and the same for "skb->tstamp_type = SKB_TSTAMP_TYPE_RX_REAL;" instead of >>> "skb->tstamp_type = 0;" >>> >>> >>> This one I am not sure but probably need to change the skb_set_delivery_time() function signature also: >>> >>> static inline void skb_set_delivery_time(struct sk_buff *skb, ktime_t kt, >>> -                                        bool mono) >>> +                     enum skb_tstamp_type tstamp_type) >>> >> This should be straight-forward as well >> >>> The third patch is to change tstamp_type from 1 bit to 2 bits and add SKB_TSTAMP_TYPE_TX_USER. >>> >>> struct sk_buff { >>>         /* ... */ >>> -        __u8            tstamp_type:1; >>> +        __u8            tstamp_type:2; >>>         /* ... */ >>> }; >>> >>> enum skb_tstamp_type { >>>     SKB_TSTAMP_TYPE_RX_REAL = 0,    /* A RX (receive) time in real */ >>>     SKB_TSTAMP_TYPE_TX_MONO = 1,    /* A TX (delivery) time in mono */ >>> +    SKB_TSTAMP_TYPE_TX_USER = 2,    /* A TX (delivery) time and its clock >>>                      * is in skb->sk->sk_clockid. >>>                      */ >>>                 >>> }; >>> >>> This will shift a bit out of the byte where tstamp_type lives. It should be the "inner_protocol_type" bit by my hand count. Please check if it is directly used in bpf instruction (filter.c). As far as I look, it is not, so should be fine. Some details about bpf instruction accessible skb bit field here: https://lore.kernel.org/all/20230321014115.997841-1-kuba@kernel.org/ >> This is where i would need thorough reviews from you and Willem as my area of expertise is limited to part of network stack and BPF is not one of them. >> But i have plan on this and i know how to do it. >> >> Expect patches to be arriving to your inboxes next week, as we have a long weekend in Qualcomm >> Fingers crossed :) >> >>> >>> >>>> 3. This will be a first step to make the design scalable. >>>> 4. Tomorrow if we have more timestamp to support, upstream community has to do is >>>> update the enum and increase the bitfield from 2=>3 and so on. >>>> >>>> I need help from Martin to test the patch which renames the mono_delivery_time >>>> to tstamp_type (Which i feel should be straight forward as the value of the bit is 1) >>> >>> The bpf change is not a no-op rename of mono_delivery_time. It needs to take care of the new bit added to the tstamp_type. Please see the previous email (and I also left it in the beginning of this email). >>> >>> Thus, you need to compile the selftests/bpf/ and run it to verify the changes when handling the new bit. The Documentation/bpf/bpf_devel_QA.rst has the howto details. You probably only need the newer llvm (newer gcc should work also as bpf CI has been using it) and the newer pahole. I can definitely help if there is issue in running the test_progs in selftests/bpf or you have question on making the changes in filter.c. To run the test: "./test_progs -t tc_redirect/tc_redirect_dtime" >>> Martin, I was able to compile test_progs and execute the above command mentioned by you . Does the output look okay for you ? [ 3076.040766] IPv6: ADDRCONF(NETDEV_CHANGE): veth_src_fwd: link becomes ready [ 3076.040809] IPv6: ADDRCONF(NETDEV_CHANGE): veth_src: link becomes ready [ 3076.072844] IPv6: ADDRCONF(NETDEV_CHANGE): veth_dst: link becomes ready [ 3076.072880] IPv6: ADDRCONF(NETDEV_CHANGE): veth_dst_fwd: link becomes ready #214/5 tc_redirect/tc_redirect_dtime:OK #214 tc_redirect:OK Summary: 1/1 PASSED, 0 SKIPPED, 0 FAILED