The CAN with eXtended data Length (CAN XL) is a new CAN protocol with a 10Mbit/s data transfer with a new physical layer transceiver (for this data section). CAN XL allows up to 2048 byte of payload and shares the arbitration principle (11 bit priority) known from Classical CAN and CAN FD. RTR and 29 bit identifiers are not implemented in CAN XL. A short introdution to CAN XL can be found here: https://www.bosch-semiconductors.com/media/ip_modules/pdf_2/can_xl_1/canxl_intro_20210225.pdf V2: Major rework after discussion and feedback on Linux-CAN ML - rework of struct canxl_frame - CANXL_XLF flag is now the switch between CAN XL and CAN/CANFD - variable length in r/w operations for CAN XL frames - write CAN XL frame to raw socket enforces size <-> canxl_frame.len sync V3: Fix length for CAN XL frames inside the sk_buff - extend the CAN_RAW sockopt to handle fixed/truncated read/write operations V4: Fix patch 5 (can: raw: add CAN XL support) - fix return value (move 'err = -EINVAL' in raw_sendmsg()) - add CAN XL frame handling in can_rcv() - change comment for CAN_RAW_XL_[RT]X_DYN definition (allow -> enable) Oliver Hartkopp (5): can: canxl: introduce CAN XL data structure can: canxl: introduce ETH_P_CANXL ethernet protocol handling can: dev: add CAN XL support can: vcan: add CAN XL support can: raw: add CAN XL support drivers/net/can/dev/rx-offload.c | 2 +- drivers/net/can/dev/skb.c | 49 +++++++++++++--- drivers/net/can/vcan.c | 11 ++-- include/linux/can/skb.h | 44 ++++++++++++++- include/uapi/linux/can.h | 49 ++++++++++++++++ include/uapi/linux/can/raw.h | 6 ++ include/uapi/linux/if_ether.h | 1 + net/can/af_can.c | 32 +++++++++-- net/can/raw.c | 97 +++++++++++++++++++++++++++----- 9 files changed, 256 insertions(+), 35 deletions(-) -- 2.30.2