!288 net/hns3: fix inaccurate RTC time to read

From: @chenjiji09 
Reviewed-by: @li-huisong 
Signed-off-by: @li-huisong
This commit is contained in:
openeuler-ci-bot 2023-02-01 06:27:08 +00:00 committed by Gitee
commit 99a58da140
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 58 additions and 1 deletions

View File

@ -0,0 +1,53 @@
From 3cd01cd12d4987b76be0ff1b25bc21a558aab6f1 Mon Sep 17 00:00:00 2001
From: Huisong Li <lihuisong@huawei.com>
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 <lihuisong@huawei.com>
Acked-by: Dongdong Liu <liudongdong3@huawei.com>
---
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

View File

@ -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 <chenjiji09@163.com> - 21.11-28
- net/hns3: fix inaccurate RTC time to read
* Wed Dec 14 2022 chenjiji <chenjiji09@163.com> - 21.11-27
- dma/hisilicon: support vchan status query