+++ /dev/null
-From 062d4c9969606ee86885708e02feffd1efbf0599 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 24 Feb 2025 19:12:47 +0800
-Subject: net: enetc: VFs do not support HWTSTAMP_TX_ONESTEP_SYNC
-
-From: Wei Fang <wei.fang@nxp.com>
-
-[ Upstream commit a562d0c4a893eae3ea51d512c4d90ab858a6b7ec ]
-
-Actually ENETC VFs do not support HWTSTAMP_TX_ONESTEP_SYNC because only
-ENETC PF can access PMa_SINGLE_STEP registers. And there will be a crash
-if VFs are used to test one-step timestamp, the crash log as follows.
-
-[ 129.110909] Unable to handle kernel paging request at virtual address 00000000000080c0
-[ 129.287769] Call trace:
-[ 129.290219] enetc_port_mac_wr+0x30/0xec (P)
-[ 129.294504] enetc_start_xmit+0xda4/0xe74
-[ 129.298525] enetc_xmit+0x70/0xec
-[ 129.301848] dev_hard_start_xmit+0x98/0x118
-
-Fixes: 41514737ecaa ("enetc: add get_ts_info interface for ethtool")
-Cc: stable@vger.kernel.org
-Signed-off-by: Wei Fang <wei.fang@nxp.com>
-Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
-Tested-by: Vladimir Oltean <vladimir.oltean@nxp.com>
-Link: https://patch.msgid.link/20250224111251.1061098-5-wei.fang@nxp.com
-Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/net/ethernet/freescale/enetc/enetc.c | 3 +++
- drivers/net/ethernet/freescale/enetc/enetc_ethtool.c | 8 ++++++--
- 2 files changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c
-index 230b317d93dae..fac29772b882b 100644
---- a/drivers/net/ethernet/freescale/enetc/enetc.c
-+++ b/drivers/net/ethernet/freescale/enetc/enetc.c
-@@ -2683,6 +2683,9 @@ static int enetc_hwtstamp_set(struct net_device *ndev, struct ifreq *ifr)
- priv->active_offloads |= ENETC_F_TX_TSTAMP;
- break;
- case HWTSTAMP_TX_ONESTEP_SYNC:
-+ if (!enetc_si_is_pf(priv->si))
-+ return -EOPNOTSUPP;
-+
- priv->active_offloads &= ~ENETC_F_TX_TSTAMP_MASK;
- priv->active_offloads |= ENETC_F_TX_ONESTEP_SYNC_TSTAMP;
- break;
-diff --git a/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c b/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c
-index c8369e3752b0e..7eb0a3d29f6e1 100644
---- a/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c
-+++ b/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c
-@@ -770,6 +770,7 @@ static int enetc_set_coalesce(struct net_device *ndev,
- static int enetc_get_ts_info(struct net_device *ndev,
- struct ethtool_ts_info *info)
- {
-+ struct enetc_ndev_priv *priv = netdev_priv(ndev);
- int *phc_idx;
-
- phc_idx = symbol_get(enetc_phc_index);
-@@ -789,8 +790,11 @@ static int enetc_get_ts_info(struct net_device *ndev,
- SOF_TIMESTAMPING_SOFTWARE;
-
- info->tx_types = (1 << HWTSTAMP_TX_OFF) |
-- (1 << HWTSTAMP_TX_ON) |
-- (1 << HWTSTAMP_TX_ONESTEP_SYNC);
-+ (1 << HWTSTAMP_TX_ON);
-+
-+ if (enetc_si_is_pf(priv->si))
-+ info->tx_types |= (1 << HWTSTAMP_TX_ONESTEP_SYNC);
-+
- info->rx_filters = (1 << HWTSTAMP_FILTER_NONE) |
- (1 << HWTSTAMP_FILTER_ALL);
- #else
---
-2.39.5
-