83 lines
2.6 KiB
Diff
83 lines
2.6 KiB
Diff
|
|
From 35a0d98f028f8d1b37fec44dc9b1b5eec5e0a84e Mon Sep 17 00:00:00 2001
|
||
|
|
From: Huisong Li <lihuisong@huawei.com>
|
||
|
|
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 <lihuisong@huawei.com>
|
||
|
|
Signed-off-by: Dongdong Liu <liudongdong3@huawei.com>
|
||
|
|
---
|
||
|
|
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
|
||
|
|
|