This is an automated email from the ASF dual-hosted git repository. jerpelea pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit a52a399bc965a0b59272a90c1f61e647bccf58ee Author: p-szafonimateusz <[email protected]> AuthorDate: Fri May 15 14:11:39 2026 +0200 drivers/serial/netdev_console.c: Fix CAN console. CAN console require CAN_ISOTP_WAIT_TX_DONE set Signed-off-by: p-szafonimateusz <[email protected]> --- drivers/serial/Kconfig | 3 ++- drivers/serial/netdev_console.c | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index 7f3961513db..87ea8f2078e 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig @@ -1028,7 +1028,7 @@ config CONSOLE_NETDEV bool "Console on netdev" default n depends on NETDEVICES && SCHED_LPWORK - depends on NET_UDP || NET_CAN_ISOTP + depends on NET_UDP || (NET_CAN_ISOTP && NET_CAN_SOCK_OPTS) select SERIAL_RXDMA select SERIAL_TXDMA ---help--- @@ -1045,6 +1045,7 @@ config CONSOLE_NETDEV_UDP config CONSOLE_NETDEV_CAN bool "Netdev Console interface over CAN" default y if NET_CAN_ISOTP + depends on NET_CAN_ISOTP && NET_CAN_SOCK_OPTS ---help--- Network interface over CAN (ISO-TP) used for Console. diff --git a/drivers/serial/netdev_console.c b/drivers/serial/netdev_console.c index a20cb850e32..660c1433b13 100644 --- a/drivers/serial/netdev_console.c +++ b/drivers/serial/netdev_console.c @@ -199,6 +199,7 @@ static int netdev_console_can_init(FAR struct uart_dev_s *dev) #ifdef CONFIG_NET_CAN_CANFD struct can_isotp_ll_options ll; #endif + struct can_isotp_options opts; struct sockaddr_can addr; int ret; @@ -228,6 +229,20 @@ static int netdev_console_can_init(FAR struct uart_dev_s *dev) return ret; } + /* Console write must be blocking */ + + memset(&opts, 0, sizeof(opts)); + opts.flags = CAN_ISOTP_WAIT_TX_DONE; + + ret = psock_setsockopt(&priv->psock, SOL_CAN_ISOTP, CAN_ISOTP_OPTS, + &opts, sizeof(opts)); + if (ret < 0) + { + psock_close(&priv->psock); + nerr("ERROR: Failed to configure ISO-TP socket: %d\n", ret); + return ret; + } + #ifdef CONFIG_NET_CAN_CANFD /* Always use CAN FD if enabled */
