This is an automated email from the ASF dual-hosted git repository.

xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 60ef78f04263166d99fa67a4d84dcb1ba9e8488e
Author: Jacob Dahl <[email protected]>
AuthorDate: Sun Aug 30 14:38:34 2026 -0600

    net/netdev: Combine the per-command CAN ioctl options into NETDEV_CAN_IOCTL
    
    NETDEV_CAN_BITRATE_IOCTL, NETDEV_CAN_FILTER_IOCTL and
    NETDEV_CAN_STATE_IOCTL guarded identical option blocks, and every
    SIOCxCANxxx case in netdev_ifr_ioctl() forwarded a member of the same
    ifr_ifru union to d_ioctl(). One option and one case block now cover
    all of the CAN commands; drivers and defconfigs are updated to the
    new name.
    
    Assisted-by: Claude:claude-fable-5
    Signed-off-by: Jacob Dahl <[email protected]>
---
 arch/arm/src/imx9/imx9_flexcan.c                   |  2 +-
 arch/arm/src/imxrt/imxrt_flexcan.c                 |  2 +-
 arch/arm/src/kinetis/kinetis_flexcan.c             |  2 +-
 arch/arm/src/s32k1xx/s32k1xx_flexcan.c             |  2 +-
 arch/arm/src/s32k3xx/s32k3xx_flexcan.c             |  2 +-
 arch/arm/src/stm32h7/stm32_fdcan_sock.c            |  4 +-
 arch/arm64/src/imx9/imx9_flexcan.c                 | 10 ++---
 arch/risc-v/src/mpfs/mpfs_can.c                    | 21 +++++-----
 .../at32f437-mini/configs/can_socket/defconfig     |  2 +-
 boards/arm/imx9/imx95-evk/configs/can/defconfig    |  2 +-
 .../linum-stm32h753bi/configs/socketcan/defconfig  |  2 +-
 .../nucleo-h743zi2/configs/socketcan/defconfig     |  2 +-
 .../nucleo-h753zi/configs/socketcan/defconfig      |  2 +-
 boards/sim/sim/sim/configs/dynconns/defconfig      |  3 +-
 net/netdev/Kconfig                                 | 26 +++---------
 net/netdev/netdev_ioctl.c                          | 46 +++++-----------------
 16 files changed, 40 insertions(+), 90 deletions(-)

diff --git a/arch/arm/src/imx9/imx9_flexcan.c b/arch/arm/src/imx9/imx9_flexcan.c
index 9550597b84f..c362866a7db 100644
--- a/arch/arm/src/imx9/imx9_flexcan.c
+++ b/arch/arm/src/imx9/imx9_flexcan.c
@@ -1544,7 +1544,7 @@ static int imx9_ioctl(struct net_driver_s *dev, int cmd,
 
   switch (cmd)
     {
-#ifdef CONFIG_NETDEV_CAN_BITRATE_IOCTL
+#ifdef CONFIG_NETDEV_CAN_IOCTL
       case SIOCGCANBITRATE: /* Get bitrate from a CAN controller */
         {
           struct can_ioctl_data_s *req =
diff --git a/arch/arm/src/imxrt/imxrt_flexcan.c 
b/arch/arm/src/imxrt/imxrt_flexcan.c
index 6ce94a58bb1..598f438dabf 100644
--- a/arch/arm/src/imxrt/imxrt_flexcan.c
+++ b/arch/arm/src/imxrt/imxrt_flexcan.c
@@ -1591,7 +1591,7 @@ static int imxrt_ioctl(struct net_driver_s *dev, int cmd,
 
   switch (cmd)
     {
-#ifdef CONFIG_NETDEV_CAN_BITRATE_IOCTL
+#ifdef CONFIG_NETDEV_CAN_IOCTL
       case SIOCGCANBITRATE: /* Get bitrate from a CAN controller */
         {
           struct can_ioctl_data_s *req =
diff --git a/arch/arm/src/kinetis/kinetis_flexcan.c 
b/arch/arm/src/kinetis/kinetis_flexcan.c
index e93a41bb3eb..e36bb9a1949 100644
--- a/arch/arm/src/kinetis/kinetis_flexcan.c
+++ b/arch/arm/src/kinetis/kinetis_flexcan.c
@@ -1477,7 +1477,7 @@ static int kinetis_txavail(struct net_driver_s *dev)
  *
  ****************************************************************************/
 
-#ifdef CONFIG_NETDEV_CAN_BITRATE_IOCTL
+#ifdef CONFIG_NETDEV_CAN_IOCTL
 static int kinetis_ioctl(struct net_driver_s *dev, int cmd,
                          unsigned long arg)
 {
diff --git a/arch/arm/src/s32k1xx/s32k1xx_flexcan.c 
b/arch/arm/src/s32k1xx/s32k1xx_flexcan.c
index 519ade4919e..bb124873c61 100644
--- a/arch/arm/src/s32k1xx/s32k1xx_flexcan.c
+++ b/arch/arm/src/s32k1xx/s32k1xx_flexcan.c
@@ -1460,7 +1460,7 @@ static int s32k1xx_txavail(struct net_driver_s *dev)
  *
  ****************************************************************************/
 
-#ifdef CONFIG_NETDEV_CAN_BITRATE_IOCTL
+#ifdef CONFIG_NETDEV_CAN_IOCTL
 static int s32k1xx_ioctl(struct net_driver_s *dev, int cmd,
                          unsigned long arg)
 {
diff --git a/arch/arm/src/s32k3xx/s32k3xx_flexcan.c 
b/arch/arm/src/s32k3xx/s32k3xx_flexcan.c
index f5aa309dea6..340acbb5a89 100644
--- a/arch/arm/src/s32k3xx/s32k3xx_flexcan.c
+++ b/arch/arm/src/s32k3xx/s32k3xx_flexcan.c
@@ -1658,7 +1658,7 @@ static int s32k3xx_ioctl(struct net_driver_s *dev, int 
cmd,
 
   switch (cmd)
     {
-#ifdef CONFIG_NETDEV_CAN_BITRATE_IOCTL
+#ifdef CONFIG_NETDEV_CAN_IOCTL
       case SIOCGCANBITRATE: /* Get bitrate from a CAN controller */
         {
           struct can_ioctl_data_s *req =
diff --git a/arch/arm/src/stm32h7/stm32_fdcan_sock.c 
b/arch/arm/src/stm32h7/stm32_fdcan_sock.c
index 8585bc01d37..e8e0ea6bc77 100644
--- a/arch/arm/src/stm32h7/stm32_fdcan_sock.c
+++ b/arch/arm/src/stm32h7/stm32_fdcan_sock.c
@@ -1956,7 +1956,7 @@ static int fdcan_netdev_ioctl(struct net_driver_s *dev, 
int cmd,
 
   switch (cmd)
     {
-#ifdef CONFIG_NETDEV_CAN_BITRATE_IOCTL
+#ifdef CONFIG_NETDEV_CAN_IOCTL
       case SIOCGCANBITRATE: /* Get bitrate from a CAN controller */
         {
           struct can_ioctl_data_s *req =
@@ -1985,7 +1985,7 @@ static int fdcan_netdev_ioctl(struct net_driver_s *dev, 
int cmd,
           ret = OK;
         }
         break;
-#endif /* CONFIG_NETDEV_CAN_BITRATE_IOCTL */
+#endif
 
       default:
         ret = -ENOTSUP;
diff --git a/arch/arm64/src/imx9/imx9_flexcan.c 
b/arch/arm64/src/imx9/imx9_flexcan.c
index 7936477dce5..620dc5c6f8e 100644
--- a/arch/arm64/src/imx9/imx9_flexcan.c
+++ b/arch/arm64/src/imx9/imx9_flexcan.c
@@ -554,7 +554,7 @@ static int  imx9_ioctl(struct net_driver_s *dev, int cmd,
 
 /* CAN ID filtering */
 
-#ifdef CONFIG_NETDEV_CAN_FILTER_IOCTL
+#ifdef CONFIG_NETDEV_CAN_IOCTL
 static uint32_t imx9_add_filter(struct imx9_driver_s *priv,
                                  uint8_t filter_type,
                                  bool ext_id,
@@ -1607,7 +1607,7 @@ static int imx9_ioctl(struct net_driver_s *dev, int cmd,
 
   switch (cmd)
     {
-#ifdef CONFIG_NETDEV_CAN_BITRATE_IOCTL
+#ifdef CONFIG_NETDEV_CAN_IOCTL
       case SIOCGCANBITRATE: /* Get bitrate from a CAN controller */
         {
           struct imx9_driver_s *priv = (struct imx9_driver_s *)dev;
@@ -1660,9 +1660,7 @@ static int imx9_ioctl(struct net_driver_s *dev, int cmd,
             }
         }
         break;
-#endif
 
-#ifdef CONFIG_NETDEV_CAN_FILTER_IOCTL
       case SIOCACANSTDFILTER: /* Set STD ID CAN filter */
         {
           struct imx9_driver_s *priv = (struct imx9_driver_s *)dev;
@@ -1728,7 +1726,7 @@ static int imx9_ioctl(struct net_driver_s *dev, int cmd,
  *
  ****************************************************************************/
 
-#ifdef CONFIG_NETDEV_CAN_FILTER_IOCTL
+#ifdef CONFIG_NETDEV_CAN_IOCTL
 static uint32_t imx9_add_filter(struct imx9_driver_s *priv,
                                uint8_t filter_type,
                                bool ext_id,
@@ -1869,7 +1867,7 @@ static uint8_t imx9_reset_filter(struct imx9_driver_s 
*priv)
 
   return OK;
 }
-#endif /* CONFIG_NETDEV_CAN_FILTER_IOCTL */
+#endif /* CONFIG_NETDEV_CAN_IOCTL */
 
 /****************************************************************************
  * Function: imx9_init_eccram
diff --git a/arch/risc-v/src/mpfs/mpfs_can.c b/arch/risc-v/src/mpfs/mpfs_can.c
index 7c2cd99af5c..faa0c6d4eaf 100644
--- a/arch/risc-v/src/mpfs/mpfs_can.c
+++ b/arch/risc-v/src/mpfs/mpfs_can.c
@@ -474,12 +474,12 @@ static int mpfs_interrupt(int irq, void *context, void 
*arg);
 
 /* RX SW/HW filter related functions */
 
-#ifdef CONFIG_NETDEV_CAN_FILTER_IOCTL
+#ifdef CONFIG_NETDEV_CAN_IOCTL
 static uint8_t mpfs_can_add_filter(mpfs_can_instance_t *priv,
                                    uint8_t filter_type,
                                    uint32_t filter_id1,
                                    uint32_t filter_id2);
-#endif /* CONFIG_NETDEV_CAN_FILTER_IOCTL */
+#endif /* CONFIG_NETDEV_CAN_IOCTL */
 
 static uint8_t mpfs_can_reset_filter(mpfs_can_instance_t *priv);
 
@@ -523,7 +523,7 @@ static uint32_t mpfs_can_canid_to_msgid(uint32_t canid);
 static uint32_t mpfs_can_msgid_to_canid(uint32_t id, bool ide, bool rtr);
 static uint8_t mpfs_can_set_bitrate(mpfs_can_instance_t *priv,
                                     uint32_t bitrate);
-#if defined(CONFIG_DEBUG_NET_INFO) || defined(CONFIG_NETDEV_CAN_BITRATE_IOCTL)
+#if defined(CONFIG_DEBUG_NET_INFO) || defined(CONFIG_NETDEV_CAN_IOCTL)
 static uint32_t mpfs_can_get_sample_point(mpfs_can_instance_t *priv);
 #endif
 
@@ -1081,7 +1081,7 @@ static int mpfs_interrupt(int irq, void *context, void 
*arg)
  *
  ****************************************************************************/
 
-#ifdef CONFIG_NETDEV_CAN_FILTER_IOCTL
+#ifdef CONFIG_NETDEV_CAN_IOCTL
 static uint8_t mpfs_can_add_filter(mpfs_can_instance_t *priv,
                                       uint8_t filter_type,
                                       uint32_t filter_id1,
@@ -1137,7 +1137,7 @@ static uint8_t mpfs_can_add_filter(mpfs_can_instance_t 
*priv,
 
   return CAN_OK;
 }
-#endif /* CONFIG_NETDEV_CAN_FILTER_IOCTL */
+#endif /* CONFIG_NETDEV_CAN_IOCTL */
 
 /****************************************************************************
  * Name: mpfs_can_reset_filter
@@ -1734,7 +1734,7 @@ static uint8_t mpfs_can_set_bitrate(mpfs_can_instance_t 
*priv,
   return CAN_OK;
 }
 
-#if defined(CONFIG_DEBUG_NET_INFO) || defined(CONFIG_NETDEV_CAN_BITRATE_IOCTL)
+#if defined(CONFIG_DEBUG_NET_INFO) || defined(CONFIG_NETDEV_CAN_IOCTL)
 /****************************************************************************
  * Name: mpfs_can_get_sample_point
  *
@@ -2299,8 +2299,7 @@ static int mpfs_ioctl(struct netdev_lowerhalf_s *dev, int 
cmd,
 {
   ninfo("IOCTL received | cmd: %d arg: %ld\n", cmd, arg);
 
-#if defined(CONFIG_NETDEV_CAN_BITRATE_IOCTL) || \
-defined(CONFIG_NETDEV_CAN_FILTER_IOCTL)
+#ifdef CONFIG_NETDEV_CAN_IOCTL
   mpfs_can_instance_t *priv =
     (mpfs_can_instance_t *)dev;
 #endif
@@ -2308,7 +2307,7 @@ defined(CONFIG_NETDEV_CAN_FILTER_IOCTL)
 
   switch (cmd)
     {
-#ifdef CONFIG_NETDEV_CAN_BITRATE_IOCTL
+#ifdef CONFIG_NETDEV_CAN_IOCTL
     case SIOCGCANBITRATE:
 
       /* Get bitrate from the CAN controller */
@@ -2340,9 +2339,7 @@ defined(CONFIG_NETDEV_CAN_FILTER_IOCTL)
         ret = CAN_OK;
       }
       break;
-#endif /* CONFIG_NETDEV_CAN_BITRATE_IOCTL */
 
-#ifdef CONFIG_NETDEV_CAN_FILTER_IOCTL
     case SIOCACANSTDFILTER:
     case SIOCACANEXTFILTER:
 
@@ -2370,7 +2367,7 @@ defined(CONFIG_NETDEV_CAN_FILTER_IOCTL)
         ret = CAN_OK;
       }
       break;
-#endif /* CONFIG_NETDEV_CAN_FILTER_IOCTL */
+#endif /* CONFIG_NETDEV_CAN_IOCTL */
 
     default:
       ret = -ENOTTY;
diff --git a/boards/arm/at32/at32f437-mini/configs/can_socket/defconfig 
b/boards/arm/at32/at32f437-mini/configs/can_socket/defconfig
index a35c092537e..7d2f6556e37 100644
--- a/boards/arm/at32/at32f437-mini/configs/can_socket/defconfig
+++ b/boards/arm/at32/at32f437-mini/configs/can_socket/defconfig
@@ -38,7 +38,7 @@ CONFIG_INIT_ENTRYPOINT="nsh_main"
 CONFIG_INTELHEX_BINARY=y
 CONFIG_LINE_MAX=64
 CONFIG_NET=y
-CONFIG_NETDEV_CAN_BITRATE_IOCTL=y
+CONFIG_NETDEV_CAN_IOCTL=y
 CONFIG_NETDEV_IFINDEX=y
 CONFIG_NET_CAN=y
 CONFIG_NET_CAN_SOCK_OPTS=y
diff --git a/boards/arm/imx9/imx95-evk/configs/can/defconfig 
b/boards/arm/imx9/imx95-evk/configs/can/defconfig
index 7510776e90a..fb147108d64 100644
--- a/boards/arm/imx9/imx95-evk/configs/can/defconfig
+++ b/boards/arm/imx9/imx95-evk/configs/can/defconfig
@@ -54,7 +54,7 @@ CONFIG_IOB_THROTTLE=8
 CONFIG_LIBC_LOCALTIME=y
 CONFIG_LPUART3_SERIAL_CONSOLE=y
 CONFIG_NET=y
-CONFIG_NETDEV_CAN_BITRATE_IOCTL=y
+CONFIG_NETDEV_CAN_IOCTL=y
 CONFIG_NETDEV_IFINDEX=y
 CONFIG_NETDEV_LATEINIT=y
 CONFIG_NET_CAN=y
diff --git a/boards/arm/stm32h7/linum-stm32h753bi/configs/socketcan/defconfig 
b/boards/arm/stm32h7/linum-stm32h753bi/configs/socketcan/defconfig
index 7ef37a7cbf7..0e9a1e41a1a 100644
--- a/boards/arm/stm32h7/linum-stm32h753bi/configs/socketcan/defconfig
+++ b/boards/arm/stm32h7/linum-stm32h753bi/configs/socketcan/defconfig
@@ -44,7 +44,7 @@ CONFIG_INTELHEX_BINARY=y
 CONFIG_LINE_MAX=64
 CONFIG_MM_REGIONS=4
 CONFIG_NET=y
-CONFIG_NETDEV_CAN_BITRATE_IOCTL=y
+CONFIG_NETDEV_CAN_IOCTL=y
 CONFIG_NETDEV_IFINDEX=y
 CONFIG_NETDEV_LATEINIT=y
 CONFIG_NET_CAN=y
diff --git a/boards/arm/stm32h7/nucleo-h743zi2/configs/socketcan/defconfig 
b/boards/arm/stm32h7/nucleo-h743zi2/configs/socketcan/defconfig
index 68c89eacc79..66d1e74be66 100644
--- a/boards/arm/stm32h7/nucleo-h743zi2/configs/socketcan/defconfig
+++ b/boards/arm/stm32h7/nucleo-h743zi2/configs/socketcan/defconfig
@@ -40,7 +40,7 @@ CONFIG_INTELHEX_BINARY=y
 CONFIG_LINE_MAX=64
 CONFIG_MM_REGIONS=4
 CONFIG_NET=y
-CONFIG_NETDEV_CAN_BITRATE_IOCTL=y
+CONFIG_NETDEV_CAN_IOCTL=y
 CONFIG_NETDEV_IFINDEX=y
 CONFIG_NETDEV_LATEINIT=y
 CONFIG_NET_CAN=y
diff --git a/boards/arm/stm32h7/nucleo-h753zi/configs/socketcan/defconfig 
b/boards/arm/stm32h7/nucleo-h753zi/configs/socketcan/defconfig
index f9643ef1a1a..61cc0fe7c17 100644
--- a/boards/arm/stm32h7/nucleo-h753zi/configs/socketcan/defconfig
+++ b/boards/arm/stm32h7/nucleo-h753zi/configs/socketcan/defconfig
@@ -40,7 +40,7 @@ CONFIG_INTELHEX_BINARY=y
 CONFIG_LINE_MAX=64
 CONFIG_MM_REGIONS=4
 CONFIG_NET=y
-CONFIG_NETDEV_CAN_BITRATE_IOCTL=y
+CONFIG_NETDEV_CAN_IOCTL=y
 CONFIG_NETDEV_IFINDEX=y
 CONFIG_NETDEV_LATEINIT=y
 CONFIG_NET_CAN=y
diff --git a/boards/sim/sim/sim/configs/dynconns/defconfig 
b/boards/sim/sim/sim/configs/dynconns/defconfig
index c009442b847..df646edceb3 100644
--- a/boards/sim/sim/sim/configs/dynconns/defconfig
+++ b/boards/sim/sim/sim/configs/dynconns/defconfig
@@ -35,8 +35,7 @@ CONFIG_MM_FILL_ALLOCATIONS=y
 CONFIG_NAME_MAX=64
 CONFIG_NET=y
 CONFIG_NETDB_DNSCLIENT=y
-CONFIG_NETDEV_CAN_BITRATE_IOCTL=y
-CONFIG_NETDEV_CAN_FILTER_IOCTL=y
+CONFIG_NETDEV_CAN_IOCTL=y
 CONFIG_NETDEV_LATEINIT=y
 CONFIG_NETDEV_PHY_IOCTL=y
 CONFIG_NETDOWN_NOTIFIER=y
diff --git a/net/netdev/Kconfig b/net/netdev/Kconfig
index 227b5c2d58f..5570cd16027 100644
--- a/net/netdev/Kconfig
+++ b/net/netdev/Kconfig
@@ -16,31 +16,15 @@ config NETDEV_PHY_IOCTL
        ---help---
                Enable support for ioctl() commands to access PHY registers
 
-config NETDEV_CAN_BITRATE_IOCTL
-       bool "Enable CAN bitrate ioctl()"
+config NETDEV_CAN_IOCTL
+       bool "Enable CAN ioctl()"
        default n
        select NETDEV_IOCTL
        depends on NET_CAN
        ---help---
-               Enable support for ioctl() commands to change CAN bitrate
-
-config NETDEV_CAN_FILTER_IOCTL
-       bool "Enable CAN filter ioctl()"
-       default n
-       select NETDEV_IOCTL
-       depends on NET_CAN
-       ---help---
-               Enable support for ioctl() commands to add/remove CAN 
hardware-level
-               filters (NOTE: Not supported by all drivers)
-
-config NETDEV_CAN_STATE_IOCTL
-       bool "Enable CAN state ioctl()"
-       default n
-       select NETDEV_IOCTL
-       depends on NET_CAN
-       ---help---
-               Enable support for ioctl() commands to set/see CAN or LIN 
controller-state
-               (NOTE: Not supported by all drivers)
+               Enable support for the CAN network device ioctl() commands:
+               bitrate, hardware-level filters and CAN/LIN controller state
+               (NOTE: Not every command is supported by every driver)
 
 config NETDEV_WIRELESS_IOCTL
        bool "Enable Wireless ioctl()"
diff --git a/net/netdev/netdev_ioctl.c b/net/netdev/netdev_ioctl.c
index 038ca7f1a5d..e49e449390c 100644
--- a/net/netdev/netdev_ioctl.c
+++ b/net/netdev/netdev_ioctl.c
@@ -1244,7 +1244,7 @@ static int netdev_ifr_ioctl(FAR struct socket *psock, int 
cmd,
         break;
 #endif
 
-#if defined(CONFIG_NETDEV_IOCTL) && defined(CONFIG_NETDEV_CAN_BITRATE_IOCTL)
+#if defined(CONFIG_NETDEV_IOCTL) && defined(CONFIG_NETDEV_CAN_IOCTL)
       case SIOCSCANBITRATE:  /* Set bitrate of a CAN controller */
         if (dev->d_flags & IFF_UP)
           {
@@ -1254,52 +1254,24 @@ static int netdev_ifr_ioctl(FAR struct socket *psock, 
int cmd,
             break;
           }
 
-        /* If down, fall-through to common code in SIOCGCANBITRATE. */
+        /* If down, fall-through to the common CAN ioctl code. */
 
-      case SIOCGCANBITRATE:  /* Get bitrate from a CAN controller */
-        if (dev->d_ioctl)
-          {
-            FAR struct can_ioctl_data_s *can_bitrate_data =
-              &req->ifr_ifru.ifru_can_data;
-            ret = dev->d_ioctl(dev, cmd,
-                          (unsigned long)(uintptr_t)can_bitrate_data);
-          }
-        else
-          {
-            ret = -ENOSYS;
-          }
-        break;
-#endif
-
-#if defined(CONFIG_NETDEV_IOCTL) && defined(CONFIG_NETDEV_CAN_FILTER_IOCTL)
+      case SIOCGCANBITRATE:    /* Get bitrate from a CAN controller */
       case SIOCACANEXTFILTER:  /* Add an extended-ID filter */
       case SIOCDCANEXTFILTER:  /* Delete an extended-ID filter */
       case SIOCACANSTDFILTER:  /* Add a standard-ID filter */
       case SIOCDCANSTDFILTER:  /* Delete a standard-ID filter */
       case SIOCCANRECOVERY:    /* Recovery can controller when bus-off */
+      case SIOCGCANSTATE:      /* Get state from a CAN/LIN controller */
+      case SIOCSCANSTATE:      /* Set the LIN/CAN controller state */
         if (dev->d_ioctl)
           {
-            FAR struct can_ioctl_filter_s *can_filter =
-              &req->ifr_ifru.ifru_can_filter;
-            ret = dev->d_ioctl(dev, cmd,
-                          (unsigned long)(uintptr_t)can_filter);
-          }
-        else
-          {
-            ret = -ENOSYS;
-          }
-        break;
-#endif
+            /* Every CAN ioctl argument struct is a member of the
+             * ifr_ifru union, so cmd's struct is at its address.
+             */
 
-#if defined(CONFIG_NETDEV_IOCTL) && defined(CONFIG_NETDEV_CAN_STATE_IOCTL)
-      case SIOCGCANSTATE:  /* Get state from a CAN/LIN controller */
-      case SIOCSCANSTATE:  /* Set the LIN/CAN controller state */
-        if (dev->d_ioctl)
-          {
-            FAR struct can_ioctl_state_s *can_state =
-              &req->ifr_ifru.ifru_can_state;
             ret = dev->d_ioctl(dev, cmd,
-                          (unsigned long)(uintptr_t)can_state);
+                          (unsigned long)(uintptr_t)&req->ifr_ifru);
           }
         else
           {

Reply via email to