From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 14BA242C10 for ; Fri, 2 Jun 2023 13:44:37 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0BCB042BDA; Fri, 2 Jun 2023 13:44:37 +0200 (CEST) Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by mails.dpdk.org (Postfix) with ESMTP id 02301406B8; Fri, 2 Jun 2023 13:44:34 +0200 (CEST) Received: from kwepemi500017.china.huawei.com (unknown [172.30.72.55]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4QXgyw3KZKz18M1F; Fri, 2 Jun 2023 19:39:52 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemi500017.china.huawei.com (7.221.188.110) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Fri, 2 Jun 2023 19:44:33 +0800 From: Dongdong Liu To: , , , , CC: , , , , Subject: [PATCH v2 01/11] net/hns3: fix uninitialized RTC time Date: Fri, 2 Jun 2023 19:41:55 +0800 Message-ID: <20230602114205.29589-2-liudongdong3@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20230602114205.29589-1-liudongdong3@huawei.com> References: <20230529130940.1501-1-liudongdong3@huawei.com> <20230602114205.29589-1-liudongdong3@huawei.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To kwepemi500017.china.huawei.com (7.221.188.110) X-CFilter-Loop: Reflected X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org From: Huisong Li Driver doesn't initialize RTC time during probe phase, which lead to an inaccurate time. Fixes: 38b539d96eb6 ("net/hns3: support IEEE 1588 PTP") Cc: stable@dpdk.org Signed-off-by: Huisong Li Signed-off-by: Dongdong Liu --- drivers/net/hns3/hns3_ptp.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/drivers/net/hns3/hns3_ptp.c b/drivers/net/hns3/hns3_ptp.c index db3c007b12..1e27e4aeca 100644 --- a/drivers/net/hns3/hns3_ptp.c +++ b/drivers/net/hns3/hns3_ptp.c @@ -56,9 +56,23 @@ hns3_ptp_int_en(struct hns3_hw *hw, bool en) return ret; } +static void +hns3_ptp_timesync_write_time(struct hns3_hw *hw, const struct timespec *ts) +{ + uint64_t sec = ts->tv_sec; + uint64_t ns = ts->tv_nsec; + + /* Set the timecounters to a new value. */ + hns3_write_dev(hw, HNS3_CFG_TIME_SYNC_H, upper_32_bits(sec)); + hns3_write_dev(hw, HNS3_CFG_TIME_SYNC_M, lower_32_bits(sec)); + hns3_write_dev(hw, HNS3_CFG_TIME_SYNC_L, lower_32_bits(ns)); + hns3_write_dev(hw, HNS3_CFG_TIME_SYNC_RDY, 1); +} + int hns3_ptp_init(struct hns3_hw *hw) { + struct timespec sys_time; int ret; if (!hns3_dev_get_support(hw, PTP)) @@ -71,6 +85,10 @@ hns3_ptp_init(struct hns3_hw *hw) /* Start PTP timer */ hns3_write_dev(hw, HNS3_CFG_TIME_CYC_EN, 1); + /* Initializing the RTC. */ + clock_gettime(CLOCK_REALTIME, &sys_time); + hns3_ptp_timesync_write_time(hw, &sys_time); + return 0; } @@ -241,17 +259,11 @@ int hns3_timesync_write_time(struct rte_eth_dev *dev, const struct timespec *ts) { struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private); - uint64_t sec = ts->tv_sec; - uint64_t ns = ts->tv_nsec; if (!hns3_dev_get_support(hw, PTP)) return -ENOTSUP; - /* Set the timecounters to a new value. */ - hns3_write_dev(hw, HNS3_CFG_TIME_SYNC_H, upper_32_bits(sec)); - hns3_write_dev(hw, HNS3_CFG_TIME_SYNC_M, lower_32_bits(sec)); - hns3_write_dev(hw, HNS3_CFG_TIME_SYNC_L, lower_32_bits(ns)); - hns3_write_dev(hw, HNS3_CFG_TIME_SYNC_RDY, 1); + hns3_ptp_timesync_write_time(hw, ts); return 0; } -- 2.22.0