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
The following commit(s) were added to refs/heads/master by this push:
new 342400eba43 drivers/can: repair CTUCANFD socket driver flag error;
342400eba43 is described below
commit 342400eba432de110a0db8db5c9fe15c421bf924
Author: wangjinjing1 <[email protected]>
AuthorDate: Sun Sep 28 20:15:49 2025 +0800
drivers/can: repair CTUCANFD socket driver flag error;
Cherry-picked from open-vela/nuttx commit
83a1fdad06ea938efa84fbbcb4d21243bd2dd2ed
(https://github.com/open-vela/nuttx/commit/83a1fdad06ea938efa84fbbcb4d21243bd2dd2ed).
Adapted to upstream: keep fdf = 1 and the RX extended ID drop path;
struct can_frame has no flags member.
Signed-off-by: wangjinjing1 <[email protected]>
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: raiden00pl <[email protected]>
---
drivers/can/ctucanfd_pci.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/can/ctucanfd_pci.c b/drivers/can/ctucanfd_pci.c
index f13c592017e..80d515b8a62 100644
--- a/drivers/can/ctucanfd_pci.c
+++ b/drivers/can/ctucanfd_pci.c
@@ -1121,7 +1121,7 @@ static int ctucanfd_sock_transmit(FAR struct
netdev_lowerhalf_s *dev,
/* Set RTR bit */
- fmt.s.rtr = (frame->can_id & CAN_RTR_FLAG);
+ fmt.s.rtr = (frame->can_id & CAN_RTR_FLAG) ? 1 : 0;
#ifdef CONFIG_NET_CAN_EXTID
if (frame->can_id & CAN_EFF_FLAG)
@@ -1165,9 +1165,9 @@ static int ctucanfd_sock_transmit(FAR struct
netdev_lowerhalf_s *dev,
/* Set flags */
- fmt.s.rtr = (frame->can_id & CAN_RTR_FLAG);
- fmt.s.brs = (frame->flags & CANFD_BRS);
- fmt.s.esi_rsv = (frame->flags & CANFD_ESI);
+ fmt.s.rtr = (frame->can_id & CAN_RTR_FLAG) ? 1 : 0;
+ fmt.s.brs = (frame->flags & CANFD_BRS) ? 1 : 0;
+ fmt.s.esi_rsv = (frame->flags & CANFD_ESI) ? 1 : 0;
#ifdef CONFIG_NET_CAN_EXTID
if (frame->can_id & CAN_EFF_FLAG)
@@ -1460,7 +1460,7 @@ static FAR netpkt_t *ctucanfd_sock_error(FAR struct
netdev_lowerhalf_s *dev)
/* Copy frame */
- frame->can_id = errbits;
+ frame->can_id = errbits | CAN_ERR_FLAG;
frame->can_dlc = CAN_ERR_DLC;
return pkt;