Received: by 2002:a05:7412:419a:b0:f3:1519:9f41 with SMTP id i26csp3353753rdh; Mon, 27 Nov 2023 12:01:59 -0800 (PST) X-Google-Smtp-Source: AGHT+IEnDcfv0z/TpSR1TEU/WyMMYzrNx29xFik3qeQF/oodV66pr/NwIAfDHIsD0ht3veFaug++ X-Received: by 2002:a05:6870:5a8b:b0:1f0:8122:554c with SMTP id dt11-20020a0568705a8b00b001f08122554cmr12452228oab.45.1701115319130; Mon, 27 Nov 2023 12:01:59 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1701115319; cv=pass; d=google.com; s=arc-20160816; b=SMCtQs/DcTAqxAktVQJbONbLO82xa8CGaEwwMCTrojX9moDRQPlqyTLi38XoC/Sjdr I1DL99igjqffvAuI64s2EWVqJEfdVpQDy9zV0oh6rImyeKpwx++R9vzfcUevRVdRTEni ofoiXYasKQP8oatY9MrgOKM7yINM3Aw1QZYmutenEKsUkWcJiYOYK5bVG95bebnzwZ/a EaDSlMbNRnAo8dW5i1D2iY6jLPuYJF+zyXxRDakU7MmDkU5BhTJoowDdT367PEh3QpNS tK3+VUKrvBF4y0v0RKAaDyZJnAA4HphNqCTyb4hgkQZNBnzDCQc5/HJRylkC/ImutquB n5WA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :message-id:date:subject:cc:to:from:dkim-signature; bh=3DS7SA2dzesZs+ZgRdGiou4fuD9fyrTboQgSAc/evv8=; fh=I58HNIfyY+DxWJ+eoDyVzM/Nq9LRcGHbqiyfs3eVZ1g=; b=FEkG2IkRARt6MKW68Nx+KFlQ/P/y3WUX5MX26lkdPzMyVMldtCid+OrTF/fbxqVpsf iArChHvD0gGT5k2xIGaA0Fueh6MoXdzOq8OCRzDeVMTywp5zu94b5FiMyDy3u4KAl5gg nm72AnXAjz6/PD3JMIQXcQoQutL3Wj+SKc4kgFD8pIsphkXc7s35Pr7p5fGrRT4GForS 0l/lTA3F8Qt0pDRYG0fBLRXCSr0RNfqNcN1ydn5LwLnb5hyiisWkaREQA2LHjFzcA28m CrtqZzcRrEpdqvHMvrrFQBXKaUmTmTLpc5Ecrt7RrmkZgxSbWhpX2gJ8Ord7JrjgDkTg mCog== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@hotmail.com header.s=selector1 header.b=RnR7cdl7; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hotmail.com Return-Path: Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id lq10-20020a0568708dca00b001fa69a846bcsi631153oab.138.2023.11.27.12.01.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Nov 2023 12:01:59 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@hotmail.com header.s=selector1 header.b=RnR7cdl7; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hotmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 0A73E806A11F; Mon, 27 Nov 2023 12:01:56 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232965AbjK0UBo (ORCPT + 99 others); Mon, 27 Nov 2023 15:01:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32800 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231174AbjK0UBn (ORCPT ); Mon, 27 Nov 2023 15:01:43 -0500 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12olkn2055.outbound.protection.outlook.com [40.92.22.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1BF811B5; Mon, 27 Nov 2023 12:01:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cvge2IdQoPC0HJneSL5gdjiTYFQQ1gYl4G/RH20dVKnXHMBIJxJ7ShRa6z88+GdVZzyLl2QVH4QRL4IFCqXknHZoJoXqrfKB/AhkyTwGD/8R8Di//dqVN2IscpF6rnK0+HnwctikxeTvR6U3FDzXbBfIFTz6piQxz8oG9cr5HASN/E7vkOM8TypQJipOlTp0mPDwGrJETJyivNf7DxJSC2eLxrQFv5c1JqJD5OxdrV3ht1w+G8wfR/YFWDbYqtTjK+DOl9q8EcLg9VxaNJfQXfoopSIO9vLrB9FSmtke/CwCJX0eXF2sK8LEHzFN6NxCdIoRtEdJ7R5q9gKRQp1a6g== 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=3DS7SA2dzesZs+ZgRdGiou4fuD9fyrTboQgSAc/evv8=; b=OaJ9/hKaflBu7iaCGHwcB+ka3RyDCnYs0QZd56sXTmIdhTlCui5OSVwSlyBOTdSbs5dtEnIf7i7mPu5zyRFvvghhZ2LFA/OgwAF0MPzRXK7JZ8941YgcaYmGDUgfuOjJHv1gK3WZovkoILurgKdl7WLELUi+KHavluVdx8qSNxTI6WbY5kzk1Vbeg2yMXKJI7lRtT4Tv4tqlfmtlxdc3V1whtNGq/IM8we/Vw+4n6Xk2ayVu+IOjkoVZIbG1ptErlhBxN1KTCyoC4UKqzmRgjVxtuoo+5+n2XIxaNGZZol5Yk3NeGViGgJbt6K9d84UnxBtxOWAoabRtalbakqUY1g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3DS7SA2dzesZs+ZgRdGiou4fuD9fyrTboQgSAc/evv8=; b=RnR7cdl7XrF7Wun8Q0FWwJ/eeIBjELgxzMUey9nwDim280saPy+OoGs6KgD45lKzGTDgrM33xzMGoGG8Q1DrRVNETTuWnK2QvTZtUNQLU8G4xg8BcjjzeL4O63HDzwgQYw8EQ7lgu5vwpUlryy9v7AKKhGjDfONFVX547RkmbWSborYx3KEtLgJ7ryiPgg6kLD09wDwsxH7ESXtrV7jitf9/ue3naiGdn/QCvbASFadm6xWw50EB+yB/vbrENiJGrzQDPzm3htaauC7YPre8jh0zSiO1fliibw2EnXx+wRTPwWQHmMEXOepZ5Nxa/Sk7MZKOwS2iLpKEDspe0bvLUQ== Received: from PH7PR03MB7064.namprd03.prod.outlook.com (2603:10b6:510:2a5::8) by MW4PR03MB6442.namprd03.prod.outlook.com (2603:10b6:303:121::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.21; Mon, 27 Nov 2023 20:01:46 +0000 Received: from PH7PR03MB7064.namprd03.prod.outlook.com ([fe80::9ca4:4c22:a89:9a8]) by PH7PR03MB7064.namprd03.prod.outlook.com ([fe80::9ca4:4c22:a89:9a8%7]) with mapi id 15.20.7046.015; Mon, 27 Nov 2023 20:01:46 +0000 From: Min Li To: richardcochran@gmail.com, lee@kernel.org Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Min Li Subject: [PATCH net-next 1/2] ptp: introduce PTP_CLOCK_EXTOFF event for the measured external offset Date: Mon, 27 Nov 2023 15:01:29 -0500 Message-ID: X-Mailer: git-send-email 2.39.2 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-TMN: [GxQEKU/rJfdO+ywWq22A99tg8I4ZOX8M] X-ClientProxiedBy: YQBPR0101CA0220.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:67::17) To PH7PR03MB7064.namprd03.prod.outlook.com (2603:10b6:510:2a5::8) X-Microsoft-Original-Message-ID: <20231127200130.719-1-lnimi@hotmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH7PR03MB7064:EE_|MW4PR03MB6442:EE_ X-MS-Office365-Filtering-Correlation-Id: 60fd37d1-342e-49f0-da77-08dbef83af08 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EzbY219ZeovDxVIVFonw8+9FbtJ65/1r+r1NfF3pNZBkauZg8CSyyv2JatZVALVj/RYpWG6dGgP6cCe52RBvKMTkoYipsDdeAbMOV1tfnBDM1wGvuAyV01wWDnViFR2Iw9nG4Ry73Ap5YFhIhGigfLZ/XALc+vqdZ/8UjrltuG6EdXm0SHMVIxxMyjTND+r6WeR1edpo2RLtbm29JLWYpkYSibpg+BLNeVm92IogR5Ylxi4P0WIG9nWP+vUKXV6bcbkUni0X5pUs64oW8EGuXzTOYRvZzNNo5YMzc6BROph/VIiLr9CluzoKPqu+/ZdZP+GcomTBtV7k3Nd/DN+WgQ+gj9LYFfysc9AjtgC7/KflvVo46w/gdHJWiSMgg4uV0zmkmI15nxfivSLOF2kgaTi+RcyTpSzXzZvL5O6nYRWn8jCFQgiaDgoihRnq+6EBFyFEYToVylUTt4sGIjLSnfMV1H46moiVDXfj5Thj7OPlQApQT2K6ZNgF4CDwSkgndWIt6pKre2zGQJg09vZ4Uakkz+ZMAGqnqWiNRNJLnHYNSqXSPAk2SQ+n3P0RhOTx X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?+tfQBSwGtlSwq8BAEVpRwzTwK7vSTWnO86dxtU4BQJ9Gsuddyh9kmqkjoYUz?= =?us-ascii?Q?/sXdGdLoGuGwg5vrhDaP6LLQhD6oepZaG5Kl+OEhPMLIrh8mSSVvgt/yLqoS?= =?us-ascii?Q?I2/QprsFBjmgMLhRv31oh3iLX/No0+Q9sPWuMe1ojdoUi1XfOslaeeDAybKP?= =?us-ascii?Q?/dMvypmoJtRKD7XiLm6FbzekR6mZLy5Kljvk4uEg4054aZPLpjvbud++arue?= =?us-ascii?Q?1QvgGpOmDuMP34AyhzAJj3aHboihgU63Mr5R0VKTeeHiKAUSYwlXU6fz5CUp?= =?us-ascii?Q?LYFvS8YDLeCto17jyEDImN0dWRBXyJx5Hj1qcZIVPL+aS0GHa0aHEWM6K6CR?= =?us-ascii?Q?ZhQBy6scPoeYPD7RV2mLDXK3zbCR2giIDS1FSKIRNXMbumEBGsdWIqcSak4k?= =?us-ascii?Q?Ea9owbvkiHiPrEkkos3EdoIFyHBlxwtoLZv//dVfhbsDp08+D7MctsgBcIVr?= =?us-ascii?Q?UVJ5yQpTIwavT2Gwqlilw+v3jHmUufKWfh87uUiJOTaKsZmg3b7m4b53WQjh?= =?us-ascii?Q?msBM7MpgzCINYXLlmp5i9rBFv1YLoCIWZScxAJK/GA0aHWucFj3Q6iz0khkb?= =?us-ascii?Q?KaUn54hY92wAi6JBJKJx8qfxhv5JXcA4EXeHqGn57xfPQtKF6N9XyQiK7UIu?= =?us-ascii?Q?I3j40ZPb76Z+eL6qKTrGcu/RAWcFgFrZp7sV+rGXIF8r5aFz25XhAvSYw7To?= =?us-ascii?Q?VCBnknBcJNBwfWmlpC1pKNSb8RbVJRQzzfq+NDwPxFfcn01GfpxIORYCSKBW?= =?us-ascii?Q?DEM5zlK0VswSEuHL9uwGbuOy4vFgyNaSW82x5qfOSs8SZ17/gNTziE4WHgL/?= =?us-ascii?Q?gsUPFDMomaoZmID+udxzGej5CRSWIVPN2of9WTUjtj2VwGCGWPV9HRx7BzVU?= =?us-ascii?Q?mxOd/r79Z5aXmKQ8hphGAHC9NZBnKL0YiT0srEZ2GY6zL4V9mqjyVWxfYkls?= =?us-ascii?Q?+kslIUvV80ElwYithEnG8qGEgQEf9tHcbN8z0NThD/J4+hW8/DE9WJt+fP1K?= =?us-ascii?Q?PXmpQQy7qxtp5rt5uA9kJZDkrzkw/vSUvETWaVplX34yweCPcV2XwKivjy3E?= =?us-ascii?Q?Uzy4dRy/4a1ScRZ+2snV/jReE6x37L77fd2SkkCKhtdmmvPheqwoKmn76jrr?= =?us-ascii?Q?cWt6NRQtGaVk0kFVn+Xiro80tWeeJS/1vwzY5Pl7FsI94x94ZvLL/yiF4Z5f?= =?us-ascii?Q?Jq3UMueb/XYlX4F2gLCmHAL32pHuEi1hJZ8NTw=3D=3D?= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-685f7.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: 60fd37d1-342e-49f0-da77-08dbef83af08 X-MS-Exchange-CrossTenant-AuthSource: PH7PR03MB7064.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Nov 2023 20:01:46.5644 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR03MB6442 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_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,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 X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Mon, 27 Nov 2023 12:01:56 -0800 (PST) From: Min Li This change is for the PHC devices that can measure the phase offset between PHC signal and the external signal, such as the 1PPS signal of GNSS. Reporting PTP_CLOCK_EXTOFF to user space will be piggy-backed to the existing ptp_extts_event so that application such as ts2phc can poll the external offset the same way as extts. Hence, ts2phc can use the offset to achieve the alignment between PHC and the external signal by the help of either SW or HW filters. Signed-off-by: Min Li --- drivers/ptp/ptp_clock.c | 12 +++++++++--- include/linux/ptp_clock_kernel.h | 3 +++ include/uapi/linux/ptp_clock.h | 9 +++++++-- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c index 3134568af622..17aacdf37561 100644 --- a/drivers/ptp/ptp_clock.c +++ b/drivers/ptp/ptp_clock.c @@ -48,14 +48,19 @@ static void enqueue_external_timestamp(struct timestamp_event_queue *queue, s64 seconds; u32 remainder; - seconds = div_u64_rem(src->timestamp, 1000000000, &remainder); + if (src->type != PTP_CLOCK_EXTOFF) + seconds = div_u64_rem(src->timestamp, 1000000000, &remainder); spin_lock_irqsave(&queue->lock, flags); dst = &queue->buf[queue->tail]; dst->index = src->index; - dst->t.sec = seconds; - dst->t.nsec = remainder; + if (src->type != PTP_CLOCK_EXTOFF) { + dst->t.sec = seconds; + dst->t.nsec = remainder; + } else { + dst->offset_ns = src->offset; + } if (!queue_free(queue)) queue->head = (queue->head + 1) % PTP_MAX_TIMESTAMPS; @@ -416,6 +421,7 @@ void ptp_clock_event(struct ptp_clock *ptp, struct ptp_clock_event *event) break; case PTP_CLOCK_EXTTS: + case PTP_CLOCK_EXTOFF: /* Enqueue timestamp on selected queues */ spin_lock_irqsave(&ptp->tsevqs_lock, flags); list_for_each_entry(tsevq, &ptp->tsevqs, qlist) { diff --git a/include/linux/ptp_clock_kernel.h b/include/linux/ptp_clock_kernel.h index 1ef4e0f9bd2a..6e4b8206c7d0 100644 --- a/include/linux/ptp_clock_kernel.h +++ b/include/linux/ptp_clock_kernel.h @@ -200,6 +200,7 @@ struct ptp_clock; enum ptp_clock_events { PTP_CLOCK_ALARM, PTP_CLOCK_EXTTS, + PTP_CLOCK_EXTOFF, PTP_CLOCK_PPS, PTP_CLOCK_PPSUSR, }; @@ -210,6 +211,7 @@ enum ptp_clock_events { * @type: One of the ptp_clock_events enumeration values. * @index: Identifies the source of the event. * @timestamp: When the event occurred (%PTP_CLOCK_EXTTS only). + * @offset: When the event occurred (%PTP_CLOCK_EXTOFF only). * @pps_times: When the event occurred (%PTP_CLOCK_PPSUSR only). */ @@ -218,6 +220,7 @@ struct ptp_clock_event { int index; union { u64 timestamp; + s64 offset; struct pps_event_time pps_times; }; }; diff --git a/include/uapi/linux/ptp_clock.h b/include/uapi/linux/ptp_clock.h index da700999cad4..17ecbe755f26 100644 --- a/include/uapi/linux/ptp_clock.h +++ b/include/uapi/linux/ptp_clock.h @@ -32,6 +32,7 @@ #define PTP_RISING_EDGE (1<<1) #define PTP_FALLING_EDGE (1<<2) #define PTP_STRICT_FLAGS (1<<3) +#define PTP_EXT_OFFSET (1<<4) #define PTP_EXTTS_EDGES (PTP_RISING_EDGE | PTP_FALLING_EDGE) /* @@ -40,7 +41,8 @@ #define PTP_EXTTS_VALID_FLAGS (PTP_ENABLE_FEATURE | \ PTP_RISING_EDGE | \ PTP_FALLING_EDGE | \ - PTP_STRICT_FLAGS) + PTP_STRICT_FLAGS | \ + PTP_EXT_OFFSET) /* * flag fields valid for the original PTP_EXTTS_REQUEST ioctl. @@ -228,7 +230,10 @@ struct ptp_pin_desc { #define PTP_MASK_EN_SINGLE _IOW(PTP_CLK_MAGIC, 20, unsigned int) struct ptp_extts_event { - struct ptp_clock_time t; /* Time event occured. */ + union { + struct ptp_clock_time t; /* Time event occured. */ + __s64 offset_ns; /* Offset event occured */ + }; unsigned int index; /* Which channel produced the event. */ unsigned int flags; /* Reserved for future use. */ unsigned int rsv[2]; /* Reserved for future use. */ -- 2.39.2