From 35a0d98f028f8d1b37fec44dc9b1b5eec5e0a84e Mon Sep 17 00:00:00 2001 From: Huisong Li Date: Fri, 2 Jun 2023 19:41:57 +0800 Subject: net/hns3: uninitialize PTP [ upstream commit edb0f566d8476978fa6c12467fe03c4983a28573 ] 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 | 18 ++++++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c index cecf6929f7..2e3aaf191d 100644 --- a/drivers/net/hns3/hns3_ethdev.c +++ b/drivers/net/hns3/hns3_ethdev.c @@ -4637,6 +4637,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: @@ -4672,6 +4673,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 c04edf622f..9456204422 100644 --- a/drivers/net/hns3/hns3_ethdev.h +++ b/drivers/net/hns3/hns3_ethdev.h @@ -1045,6 +1045,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 1e27e4aeca..0e17a17034 100644 --- a/drivers/net/hns3/hns3_ptp.c +++ b/drivers/net/hns3/hns3_ptp.c @@ -306,3 +306,21 @@ hns3_restore_ptp(struct hns3_adapter *hns) return ret; } + +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.23.0