From 3df1a1e30649b0485b1aa2d9099dbe2cc69e752e Mon Sep 17 00:00:00 2001 From: chenjiji09 Date: Tue, 31 Jan 2023 17:36:08 +0800 Subject: [PATCH] net/hns3: fix inaccurate RTC time to read The sequence of reading current RTC time register doesn't meet the hardware requirements, which causes this time obtained is the one before modifying RTC time. --- ...hns3-fix-inaccurate-RTC-time-to-read.patch | 53 +++++++++++++++++++ dpdk.spec | 6 ++- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 0215-net-hns3-fix-inaccurate-RTC-time-to-read.patch diff --git a/0215-net-hns3-fix-inaccurate-RTC-time-to-read.patch b/0215-net-hns3-fix-inaccurate-RTC-time-to-read.patch new file mode 100644 index 0000000..59a0c08 --- /dev/null +++ b/0215-net-hns3-fix-inaccurate-RTC-time-to-read.patch @@ -0,0 +1,53 @@ +From 3cd01cd12d4987b76be0ff1b25bc21a558aab6f1 Mon Sep 17 00:00:00 2001 +From: Huisong Li +Date: Mon, 9 Jan 2023 16:23:44 +0800 +Subject: net/hns3: fix inaccurate RTC time to read + +[ upstream commit 4243282181f38d387188af5fd38a5428864a94a2 ] + +The sequence of reading current RTC time register doesn't meet +the hardware requirements, which causes this time obtained is +the one before modifying RTC time. + +Fixes: 38b539d96eb6 ("net/hns3: support IEEE 1588 PTP") +Cc: stable@dpdk.org + +Signed-off-by: Huisong Li +Acked-by: Dongdong Liu +--- + drivers/net/hns3/hns3_ptp.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/drivers/net/hns3/hns3_ptp.c b/drivers/net/hns3/hns3_ptp.c +index 6bbd85ba23..db3c007b12 100644 +--- a/drivers/net/hns3/hns3_ptp.c ++++ b/drivers/net/hns3/hns3_ptp.c +@@ -216,17 +216,21 @@ hns3_timesync_read_tx_timestamp(struct rte_eth_dev *dev, + int + hns3_timesync_read_time(struct rte_eth_dev *dev, struct timespec *ts) + { ++#define HNS3_PTP_SEC_H_OFFSET 32 ++#define HNS3_PTP_SEC_H_MASK 0xFFFF ++ + struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private); ++ uint32_t sec_hi, sec_lo; + uint64_t ns, sec; + + if (!hns3_dev_get_support(hw, PTP)) + return -ENOTSUP; + +- sec = hns3_read_dev(hw, HNS3_CURR_TIME_OUT_L); +- sec |= (uint64_t)(hns3_read_dev(hw, HNS3_CURR_TIME_OUT_H) & 0xFFFF) +- << 32; +- + ns = hns3_read_dev(hw, HNS3_CURR_TIME_OUT_NS); ++ sec_hi = hns3_read_dev(hw, HNS3_CURR_TIME_OUT_H) & HNS3_PTP_SEC_H_MASK; ++ sec_lo = hns3_read_dev(hw, HNS3_CURR_TIME_OUT_L); ++ sec = ((uint64_t)sec_hi << HNS3_PTP_SEC_H_OFFSET) | sec_lo; ++ + ns += sec * NSEC_PER_SEC; + *ts = rte_ns_to_timespec(ns); + +-- +2.23.0 + diff --git a/dpdk.spec b/dpdk.spec index 680edf8..9a81418 100644 --- a/dpdk.spec +++ b/dpdk.spec @@ -1,6 +1,6 @@ Name: dpdk Version: 21.11 -Release: 27 +Release: 28 Packager: packaging@6wind.com URL: http://dpdk.org %global source_version 21.11 @@ -232,6 +232,7 @@ Patch9211: 0211-app-procinfo-dump-module-EEPROM-info.patch Patch9212: 0212-app-procinfo-add-burst-mode-to-Rx-Tx-queue-info.patch Patch9213: 0213-app-procinfo-dump-detailed-info-for-Rx-Tx-descriptor.patch Patch9214: 0214-dma-hisilicon-support-vchan-status-query.patch +Patch9215: 0215-net-hns3-fix-inaccurate-RTC-time-to-read.patch Summary: Data Plane Development Kit core Group: System Environment/Libraries @@ -374,6 +375,9 @@ strip -g $RPM_BUILD_ROOT/lib/modules/%{kern_devel_ver}/extra/dpdk/igb_uio.ko /usr/sbin/depmod %changelog +* Tue Jan 31 2023 chenjiji - 21.11-28 +- net/hns3: fix inaccurate RTC time to read + * Wed Dec 14 2022 chenjiji - 21.11-27 - dma/hisilicon: support vchan status query