]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: dpaa_eth: convert to ndo_hwtstamp_set()
authorVladimir Oltean <vladimir.oltean@nxp.com>
Thu, 8 May 2025 12:47:51 +0000 (15:47 +0300)
committerJakub Kicinski <kuba@kernel.org>
Fri, 9 May 2025 23:40:22 +0000 (16:40 -0700)
New timestamping API was introduced in commit 66f7223039c0 ("net: add
NDOs for configuring hardware timestamping") from kernel v6.6. It is
time to convert the DPAA1 driver to the new API, so that the
ndo_eth_ioctl() path can be removed completely.

This driver only responds to SIOCSHWTSTAMP (not SIOCGHWTSTAMP) so
convert just that.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Acked-by: Madalin Bucur <madalin.bucur@oss.nxp.com>
Link: https://patch.msgid.link/20250508124753.1492742-2-vladimir.oltean@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/freescale/dpaa/dpaa_eth.c

index 4948b4906584e099515b1e1fc46428f6f0a56d1b..d5458a5fb9714faf809e5dfa7ed090ea7b59a76e 100644 (file)
@@ -3089,15 +3089,13 @@ static int dpaa_xdp_xmit(struct net_device *net_dev, int n,
        return nxmit;
 }
 
-static int dpaa_ts_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
+static int dpaa_hwtstamp_set(struct net_device *dev,
+                            struct kernel_hwtstamp_config *config,
+                            struct netlink_ext_ack *extack)
 {
        struct dpaa_priv *priv = netdev_priv(dev);
-       struct hwtstamp_config config;
 
-       if (copy_from_user(&config, rq->ifr_data, sizeof(config)))
-               return -EFAULT;
-
-       switch (config.tx_type) {
+       switch (config->tx_type) {
        case HWTSTAMP_TX_OFF:
                /* Couldn't disable rx/tx timestamping separately.
                 * Do nothing here.
@@ -3112,7 +3110,7 @@ static int dpaa_ts_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
                return -ERANGE;
        }
 
-       if (config.rx_filter == HWTSTAMP_FILTER_NONE) {
+       if (config->rx_filter == HWTSTAMP_FILTER_NONE) {
                /* Couldn't disable rx/tx timestamping separately.
                 * Do nothing here.
                 */
@@ -3121,11 +3119,10 @@ static int dpaa_ts_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
                priv->mac_dev->set_tstamp(priv->mac_dev->fman_mac, true);
                priv->rx_tstamp = true;
                /* TS is set for all frame types, not only those requested */
-               config.rx_filter = HWTSTAMP_FILTER_ALL;
+               config->rx_filter = HWTSTAMP_FILTER_ALL;
        }
 
-       return copy_to_user(rq->ifr_data, &config, sizeof(config)) ?
-                       -EFAULT : 0;
+       return 0;
 }
 
 static int dpaa_ioctl(struct net_device *net_dev, struct ifreq *rq, int cmd)
@@ -3139,9 +3136,6 @@ static int dpaa_ioctl(struct net_device *net_dev, struct ifreq *rq, int cmd)
                                                 cmd);
        }
 
-       if (cmd == SIOCSHWTSTAMP)
-               return dpaa_ts_ioctl(net_dev, rq, cmd);
-
        return ret;
 }
 
@@ -3160,6 +3154,7 @@ static const struct net_device_ops dpaa_ops = {
        .ndo_change_mtu = dpaa_change_mtu,
        .ndo_bpf = dpaa_xdp,
        .ndo_xdp_xmit = dpaa_xdp_xmit,
+       .ndo_hwtstamp_set = dpaa_hwtstamp_set,
 };
 
 static int dpaa_napi_add(struct net_device *net_dev)