DPDK patches and discussions
 help / color / mirror / Atom feed
From: "lihuisong (C)" <lihuisong@huawei.com>
To: Ferruh Yigit <ferruh.yigit@amd.com>
Cc: <dev@dpdk.org>, Thomas Monjalon <thomas@monjalon.net>,
	Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Subject: Re: [RFC] ethdev: introduce PTP device capability
Date: Tue, 24 Sep 2024 15:24:20 +0800	[thread overview]
Message-ID: <0f4dd7ef-2dd1-0565-c5f3-520581422eb5@huawei.com> (raw)
In-Reply-To: <c63e94a0-e6ef-4a58-a26f-d8025c2d43b9@amd.com>

Hi Ferruh,


在 2024/9/23 6:23, Ferruh Yigit 写道:
> On 1/30/2024 3:58 AM, Huisong Li wrote:
>> Currently, the PTP feature is a little messy and has some issue.
>> 1> There is different implementation for PTP. This feature of some
>>     hardware depends on the Rx HW timestamp offload, and use this
>>     offload to detect if enable PTP feature. Others can enable PTP
>>     feature with only ethdev ops.
>> 2> For some drivers, enabling PTP feature also depends on the macro
>>     RTE_LIBRTE_IEEE1588. Actually, whether device support, enable
>>     or disable this feature should not be determined at compilation
>>     time. This has been discussed in thread [1].
>> 3> The user haven't a good way to distinguish which port supports
>>     the PTP feature in the case that a couple of device belong to the
>>     same driver. And PTP related API in ethdev layer doesn't do check
>>     for PTP capability. This has been mentioned and discussed in
>>     thread [2].
>>
>> In the thread [1], there is a conclusion that remove the compiling
>> macro RTE_LIBRTE_IEEE1588. And in the thread [2], there is a common
>> opinion that the RTE_ETH_RX_OFFLOAD_TIMESTAMP cannot be used as the
>> PTP capability.
>>
>> For the above issuse, this patch introduces a PTP capability in
>> rte_eth_dev_info.dev_capa to report PTP capability.
>>
>> Welcome to jumping into discussion.
>>
>> [1] https://patchwork.dpdk.org/project/dpdk/patch/20230203132810.14187-1-thomas@monjalon.net/
>> [2] https://inbox.dpdk.org/dev/20230817084226.55327-1-lihuisong@huawei.com/
>>
>> Signed-off-by: Huisong Li <lihuisong@huawei.com>
>> ---
>>   lib/ethdev/rte_ethdev.h | 6 ++++++
>>   1 file changed, 6 insertions(+)
>>
>> diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h
>> index efa4f12b2a..4c8bd691bd 100644
>> --- a/lib/ethdev/rte_ethdev.h
>> +++ b/lib/ethdev/rte_ethdev.h
>> @@ -1613,6 +1613,12 @@ struct rte_eth_conf {
>>   #define RTE_ETH_DEV_CAPA_FLOW_RULE_KEEP         RTE_BIT64(3)
>>   /** Device supports keeping shared flow objects across restart. */
>>   #define RTE_ETH_DEV_CAPA_FLOW_SHARED_OBJECT_KEEP RTE_BIT64(4)
>> +/**
>> + * Device supports PTP feature.
>> + * For some hardware, this feature also need to set the offload
>> + * RTE_ETH_RX_OFFLOAD_TIMESTAMP, please check rte_eth_dev_info.rx_offload_capa.
>> + */
>> +#define RTE_ETH_DEV_CAPA_PTP                     RTE_BIT64(5)
>>   /**@}*/
>>   
>>   /*
> Hi Huisong,
>
> Thanks for the effort, as you mentioned PTP feature can be improved and
> there is a target to remove RTE_LIBRTE_IEEE1588 build time macro.
>
> As far as I remember, one of the main reasons of the RTE_LIBRTE_IEEE1588
> macro is some HW has resource restrictions, when RTE_LIBRTE_IEEE1588 is
> enabled some other features, like vector datapath, are not usable, that
> is why this is a build time selection.
I think the main reason that driver don't support PTP feature in vector 
datapath is for performance.
This can be controled by releated dev_ops API or TIMESTAMP offload and 
no need to use RTE_LIBRTE_IEEE1588 macro, like hns3.
>
> And related to the PTP capability, can you please give some more
> information, what does device having PTP capability exactly means.
Just the device having PTP capability can be used to enable PTP feature.
>
> PTP is protocol and it is implemented in userspace daemon. I guess even
> NIC does not support timestamp offloading, by using time information
> from SW it can still implement PTP, right?

AFAIS, PTP feature implement requires the collaboration of HW and SW, as 
describted by the releated dev_ops API.

> Is PTP offload means, offloading some part of the protocol communication
> withing the device?
Normally, a feature offload means this feature is done in hardware and 
the software doesn't need to something for this.
I reviewed our discussion in [1], we all think it's unreasonable to name 
it "PTP offload".

>
> Btw, the relevant RTE_ETH_RX_OFFLOAD_TIMESTAMP offload is, a little more
> generic HW capability that HW can add timestamp to Rx/Tx packets, which
> can be used for custom diagnostics. HW supporting this offload means
> that HW has some specific clock HW in it.
Yes.
>
> Both having RTE_ETH_RX_OFFLOAD_TIMESTAMP and RTE_ETH_DEV_CAPA_PTP
> capability can be confusing, lets clarify it more.

Let me try to clearify them:
1) RTE_ETH_DEV_CAPA_PTP just means the ethdev support PTP capability because of application no way to know if the device support PTP feature.
2) As you said above, setting RTE_ETH_RX_OFFLOAD_TIMESTAMP offload is not necessary for PTP feature, but also may be for custom diagnostics.
    Some NICs enable PTP feature using only the rte_eth_timesync_xxx API,
    and many NICs also need this offload to fill timestamp in mbuf to cooperate with the implementation of PTP feature.

>
[1] https://inbox.dpdk.org/dev/20230817084226.55327-1-lihuisong@huawei.com/
>
>
> .

  reply	other threads:[~2024-09-24  7:24 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-30  3:58 Huisong Li
2024-09-22 22:23 ` Ferruh Yigit
2024-09-24  7:24   ` lihuisong (C) [this message]
2024-09-25 20:42     ` Ferruh Yigit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0f4dd7ef-2dd1-0565-c5f3-520581422eb5@huawei.com \
    --to=lihuisong@huawei.com \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@amd.com \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).