Re: [dpdk-dev] [PATCH 2/2] net/hns3: support IEEE 1588 PTP
From: Min Hu (Connor) <hidden>
Date: 2021-03-31 02:35:35
在 2021/3/30 21:59, Ferruh Yigit 写道:
On 3/26/2021 8:56 AM, Min Hu (Connor) wrote:quoted
Add hns3 support for new ethdev APIs to enable and read IEEE1588/ 802.1AS PTP timestamps. Signed-off-by: Min Hu (Connor) <redacted> --- doc/guides/nics/features/hns3.ini | 2 + doc/guides/nics/hns3.rst | 1 + drivers/net/hns3/hns3_cmd.h | 33 +++++ drivers/net/hns3/hns3_ethdev.c | 59 +++++++- drivers/net/hns3/hns3_ethdev.h | 25 ++++ drivers/net/hns3/hns3_ptp.c | 294 ++++++++++++++++++++++++++++++++++++++ drivers/net/hns3/hns3_regs.h | 25 ++++ drivers/net/hns3/hns3_rxtx.c | 56 +++++++- drivers/net/hns3/hns3_rxtx.h | 12 ++ drivers/net/hns3/hns3_rxtx_vec.c | 19 ++- drivers/net/hns3/meson.build | 3 +- 11 files changed, 516 insertions(+), 13 deletions(-) create mode 100644 drivers/net/hns3/hns3_ptp.cdiff --git a/doc/guides/nics/features/hns3.inib/doc/guides/nics/features/hns3.ini index 3988be4..502bfe7 100644--- a/doc/guides/nics/features/hns3.ini +++ b/doc/guides/nics/features/hns3.ini@@ -43,6 +43,8 @@ Stats per queue = YFW version = Y Registers dump = Y Module EEPROM dump = Y +Timesync = Y +Timestamp offload = Y Multiprocess aware = Y Linux = Y ARMv8 = Ydiff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst index ccd2f6f..3366562 100644 --- a/doc/guides/nics/hns3.rst +++ b/doc/guides/nics/hns3.rst@@ -37,6 +37,7 @@ Features of the HNS3 PMD are:- MTU update - NUMA support - Generic flow API +- IEEE1588/802.1AS timestamping Prerequisites -------------diff --git a/drivers/net/hns3/hns3_cmd.h b/drivers/net/hns3/hns3_cmd.h index e704d0c..abc853b 100644 --- a/drivers/net/hns3/hns3_cmd.h +++ b/drivers/net/hns3/hns3_cmd.h@@ -123,6 +123,12 @@ enum hns3_opcode_type {HNS3_OPC_CLEAR_MAC_TNL_INT = 0x0312, HNS3_OPC_CONFIG_FEC_MODE = 0x031A, +#ifdef RTE_LIBRTE_IEEE1588 + /* PTP command */ + HNS3_OPC_PTP_INT_EN = 0x0501, + HNS3_OPC_CFG_PTP_MODE = 0x0507, +#endif +Hi Connor, Does it needs to be a compile time configuration? What happens if it is always enabled, or controlled by device argument? .
Hi Ferruh, Firstly the "RTE_LIBRTE_IEEE1588" origins from the config file in DPDK. Almost every nic driver use this macro in compile time. For me, I think using this macro give one option for users to decide if his APPs contains this module. For example, in loT field, some microprocessor has small memory or small disk, So the APPs should be as small as possible. So, if user does not need "PTP", the APPs no need to contain it. Well, another top, if is always enabled, for HNS3 PMD, it will work well for our nic. If user want to use "PTP", just call API. If user does not use it, it also doesn't matter. But we advise that if user don't need this function, just turn it off. Thanks.