]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
funeth: convert to ndo_hwtstamp API
authorVadim Fedorenko <vadim.fedorenko@linux.dev>
Thu, 16 Oct 2025 15:25:15 +0000 (15:25 +0000)
committerJakub Kicinski <kuba@kernel.org>
Tue, 21 Oct 2025 00:30:26 +0000 (17:30 -0700)
Convert driver to use .ndo_hwtstamp_get()/.ndo_hwtstamp_set() callbacks.
.ndo_eth_ioctl() implementation becomes empty, remove it.

Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Link: https://patch.msgid.link/20251016152515.3510991-8-vadim.fedorenko@linux.dev
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/fungible/funeth/funeth.h
drivers/net/ethernet/fungible/funeth/funeth_main.c

index 1250e10d21db263c8d2bd10f290c887cc4f1ccca..55e705e239f8286afee65832426b6d350bfb7704 100644 (file)
@@ -4,7 +4,7 @@
 #define _FUNETH_H
 
 #include <uapi/linux/if_ether.h>
-#include <uapi/linux/net_tstamp.h>
+#include <linux/net_tstamp.h>
 #include <linux/mutex.h>
 #include <linux/seqlock.h>
 #include <linux/xarray.h>
@@ -121,7 +121,7 @@ struct funeth_priv {
        u8 rx_coal_usec;
        u8 rx_coal_count;
 
-       struct hwtstamp_config hwtstamp_cfg;
+       struct kernel_hwtstamp_config hwtstamp_cfg;
 
        /* cumulative queue stats from earlier queue instances */
        u64 tx_packets;
index ac86179a0a817b4c3af4aae225d1e9863da1dcbd..792cddac6f1b96f07309b5c2993689ee8df19cdd 100644 (file)
@@ -1014,26 +1014,25 @@ static int fun_get_port_attributes(struct net_device *netdev)
        return 0;
 }
 
-static int fun_hwtstamp_get(struct net_device *dev, struct ifreq *ifr)
+static int fun_hwtstamp_get(struct net_device *dev,
+                           struct kernel_hwtstamp_config *config)
 {
        const struct funeth_priv *fp = netdev_priv(dev);
 
-       return copy_to_user(ifr->ifr_data, &fp->hwtstamp_cfg,
-                           sizeof(fp->hwtstamp_cfg)) ? -EFAULT : 0;
+       *config = fp->hwtstamp_cfg;
+       return 0;
 }
 
-static int fun_hwtstamp_set(struct net_device *dev, struct ifreq *ifr)
+static int fun_hwtstamp_set(struct net_device *dev,
+                           struct kernel_hwtstamp_config *config,
+                           struct netlink_ext_ack *extack)
 {
        struct funeth_priv *fp = netdev_priv(dev);
-       struct hwtstamp_config cfg;
-
-       if (copy_from_user(&cfg, ifr->ifr_data, sizeof(cfg)))
-               return -EFAULT;
 
        /* no TX HW timestamps */
-       cfg.tx_type = HWTSTAMP_TX_OFF;
+       config->tx_type = HWTSTAMP_TX_OFF;
 
-       switch (cfg.rx_filter) {
+       switch (config->rx_filter) {
        case HWTSTAMP_FILTER_NONE:
                break;
        case HWTSTAMP_FILTER_ALL:
@@ -1051,26 +1050,14 @@ static int fun_hwtstamp_set(struct net_device *dev, struct ifreq *ifr)
        case HWTSTAMP_FILTER_PTP_V2_SYNC:
        case HWTSTAMP_FILTER_PTP_V2_DELAY_REQ:
        case HWTSTAMP_FILTER_NTP_ALL:
-               cfg.rx_filter = HWTSTAMP_FILTER_ALL;
+               config->rx_filter = HWTSTAMP_FILTER_ALL;
                break;
        default:
                return -ERANGE;
        }
 
-       fp->hwtstamp_cfg = cfg;
-       return copy_to_user(ifr->ifr_data, &cfg, sizeof(cfg)) ? -EFAULT : 0;
-}
-
-static int fun_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
-{
-       switch (cmd) {
-       case SIOCSHWTSTAMP:
-               return fun_hwtstamp_set(dev, ifr);
-       case SIOCGHWTSTAMP:
-               return fun_hwtstamp_get(dev, ifr);
-       default:
-               return -EOPNOTSUPP;
-       }
+       fp->hwtstamp_cfg = *config;
+       return 0;
 }
 
 /* Prepare the queues for XDP. */
@@ -1340,7 +1327,6 @@ static const struct net_device_ops fun_netdev_ops = {
        .ndo_change_mtu         = fun_change_mtu,
        .ndo_set_mac_address    = fun_set_macaddr,
        .ndo_validate_addr      = eth_validate_addr,
-       .ndo_eth_ioctl          = fun_ioctl,
        .ndo_uninit             = fun_uninit,
        .ndo_bpf                = fun_xdp,
        .ndo_xdp_xmit           = fun_xdp_xmit_frames,
@@ -1348,6 +1334,8 @@ static const struct net_device_ops fun_netdev_ops = {
        .ndo_set_vf_vlan        = fun_set_vf_vlan,
        .ndo_set_vf_rate        = fun_set_vf_rate,
        .ndo_get_vf_config      = fun_get_vf_config,
+       .ndo_hwtstamp_get       = fun_hwtstamp_get,
+       .ndo_hwtstamp_set       = fun_hwtstamp_set,
 };
 
 #define GSO_ENCAP_FLAGS (NETIF_F_GSO_GRE | NETIF_F_GSO_IPXIP4 | \