]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
can: peak_usb: convert to use ndo_hwtstamp callbacks
authorVadim Fedorenko <vadim.fedorenko@linux.dev>
Wed, 29 Oct 2025 23:16:20 +0000 (23:16 +0000)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Fri, 31 Oct 2025 12:12:18 +0000 (13:12 +0100)
Convert driver to use ndo_hwtstamp_set()/ndo_hwtstamp_get() callbacks.
ndo_eth_ioctl handler does nothing after conversion - remove it.

Signed-off-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Reviewed-by: Kory Maincent <kory.maincent@bootlin.com>
Reviewed-by: Vincent Mailhol <mailhol@kernel.org>
Link: https://patch.msgid.link/20251029231620.1135640-4-vadim.fedorenko@linux.dev
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/usb/peak_usb/pcan_usb_core.c

index 94b1d7f15d27df4707e7086d0a46f4909688a31c..cf48bb26d46d233a6479df7cd619ea4d59102923 100644 (file)
@@ -784,36 +784,33 @@ static int peak_usb_set_data_bittiming(struct net_device *netdev)
        return 0;
 }
 
-static int peak_eth_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
+static int peak_hwtstamp_get(struct net_device *netdev,
+                            struct kernel_hwtstamp_config *config)
 {
-       struct hwtstamp_config hwts_cfg = { 0 };
-
-       switch (cmd) {
-       case SIOCSHWTSTAMP: /* set */
-               if (copy_from_user(&hwts_cfg, ifr->ifr_data, sizeof(hwts_cfg)))
-                       return -EFAULT;
-               if (hwts_cfg.tx_type == HWTSTAMP_TX_OFF &&
-                   hwts_cfg.rx_filter == HWTSTAMP_FILTER_ALL)
-                       return 0;
-               return -ERANGE;
-
-       case SIOCGHWTSTAMP: /* get */
-               hwts_cfg.tx_type = HWTSTAMP_TX_OFF;
-               hwts_cfg.rx_filter = HWTSTAMP_FILTER_ALL;
-               if (copy_to_user(ifr->ifr_data, &hwts_cfg, sizeof(hwts_cfg)))
-                       return -EFAULT;
+       config->tx_type = HWTSTAMP_TX_OFF;
+       config->rx_filter = HWTSTAMP_FILTER_ALL;
+
+       return 0;
+}
+
+static int peak_hwtstamp_set(struct net_device *netdev,
+                            struct kernel_hwtstamp_config *config,
+                            struct netlink_ext_ack *extack)
+{
+       if (config->tx_type == HWTSTAMP_TX_OFF &&
+           config->rx_filter == HWTSTAMP_FILTER_ALL)
                return 0;
 
-       default:
-               return -EOPNOTSUPP;
-       }
+       NL_SET_ERR_MSG_MOD(extack, "Only RX HWTSTAMP_FILTER_ALL is supported");
+       return -ERANGE;
 }
 
 static const struct net_device_ops peak_usb_netdev_ops = {
        .ndo_open = peak_usb_ndo_open,
        .ndo_stop = peak_usb_ndo_stop,
-       .ndo_eth_ioctl = peak_eth_ioctl,
        .ndo_start_xmit = peak_usb_ndo_start_xmit,
+       .ndo_hwtstamp_get = peak_hwtstamp_get,
+       .ndo_hwtstamp_set = peak_hwtstamp_set,
 };
 
 /* CAN-USB devices generally handle 32-bit CAN channel IDs.