From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 67805425D7; Mon, 18 Sep 2023 16:51:09 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 22EA84025D; Mon, 18 Sep 2023 16:51:09 +0200 (CEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2055.outbound.protection.outlook.com [40.107.243.55]) by mails.dpdk.org (Postfix) with ESMTP id 8D9864025C for ; Mon, 18 Sep 2023 16:51:07 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Zfhutbqo1jKosDPMXMTXi10RbgoNjP9rue3FnEBNp83AJ/VYASLuJgz4YEUYFYM1/yai1CDmK+eBOkWA+CBctbg1fwZJDpJlP3UKtt9Ct08Bqefgg+/DUwIEFMZ6oQJ7gMkBllIVvMZocT4tfpaH/EWxmcfxMAc/arhh1Ouqqlyyu8cZ461I2Mvt5xi8ZFXLQj5wPfkmX4836GWngm2IlQ9w/b0X7HNL6Zznr4d1vxvNkERgmro5tg+TbuKPql/cCmn5XcmP3hCLTfDpuVXw0T6mLjR/bulABU0hrsqBtrwRTrk2IG6cSm127UGYVkiVLnehpxWJ7CD/J3FuEnBitw== 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=yrBiZrWh2sYFy0uKfkMVMSnmKCc2hGw2KmAhYpLjexQ=; b=fS7Hb2W0ReE49joWxwTXtPqsFxVqUUQyDjMIA5ggL+PGmPnali3tCOnXYSeeOOHMyyz9WqAbLz70JPhW0Z3y25vAUEQWrSgO5SZjZCbgv21ETqxtvBSDOkkS7Q6A55BMEBhBUOh3fuibRtgj/1eU1Z31T2V1YwQHlOuv0ubWu3K1YpDpJ6Jeai7347JYEoqmXWJgcqFliNA0uCCc+PhQonNU174lBbqQ2Yv/RuJmbsIG7CC0ntAB935APDHNeyYgHDHmfBq2aYRyO76nzIuQU1iB0yfzQ/SFgVJz2ax5Gd9fzEkxRyoz9XzLqoBWD4D0M8CGocgDk92XX3gOApSXdw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yrBiZrWh2sYFy0uKfkMVMSnmKCc2hGw2KmAhYpLjexQ=; b=z2s9v58czBjQYUzD/JrfKts1kDKTU8KjoHiwbhGlU3hN1FcKruNjYlu06sPRnw5crglfa9B+/yTmNdAE8+1oqxN8geGF3o+xPOJiyvlNFLfeLMIBCGFvpkUnJiL5lwSFYVWKOQ2ARy/Ae4GCQ4KZhObVrJQgEJcGsCAhOm13lcw= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) by CY8PR12MB7171.namprd12.prod.outlook.com (2603:10b6:930:5c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.26; Mon, 18 Sep 2023 14:51:05 +0000 Received: from CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::102f:c69b:d3e5:7fe8]) by CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::102f:c69b:d3e5:7fe8%4]) with mapi id 15.20.6792.026; Mon, 18 Sep 2023 14:51:05 +0000 Message-ID: Date: Mon, 18 Sep 2023 15:50:57 +0100 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 1/3] ethdev: add frequency adjustment API Content-Language: en-US To: Simei Su , thomas@monjalon.net, andrew.rybchenko@oktetlabs.ru, kirill.rybalchenko@intel.com, qi.z.zhang@intel.com Cc: dev@dpdk.org, wenjun1.wu@intel.com References: <20230809050700.271534-1-simei.su@intel.com> <20230809050700.271534-2-simei.su@intel.com> From: Ferruh Yigit Autocrypt: addr=ferruh.yigit@amd.com; keydata= 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 3FQ= In-Reply-To: <20230809050700.271534-2-simei.su@intel.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO6P123CA0015.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:338::20) To CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB4294:EE_|CY8PR12MB7171:EE_ X-MS-Office365-Filtering-Correlation-Id: 9ab955ab-273a-480a-fc46-08dbb856af3c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Tg+Gkm5jNq+Q/2xVXr2Y4uj4sJyRwehMhUE3RFUoLBZMAVk4y/AsRzcJxqp61oO7Z7JubrNbNHpQgk0dhuYT2WVJgCOIWkr+bJjGk8kf7rRoRK1WBblyLD/YRoQX5KNzgbS3tf4j5uIu0JWEb/DYWhKgXdzVsJil8zKVPwkuT1RS/SiYNJy8OfLLTDci9DQ8wGgJu3u2r8Ks2MCXHI3PxQGFdA3SZ0gp330iDxlkWYnIUvNZUPtC/FN6psmypeWJ/htk1m6NyV+EyPdYiulV/VxhNUxDQCD5tuc/q8EUSCVJOhWvXIJt/AzQRNAIn+7Y4Pw4VWWyNp2afoLyt2RVzqW5cyJK6Z1yzlvHnAsUlS8LgAulKUfMmrMApm/RNuBSxYrJFL9tk2os+lV3VL2sDze3QOsWC6a2EuOi8X3a8vkUXcafWBuqqw9pH6G96YDoJ1bJG01uoWLuZ5MA5pTarTd7gyQqRrXUUSi6g+7lSkLThD0/D2HvvCtYEGgsRkhdeAPkgFGRIjS4U6Eub6zZY6JreRXGdRlr6Uc6BGimwsILUHzMMIHY4n0n1JaYNhRuIX8kWDdVQzEvoFR6C3FmsXpaDUTE/qKHBA0tJAleRu4FyP52G48u02epq6lrXV0EiQlpxmoWkqkzO9hqtmgT2w== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR12MB4294.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(39860400002)(396003)(346002)(376002)(136003)(366004)(451199024)(1800799009)(186009)(66946007)(53546011)(966005)(6506007)(6486002)(66556008)(66476007)(44832011)(6512007)(316002)(41300700001)(31686004)(478600001)(6666004)(4326008)(8936002)(8676002)(26005)(5660300002)(36756003)(38100700002)(83380400001)(2906002)(2616005)(31696002)(86362001)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?R3l0UXArZDB1bndWc2xtZVlIa1FOM05qaS95dHNlcXdWL21wQXVLbURqc2kz?= =?utf-8?B?aHRMYUtvVmdVOEhYQVNLK25xQUkwMjRobHc5UDZZVGcvM29SRHMvWE9wZDJ5?= =?utf-8?B?RU5laXdBbjBCelQ5S09qbEFNYlViM2RITUxSeDBBUXhZWUZRSzdiend5V3Uy?= =?utf-8?B?NEtUbW94eVU5YjdGZDQ0QmRzV3J3ckpBUVBYS1oyc1o1a0FvN1RLa1NlTnJG?= =?utf-8?B?c0ZlenhZTE4yd1ZoK3QyOS9WeDAzVWRsVWtIS0xCWWN5S2lXcGZIR2VqUzNH?= =?utf-8?B?UHVLSXZXRTdoWEM0ZWhBY04zUVhHUmsxVDdIZjR6ZTBJaDBZWktUY011VDZ0?= =?utf-8?B?WUVCM1lkQjRBZXFyNjJQTWdBRDJ0Y3RObCt6Vkp4SHR3cUxaeGg2ejArSkg2?= =?utf-8?B?VFo1RGQxQWd6OHhLQlNYZ3RpRjJCc0EvazdPQVBmVXpjV01ETDRXeGhqNnp3?= =?utf-8?B?VzRlM0oxVjdNZ1oycGk3YlBhSUlNYUdSY2xzb2paNjZvTktqWGxZank3S1dI?= =?utf-8?B?dU9uN0kzWEtZVWN6UEwrNnF6U0gveFdWN05yUE5NVGdZbUxXeGVzdlJWSlR6?= =?utf-8?B?VEF5TG9XVU4vMlBaK3BaMzRRWUl4R1lPS2JSWHljSk94ZmtQSXIvMTRUNTdS?= =?utf-8?B?MzhTK1U2UUdjTmRQTlFGVVhSRDNwdTJ2d1N4dE1FWkxlRGxYM2owczZIMDNs?= =?utf-8?B?ZVJZRkRNbTZ1MFQvdFlzZjA4dWM1RXNtVnpib0RFMUtJRmNJS1Fab1VNSjBo?= =?utf-8?B?cUk2ZDdVQVIzVDFtbDdjWWI0YkoyamZqZmJEQ1E2cVN2T1BKbnlOQjJjT09P?= =?utf-8?B?bEJUTCtTRUhwMXc0UGViMVJ4R0VRU2lrWG1RYnl4VGgyQVBTNGJVZk9FbE5J?= =?utf-8?B?MXY5cmFVSDRpYU9pMmkzZ2ZCREd3cFdUSnVOeHZwMDAySjFxNHRtVitMVExh?= =?utf-8?B?N0VoTzZMajlnUXhmN1J0ZVNFZEtLaEFrcVB4S0hkbWxBZWQyS3BKeFVJaFM0?= =?utf-8?B?L0tXQ2JyKzdZci9ZZGlkTThIWnk0UC9LUVdmUVQwMElHMkY1MEdobXA3cUVL?= =?utf-8?B?cjZEZ2h5Q0tLeGIzMWw2Rkx3OFNOaDRpMTEzeHVvOTVWZDlFMnlHcVY4WWFM?= =?utf-8?B?dUJyNE9tcHhKRW1lTkFrTkZLZER3dU1OQVpMeU8yVkNoRVRXM1dadFhzSnlk?= =?utf-8?B?cnVjMkNpRUhDVEJ5M2F4eklkSEZSUSs2alYwVDhTaVVGNEtPVllWYVAwSkZK?= =?utf-8?B?bWFsME5uR0NKamc0MWgwTEpORVVHUUVUSXh2QzRjV2JBS0NUMjRTRHFxdlBo?= =?utf-8?B?U2hHR1drekJCeEp2ZzdMUnFTSWVzaGxleWRHLzE4VXNFZlZQbDJNdHFRY3VQ?= =?utf-8?B?bFBCRWVmejZNOGVzbW1PUkQzS1R2YmRZVGZ5eFhqSXpRVEh1bW5rNW5NeGoy?= =?utf-8?B?MlN4eFpqZmlyQmdUVEFhZVRVOTNxRUZqVTZnQWI3L0czTElpd3JWcXRtRXBi?= =?utf-8?B?clJJbkVmaW13c2tiWDMrUjhEU1FyNmRVOStQTXgzcXFhWTdkZ3FkYmZLMzc2?= =?utf-8?B?OG54bTVoNXNMaXQ4WE1jQjJMY2ExM1gvSGFhQ25iNVJYcloyYlhNUUx4TWs1?= =?utf-8?B?L2Q0K3UwZTlOdmpCRWVOSjRIRVA3a3dqOXg0VUNFV0VwbVUvNFcvWWkxREsv?= =?utf-8?B?RzV5SkdId3lFanRuNXdBaWgzZUUwdUk1bklBb2gwa1B2bjF5MlZyMVRlaTJ3?= =?utf-8?B?U2p5VFRGL0krSXNOUUxIUnRSNjVqc0xJSGpNUitMdDJvQWdHT1Q1OHRQcEJU?= =?utf-8?B?eHZFd0Vrd25NRWNQUjBUQTlXUVcwVHpzdHU4bno0R1VUSjJ1NXUwUmllUmpq?= =?utf-8?B?Rld4SmFlcjBsRXRLYWcya1JYV0tQeWsxN1A2aHNJclp5KzBXUG9OSjA2OFlQ?= =?utf-8?B?bEdsRlNxak05eHoxN3VVczk2amFnS1pFQ0l5eXNpUjhjZVZNOElQUlUvWVVr?= =?utf-8?B?RHZadGpGcTFLZU02c3NxUm5aYnRBLzBPa0d0TWROMmxsL1RZV2NIekM5Qjg3?= =?utf-8?B?aU1ZOTJZMlNyK0Z2ak9keHliZFMzNEtxSVJuOUlWaEM0QXhnZnlSRWJWeFJ5?= =?utf-8?Q?YikOwGoBf/GANh9dTjyfaIg6w?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9ab955ab-273a-480a-fc46-08dbb856af3c X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB4294.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Sep 2023 14:51:05.1968 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Ohp9iv3E/nnjlQbTF+W0wln04bpUC2f9J1dgN9qpPYLZL2gEM7spC1oUjwnBrDzI X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7171 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On 8/9/2023 6:06 AM, Simei Su wrote: > This patch introduces a new timesync API "rte_eth_timesync_adjust_fine" > which enables finer adjustment of the PHC clock. During PTP timesync, > "rte_eth_timesync_adjust_time" focuses on phase adjustment while > "rte_eth_timesync_adjust_fine" focuses on frequency adjustment. > Hi Simei, The patch adds new API and new dev_ops, mechanics of it mostly looks good, there is minor comment below. But there is not much comment on it because concept may be not well known as it is not much known to me. Can you please try to add more details and documentations to help users and driver developers? I have some understanding based on your comments, can you please check if it is correct: In PTP protocol master and client synchronize clocks periodically, and adjust the delta with 'rte_eth_timesync_adjust_time()' API, which simply use this delta as offset in its time function. But new API added by this patch, 'rte_eth_timesync_adjust_fine()', adds a new synchronization method by saying device to change its HW timer frequency. The name of the API says this is a finer adjustment method, I wonder why? I don't know much about timer HW but my understanding is they are pretty accurate, why changing frequency gives a finer adjustment? Is it common that difference frequency of HW timers cause drift by time? Btw, what is PHC clock? Is it "Pulse Hollow Cathode" (as chatGPT suggests :), is there any significance of this type of clock? Is this API valid only for this type of clock? And for users, assuming the HW supports both methods, how should they decide which one to use? Can we provide some guidance to them? I can see API suggest to use 'rte_eth_timesync_adjust_fine()' when time diff offset is less than a threshold but what is the threshold and what happens if user only uses 'rte_eth_timesync_adjust_time()'? Is there a more real life numbers to provide as samples, maybe can provide them in the commit log as sample if we can't provide them in API documentation? > This new function gets the scaled_ppm (desired frequency offset from > nominal frequency in parts per million, but with a 16 bit binary > fractional field). > What is "scaled parts per million"? I think I understand what parameter does, but not sure about what is the unit here? Also PTP client sample mentions about algorithms to use for frequency adjustment, like PI servo algorithm next patch uses, what are these algorithms? Should we mention from algorithms or specifically from "PI servo algorithm" in the API documentation? > Signed-off-by: Simei Su > Signed-off-by: Wenjun Wu > --- > lib/ethdev/ethdev_driver.h | 5 +++++ > lib/ethdev/ethdev_trace.h | 9 +++++++++ > lib/ethdev/ethdev_trace_points.c | 3 +++ > lib/ethdev/rte_ethdev.c | 19 +++++++++++++++++++ > lib/ethdev/rte_ethdev.h | 38 ++++++++++++++++++++++++++++++++++++++ 'version.map' also should be updated to export the API, so that DPDK applications linked with shared DPDK library can use it. CI already complaining about this: https://mails.dpdk.org/archives/test-report/2023-August/435936.html > 5 files changed, 74 insertions(+) > > diff --git a/lib/ethdev/ethdev_driver.h b/lib/ethdev/ethdev_driver.h > index 980f837..4c39c3d 100644 > --- a/lib/ethdev/ethdev_driver.h > +++ b/lib/ethdev/ethdev_driver.h > @@ -636,6 +636,9 @@ typedef int (*eth_timesync_read_tx_timestamp_t)(struct rte_eth_dev *dev, > /** @internal Function used to adjust the device clock. */ > typedef int (*eth_timesync_adjust_time)(struct rte_eth_dev *dev, int64_t); > > +/** @internal Function used to adjust the clock increment rate. */ > +typedef int (*eth_timesync_adjust_fine)(struct rte_eth_dev *dev, int64_t); > + > /** @internal Function used to get time from the device clock. */ > typedef int (*eth_timesync_read_time)(struct rte_eth_dev *dev, > struct timespec *timestamp); > @@ -1347,6 +1350,8 @@ struct eth_dev_ops { > eth_timesync_read_tx_timestamp_t timesync_read_tx_timestamp; > /** Adjust the device clock */ > eth_timesync_adjust_time timesync_adjust_time; > + /** Adjust the clock increment rate */ > + eth_timesync_adjust_fine timesync_adjust_fine; > /** Get the device clock time */ > eth_timesync_read_time timesync_read_time; > /** Set the device clock time */ > diff --git a/lib/ethdev/ethdev_trace.h b/lib/ethdev/ethdev_trace.h > index 423e712..d613eb2 100644 > --- a/lib/ethdev/ethdev_trace.h > +++ b/lib/ethdev/ethdev_trace.h > @@ -2175,6 +2175,15 @@ RTE_TRACE_POINT_FP( > rte_trace_point_emit_int(ret); > ) > > +/* Called in loop in examples/ptpclient */ > +RTE_TRACE_POINT_FP( > + rte_eth_trace_timesync_adjust_fine, > + RTE_TRACE_POINT_ARGS(uint16_t port_id, int64_t scaled_ppm, int ret), > + rte_trace_point_emit_u16(port_id); > + rte_trace_point_emit_i64(scaled_ppm); > + rte_trace_point_emit_int(ret); > +) > + > /* Called in loop in app/test-flow-perf */ > RTE_TRACE_POINT_FP( > rte_flow_trace_create, > diff --git a/lib/ethdev/ethdev_trace_points.c b/lib/ethdev/ethdev_trace_points.c > index 91f71d8..eb539bb 100644 > --- a/lib/ethdev/ethdev_trace_points.c > +++ b/lib/ethdev/ethdev_trace_points.c > @@ -406,6 +406,9 @@ RTE_TRACE_POINT_REGISTER(rte_eth_trace_timesync_read_tx_timestamp, > RTE_TRACE_POINT_REGISTER(rte_eth_trace_timesync_adjust_time, > lib.ethdev.timesync_adjust_time) > > +RTE_TRACE_POINT_REGISTER(rte_eth_trace_timesync_adjust_fine, > + lib.ethdev.timesync_adjust_fine) > + > RTE_TRACE_POINT_REGISTER(rte_eth_trace_timesync_read_time, > lib.ethdev.timesync_read_time) > > diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c > index 0840d2b..7b75214 100644 > --- a/lib/ethdev/rte_ethdev.c > +++ b/lib/ethdev/rte_ethdev.c > @@ -6109,6 +6109,25 @@ rte_eth_timesync_adjust_time(uint16_t port_id, int64_t delta) > } > > int > +rte_eth_timesync_adjust_fine(uint16_t port_id, int64_t scaled_ppm) > +{ > + struct rte_eth_dev *dev; > + int ret; > + > + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); > + dev = &rte_eth_devices[port_id]; > + > + if (*dev->dev_ops->timesync_adjust_fine == NULL) > + return -ENOTSUP; > + ret = eth_err(port_id, (*dev->dev_ops->timesync_adjust_fine)(dev, > + scaled_ppm)); > + > + rte_eth_trace_timesync_adjust_fine(port_id, scaled_ppm, ret); > + > + return ret; > +} > + > +int > rte_eth_timesync_read_time(uint16_t port_id, struct timespec *timestamp) > { > struct rte_eth_dev *dev; > diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h > index 3d44979..78fc07c 100644 > --- a/lib/ethdev/rte_ethdev.h > +++ b/lib/ethdev/rte_ethdev.h > @@ -5145,6 +5145,44 @@ int rte_eth_timesync_read_tx_timestamp(uint16_t port_id, > int rte_eth_timesync_adjust_time(uint16_t port_id, int64_t delta); > > /** > + * Adjust the frequency of the PHC cycle counter by the indicated amount > + * from the base frequency. > + * > + * This function is used to do hardware timestamp adjustment in fine > + * granularity. It can be used in conjunction with rte_eth_timesync_adjust_time > + * to do more precise time control. > + * > + * E.g, below is a simple usage: > + * if master offset > master offset threshold > + * do rte_eth_timesync_adjust_time; > + * else > + * do rte_eth_timesync_adjust_fine; > + * > + * The user can apply a control algorithm to leverage these two APIs, one > + * example is in dpdk-ptpclient. > + * > + * This API is implemented with the below basic logic: > + * - Determine a base frequency value > + * - Multiply this by the abs() of the requested adjustment, then divide by > + * the appropriate divisor (65536 billion). > + * - Add or subtract this difference from the base frequency to calculate a > + * new adjustment. > + * > + * @param port_id > + * The port identifier of the Ethernet device. > + * @param scaled_ppm > + * Desired frequency change in scaled parts per million. Scaled parts per > + * million is ppm with a 16-bit binary fractional field. > + * > + * @return > + * - 0: Success. > + * - -ENODEV: The port ID is invalid. > + * - -EIO: if device is removed. > + * - -ENOTSUP: The function is not supported by the Ethernet driver. > + */ > +int rte_eth_timesync_adjust_fine(uint16_t port_id, int64_t scaled_ppm); > + > +/** > * Read the time from the timesync clock on an Ethernet device. > * > * This is usually used in conjunction with other Ethdev timesync functions to