1 /* 2 * This file is auto-generated. Modifications will be lost. 3 * 4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5 * for more information. 6 */ 7 #ifndef _UAPI_CAN_H 8 #define _UAPI_CAN_H 9 #include <linux/types.h> 10 #include <linux/socket.h> 11 #include <linux/stddef.h> 12 #define CAN_EFF_FLAG 0x80000000U 13 #define CAN_RTR_FLAG 0x40000000U 14 #define CAN_ERR_FLAG 0x20000000U 15 #define CAN_SFF_MASK 0x000007FFU 16 #define CAN_EFF_MASK 0x1FFFFFFFU 17 #define CAN_ERR_MASK 0x1FFFFFFFU 18 #define CANXL_PRIO_MASK CAN_SFF_MASK 19 typedef __u32 canid_t; 20 #define CAN_SFF_ID_BITS 11 21 #define CAN_EFF_ID_BITS 29 22 #define CANXL_PRIO_BITS CAN_SFF_ID_BITS 23 typedef __u32 can_err_mask_t; 24 #define CAN_MAX_DLC 8 25 #define CAN_MAX_RAW_DLC 15 26 #define CAN_MAX_DLEN 8 27 #define CANFD_MAX_DLC 15 28 #define CANFD_MAX_DLEN 64 29 #define CANXL_MIN_DLC 0 30 #define CANXL_MAX_DLC 2047 31 #define CANXL_MAX_DLC_MASK 0x07FF 32 #define CANXL_MIN_DLEN 1 33 #define CANXL_MAX_DLEN 2048 34 struct can_frame { 35 canid_t can_id; 36 union { 37 __u8 len; 38 __u8 can_dlc; 39 } __attribute__((packed)); 40 __u8 __pad; 41 __u8 __res0; 42 __u8 len8_dlc; 43 __u8 data[CAN_MAX_DLEN] __attribute__((aligned(8))); 44 }; 45 #define CANFD_BRS 0x01 46 #define CANFD_ESI 0x02 47 #define CANFD_FDF 0x04 48 struct canfd_frame { 49 canid_t can_id; 50 __u8 len; 51 __u8 flags; 52 __u8 __res0; 53 __u8 __res1; 54 __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8))); 55 }; 56 #define CANXL_XLF 0x80 57 #define CANXL_SEC 0x01 58 #define CANXL_VCID_OFFSET 16 59 #define CANXL_VCID_VAL_MASK 0xFFUL 60 #define CANXL_VCID_MASK (CANXL_VCID_VAL_MASK << CANXL_VCID_OFFSET) 61 struct canxl_frame { 62 canid_t prio; 63 __u8 flags; 64 __u8 sdt; 65 __u16 len; 66 __u32 af; 67 __u8 data[CANXL_MAX_DLEN]; 68 }; 69 #define CAN_MTU (sizeof(struct can_frame)) 70 #define CANFD_MTU (sizeof(struct canfd_frame)) 71 #define CANXL_MTU (sizeof(struct canxl_frame)) 72 #define CANXL_HDR_SIZE (offsetof(struct canxl_frame, data)) 73 #define CANXL_MIN_MTU (CANXL_HDR_SIZE + 64) 74 #define CANXL_MAX_MTU CANXL_MTU 75 #define CAN_RAW 1 76 #define CAN_BCM 2 77 #define CAN_TP16 3 78 #define CAN_TP20 4 79 #define CAN_MCNET 5 80 #define CAN_ISOTP 6 81 #define CAN_J1939 7 82 #define CAN_NPROTO 8 83 #define SOL_CAN_BASE 100 84 struct sockaddr_can { 85 __kernel_sa_family_t can_family; 86 int can_ifindex; 87 union { 88 struct { 89 canid_t rx_id, tx_id; 90 } tp; 91 struct { 92 __u64 name; 93 __u32 pgn; 94 __u8 addr; 95 } j1939; 96 } can_addr; 97 }; 98 struct can_filter { 99 canid_t can_id; 100 canid_t can_mask; 101 }; 102 #define CAN_INV_FILTER 0x20000000U 103 #endif 104