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 9975F42BD3 for ; Mon, 29 May 2023 15:12:13 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 942844111C; Mon, 29 May 2023 15:12:13 +0200 (CEST) Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by mails.dpdk.org (Postfix) with ESMTP id 7620D410D7; Mon, 29 May 2023 15:12:08 +0200 (CEST) Received: from kwepemi500017.china.huawei.com (unknown [172.30.72.56]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4QVGC3189GzTkvd; Mon, 29 May 2023 21:11:59 +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; Mon, 29 May 2023 21:12:06 +0800 From: Dongdong Liu To: , , , , CC: , , , , Subject: [PATCH 03/11] net/hns3: add the uninitialization process of PTP Date: Mon, 29 May 2023 21:09:32 +0800 Message-ID: <20230529130940.1501-4-liudongdong3@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20230529130940.1501-1-liudongdong3@huawei.com> References: <20230529130940.1501-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: dggems701-chm.china.huawei.com (10.3.19.178) 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 This patch adds the uninitialization process of PTP in case of having an impact on PF driver in kernel. 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_ethdev.c | 2 + drivers/net/hns3/hns3_ethdev.h | 1 + drivers/net/hns3/hns3_ptp.c | 68 +++++++++++++++++++++------------- 3 files changed, 46 insertions(+), 25 deletions(-) diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c index 39bbee1d7b..b62058a0a9 100644 --- a/drivers/net/hns3/hns3_ethdev.c +++ b/drivers/net/hns3/hns3_ethdev.c @@ -4633,6 +4633,7 @@ hns3_init_pf(struct rte_eth_dev *eth_dev) hns3_fdir_filter_uninit(hns); err_fdir: hns3_uninit_umv_space(hw); + hns3_ptp_uninit(hw); err_init_hw: hns3_stats_uninit(hw); err_get_config: @@ -4668,6 +4669,7 @@ hns3_uninit_pf(struct rte_eth_dev *eth_dev) hns3_flow_uninit(eth_dev); hns3_fdir_filter_uninit(hns); hns3_uninit_umv_space(hw); + hns3_ptp_uninit(hw); hns3_stats_uninit(hw); hns3_config_mac_tnl_int(hw, false); hns3_pf_disable_irq0(hw); diff --git a/drivers/net/hns3/hns3_ethdev.h b/drivers/net/hns3/hns3_ethdev.h index 88146f5054..a03dc9fa89 100644 --- a/drivers/net/hns3/hns3_ethdev.h +++ b/drivers/net/hns3/hns3_ethdev.h @@ -1043,6 +1043,7 @@ int hns3_restore_ptp(struct hns3_adapter *hns); int hns3_mbuf_dyn_rx_timestamp_register(struct rte_eth_dev *dev, struct rte_eth_conf *conf); int hns3_ptp_init(struct hns3_hw *hw); +void hns3_ptp_uninit(struct hns3_hw *hw); int hns3_timesync_enable(struct rte_eth_dev *dev); int hns3_timesync_disable(struct rte_eth_dev *dev); int hns3_timesync_read_rx_timestamp(struct rte_eth_dev *dev, diff --git a/drivers/net/hns3/hns3_ptp.c b/drivers/net/hns3/hns3_ptp.c index fb834bb180..44cba29854 100644 --- a/drivers/net/hns3/hns3_ptp.c +++ b/drivers/net/hns3/hns3_ptp.c @@ -56,31 +56,6 @@ hns3_ptp_int_en(struct hns3_hw *hw, bool en) return ret; } -int -hns3_ptp_init(struct hns3_hw *hw) -{ - struct timespec sys_time; - struct rte_eth_dev *dev; - int ret; - - if (!hns3_dev_get_support(hw, PTP)) - return 0; - - ret = hns3_ptp_int_en(hw, true); - if (ret) - return ret; - - /* Start PTP timer */ - hns3_write_dev(hw, HNS3_CFG_TIME_CYC_EN, 1); - - /* Initializing the RTC. */ - dev = &rte_eth_devices[hw->data->port_id]; - clock_gettime(CLOCK_REALTIME, &sys_time); - (void)hns3_timesync_write_time(dev, &sys_time); - - return 0; -} - static int hns3_timesync_configure(struct hns3_adapter *hns, bool en) { @@ -301,3 +276,46 @@ hns3_restore_ptp(struct hns3_adapter *hns) return ret; } + +int +hns3_ptp_init(struct hns3_hw *hw) +{ + struct timespec sys_time; + struct rte_eth_dev *dev; + int ret; + + if (!hns3_dev_get_support(hw, PTP)) + return 0; + + ret = hns3_ptp_int_en(hw, true); + if (ret != 0) + return ret; + + /* Start PTP timer */ + hns3_write_dev(hw, HNS3_CFG_TIME_CYC_EN, 1); + + /* Initializing the RTC. */ + dev = &rte_eth_devices[hw->data->port_id]; + clock_gettime(CLOCK_REALTIME, &sys_time); + (void)hns3_timesync_write_time(dev, &sys_time); + + return 0; +} + +void +hns3_ptp_uninit(struct hns3_hw *hw) +{ + struct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw); + int ret; + + if (!hns3_dev_get_support(hw, PTP)) + return; + + ret = hns3_ptp_int_en(hw, false); + if (ret != 0) + hns3_err(hw, "disable PTP interrupt failed, ret = %d.", ret); + + ret = hns3_timesync_configure(hns, false); + if (ret != 0) + hns3_err(hw, "disable timesync failed, ret = %d.", ret); +} -- 2.22.0