summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVadim Fedorenko <vadim.fedorenko@linux.dev>2026-01-06 19:07:20 +0300
committerJakub Kicinski <kuba@kernel.org>2026-01-09 05:13:11 +0300
commit88c7ed2fb0711c413fda29f2f437003e71445812 (patch)
treeeaf74b66126cb0ae904cfe81df90bedffb1b6f90
parenta45ed8db62f8051275112babb271f53a13aec02e (diff)
downloadlinux-88c7ed2fb0711c413fda29f2f437003e71445812.tar.xz
net: phy: micrel: improve HW timestamping config logic
The driver was adjusting stored values independently of what was actually supported and configured. Improve logic to store values once all checks are passing Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Vadim Fedorenko <vadim.fedorenko@linux.dev> Reviewed-by: Kory Maincent <kory.maincent@bootlin.com> Link: https://patch.msgid.link/20260106160723.3925872-2-vadim.fedorenko@linux.dev Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r--drivers/net/phy/micrel.c30
1 files changed, 24 insertions, 6 deletions
diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
index 05de68b9f719..c0aea74a559f 100644
--- a/drivers/net/phy/micrel.c
+++ b/drivers/net/phy/micrel.c
@@ -3157,9 +3157,6 @@ static int lan8814_hwtstamp_set(struct mii_timestamper *mii_ts,
int txcfg = 0, rxcfg = 0;
int pkt_ts_enable;
- ptp_priv->hwts_tx_type = config->tx_type;
- ptp_priv->rx_filter = config->rx_filter;
-
switch (config->rx_filter) {
case HWTSTAMP_FILTER_NONE:
ptp_priv->layer = 0;
@@ -3187,6 +3184,18 @@ static int lan8814_hwtstamp_set(struct mii_timestamper *mii_ts,
return -ERANGE;
}
+ switch (config->tx_type) {
+ case HWTSTAMP_TX_OFF:
+ case HWTSTAMP_TX_ON:
+ case HWTSTAMP_TX_ONESTEP_SYNC:
+ break;
+ default:
+ return -ERANGE;
+ }
+
+ ptp_priv->hwts_tx_type = config->tx_type;
+ ptp_priv->rx_filter = config->rx_filter;
+
if (ptp_priv->layer & PTP_CLASS_L2) {
rxcfg = PTP_RX_PARSE_CONFIG_LAYER2_EN_;
txcfg = PTP_TX_PARSE_CONFIG_LAYER2_EN_;
@@ -5051,9 +5060,6 @@ static int lan8841_hwtstamp_set(struct mii_timestamper *mii_ts,
int txcfg = 0, rxcfg = 0;
int pkt_ts_enable;
- ptp_priv->hwts_tx_type = config->tx_type;
- ptp_priv->rx_filter = config->rx_filter;
-
switch (config->rx_filter) {
case HWTSTAMP_FILTER_NONE:
ptp_priv->layer = 0;
@@ -5081,6 +5087,18 @@ static int lan8841_hwtstamp_set(struct mii_timestamper *mii_ts,
return -ERANGE;
}
+ switch (config->tx_type) {
+ case HWTSTAMP_TX_OFF:
+ case HWTSTAMP_TX_ON:
+ case HWTSTAMP_TX_ONESTEP_SYNC:
+ break;
+ default:
+ return -ERANGE;
+ }
+
+ ptp_priv->hwts_tx_type = config->tx_type;
+ ptp_priv->rx_filter = config->rx_filter;
+
/* Setup parsing of the frames and enable the timestamping for ptp
* frames
*/