Re: [dpdk-dev] [PATCH 2/2] net/hns3: support IEEE 1588 PTP
From: Ferruh Yigit <hidden>
Date: 2021-03-30 13:59:32
On 3/26/2021 8:56 AM, Min Hu (Connor) wrote:
quoted hunk ↗ jump to hunk
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.ini b/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 = Y FW 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?