]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: phy: micrel: improve HW timestamping config logic
authorVadim Fedorenko <vadim.fedorenko@linux.dev>
Tue, 6 Jan 2026 16:07:20 +0000 (16:07 +0000)
committerJakub Kicinski <kuba@kernel.org>
Fri, 9 Jan 2026 02:13:11 +0000 (18:13 -0800)
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>
drivers/net/phy/micrel.c

index 05de68b9f7191f2fb281cc43bd0a60b51b8ebf18..c0aea74a559fab474ce5fb92dba2393dfefd03f2 100644 (file)
@@ -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
         */