]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: ravb: convert to ndo_hwtstamp API
authorVadim Fedorenko <vadim.fedorenko@linux.dev>
Thu, 23 Oct 2025 22:04:55 +0000 (22:04 +0000)
committerJakub Kicinski <kuba@kernel.org>
Tue, 28 Oct 2025 01:04:36 +0000 (18:04 -0700)
Convert driver to use .ndo_hwtstamp_set()/.ndo_hwtstamp_get callbacks.
ravb_do_ioctl() becomes pure phy_do_ioctl_running(), remove it and
replace in callbacks.

Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Link: https://patch.msgid.link/20251023220457.3201122-5-vadim.fedorenko@linux.dev
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/renesas/ravb_main.c

index c3fc15f9ec8526b5419c4618db07d7026f3fd163..edfaa585052751e93673745272d60612369caae2 100644 (file)
@@ -2410,41 +2410,38 @@ static int ravb_close(struct net_device *ndev)
        return 0;
 }
 
-static int ravb_hwtstamp_get(struct net_device *ndev, struct ifreq *req)
+static int ravb_hwtstamp_get(struct net_device *ndev,
+                            struct kernel_hwtstamp_config *config)
 {
        struct ravb_private *priv = netdev_priv(ndev);
-       struct hwtstamp_config config;
 
-       config.flags = 0;
-       config.tx_type = priv->tstamp_tx_ctrl ? HWTSTAMP_TX_ON :
-                                               HWTSTAMP_TX_OFF;
+       config->flags = 0;
+       config->tx_type = priv->tstamp_tx_ctrl ? HWTSTAMP_TX_ON :
+                                                HWTSTAMP_TX_OFF;
        switch (priv->tstamp_rx_ctrl & RAVB_RXTSTAMP_TYPE) {
        case RAVB_RXTSTAMP_TYPE_V2_L2_EVENT:
-               config.rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_EVENT;
+               config->rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_EVENT;
                break;
        case RAVB_RXTSTAMP_TYPE_ALL:
-               config.rx_filter = HWTSTAMP_FILTER_ALL;
+               config->rx_filter = HWTSTAMP_FILTER_ALL;
                break;
        default:
-               config.rx_filter = HWTSTAMP_FILTER_NONE;
+               config->rx_filter = HWTSTAMP_FILTER_NONE;
        }
 
-       return copy_to_user(req->ifr_data, &config, sizeof(config)) ?
-               -EFAULT : 0;
+       return 0;
 }
 
 /* Control hardware time stamping */
-static int ravb_hwtstamp_set(struct net_device *ndev, struct ifreq *req)
+static int ravb_hwtstamp_set(struct net_device *ndev,
+                            struct kernel_hwtstamp_config *config,
+                            struct netlink_ext_ack *extack)
 {
        struct ravb_private *priv = netdev_priv(ndev);
-       struct hwtstamp_config config;
        u32 tstamp_rx_ctrl = RAVB_RXTSTAMP_ENABLED;
        u32 tstamp_tx_ctrl;
 
-       if (copy_from_user(&config, req->ifr_data, sizeof(config)))
-               return -EFAULT;
-
-       switch (config.tx_type) {
+       switch (config->tx_type) {
        case HWTSTAMP_TX_OFF:
                tstamp_tx_ctrl = 0;
                break;
@@ -2455,7 +2452,7 @@ static int ravb_hwtstamp_set(struct net_device *ndev, struct ifreq *req)
                return -ERANGE;
        }
 
-       switch (config.rx_filter) {
+       switch (config->rx_filter) {
        case HWTSTAMP_FILTER_NONE:
                tstamp_rx_ctrl = 0;
                break;
@@ -2463,36 +2460,14 @@ static int ravb_hwtstamp_set(struct net_device *ndev, struct ifreq *req)
                tstamp_rx_ctrl |= RAVB_RXTSTAMP_TYPE_V2_L2_EVENT;
                break;
        default:
-               config.rx_filter = HWTSTAMP_FILTER_ALL;
+               config->rx_filter = HWTSTAMP_FILTER_ALL;
                tstamp_rx_ctrl |= RAVB_RXTSTAMP_TYPE_ALL;
        }
 
        priv->tstamp_tx_ctrl = tstamp_tx_ctrl;
        priv->tstamp_rx_ctrl = tstamp_rx_ctrl;
 
-       return copy_to_user(req->ifr_data, &config, sizeof(config)) ?
-               -EFAULT : 0;
-}
-
-/* ioctl to device function */
-static int ravb_do_ioctl(struct net_device *ndev, struct ifreq *req, int cmd)
-{
-       struct phy_device *phydev = ndev->phydev;
-
-       if (!netif_running(ndev))
-               return -EINVAL;
-
-       if (!phydev)
-               return -ENODEV;
-
-       switch (cmd) {
-       case SIOCGHWTSTAMP:
-               return ravb_hwtstamp_get(ndev, req);
-       case SIOCSHWTSTAMP:
-               return ravb_hwtstamp_set(ndev, req);
-       }
-
-       return phy_mii_ioctl(phydev, req, cmd);
+       return 0;
 }
 
 static int ravb_change_mtu(struct net_device *ndev, int new_mtu)
@@ -2628,11 +2603,13 @@ static const struct net_device_ops ravb_netdev_ops = {
        .ndo_get_stats          = ravb_get_stats,
        .ndo_set_rx_mode        = ravb_set_rx_mode,
        .ndo_tx_timeout         = ravb_tx_timeout,
-       .ndo_eth_ioctl          = ravb_do_ioctl,
+       .ndo_eth_ioctl          = phy_do_ioctl_running,
        .ndo_change_mtu         = ravb_change_mtu,
        .ndo_validate_addr      = eth_validate_addr,
        .ndo_set_mac_address    = eth_mac_addr,
        .ndo_set_features       = ravb_set_features,
+       .ndo_hwtstamp_get       = ravb_hwtstamp_get,
+       .ndo_hwtstamp_set       = ravb_hwtstamp_set,
 };
 
 /* MDIO bus init function */