162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci# 362306a36Sopenharmony_ci# Controller Area Network (CAN) network layer core configuration 462306a36Sopenharmony_ci# 562306a36Sopenharmony_ci 662306a36Sopenharmony_cimenuconfig CAN 762306a36Sopenharmony_ci tristate "CAN bus subsystem support" 862306a36Sopenharmony_ci help 962306a36Sopenharmony_ci Controller Area Network (CAN) is a slow (up to 1Mbit/s) serial 1062306a36Sopenharmony_ci communications protocol. Development of the CAN bus started in 1162306a36Sopenharmony_ci 1983 at Robert Bosch GmbH, and the protocol was officially 1262306a36Sopenharmony_ci released in 1986. The CAN bus was originally mainly for automotive, 1362306a36Sopenharmony_ci but is now widely used in marine (NMEA2000), industrial, and medical 1462306a36Sopenharmony_ci applications. More information on the CAN network protocol family 1562306a36Sopenharmony_ci PF_CAN is contained in <Documentation/networking/can.rst>. 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci If you want CAN support you should say Y here and also to the 1862306a36Sopenharmony_ci specific driver for your controller(s) under the Network device 1962306a36Sopenharmony_ci support section. 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ciif CAN 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ciconfig CAN_RAW 2462306a36Sopenharmony_ci tristate "Raw CAN Protocol (raw access with CAN-ID filtering)" 2562306a36Sopenharmony_ci default y 2662306a36Sopenharmony_ci help 2762306a36Sopenharmony_ci The raw CAN protocol option offers access to the CAN bus via 2862306a36Sopenharmony_ci the BSD socket API. You probably want to use the raw socket in 2962306a36Sopenharmony_ci most cases where no higher level protocol is being used. The raw 3062306a36Sopenharmony_ci socket has several filter options e.g. ID masking / error frames. 3162306a36Sopenharmony_ci To receive/send raw CAN messages, use AF_CAN with protocol CAN_RAW. 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ciconfig CAN_BCM 3462306a36Sopenharmony_ci tristate "Broadcast Manager CAN Protocol (with content filtering)" 3562306a36Sopenharmony_ci default y 3662306a36Sopenharmony_ci help 3762306a36Sopenharmony_ci The Broadcast Manager offers content filtering, timeout monitoring, 3862306a36Sopenharmony_ci sending of RTR frames, and cyclic CAN messages without permanent user 3962306a36Sopenharmony_ci interaction. The BCM can be 'programmed' via the BSD socket API and 4062306a36Sopenharmony_ci informs you on demand e.g. only on content updates / timeouts. 4162306a36Sopenharmony_ci You probably want to use the bcm socket in most cases where cyclic 4262306a36Sopenharmony_ci CAN messages are used on the bus (e.g. in automotive environments). 4362306a36Sopenharmony_ci To use the Broadcast Manager, use AF_CAN with protocol CAN_BCM. 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ciconfig CAN_GW 4662306a36Sopenharmony_ci tristate "CAN Gateway/Router (with netlink configuration)" 4762306a36Sopenharmony_ci default y 4862306a36Sopenharmony_ci help 4962306a36Sopenharmony_ci The CAN Gateway/Router is used to route (and modify) CAN frames. 5062306a36Sopenharmony_ci It is based on the PF_CAN core infrastructure for msg filtering and 5162306a36Sopenharmony_ci msg sending and can optionally modify routed CAN frames on the fly. 5262306a36Sopenharmony_ci CAN frames can be routed between CAN network interfaces (one hop). 5362306a36Sopenharmony_ci They can be modified with AND/OR/XOR/SET operations as configured 5462306a36Sopenharmony_ci by the netlink configuration interface known e.g. from iptables. 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_cisource "net/can/j1939/Kconfig" 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ciconfig CAN_ISOTP 5962306a36Sopenharmony_ci tristate "ISO 15765-2:2016 CAN transport protocol" 6062306a36Sopenharmony_ci help 6162306a36Sopenharmony_ci CAN Transport Protocols offer support for segmented Point-to-Point 6262306a36Sopenharmony_ci communication between CAN nodes via two defined CAN Identifiers. 6362306a36Sopenharmony_ci As CAN frames can only transport a small amount of data bytes 6462306a36Sopenharmony_ci (max. 8 bytes for 'classic' CAN and max. 64 bytes for CAN FD) this 6562306a36Sopenharmony_ci segmentation is needed to transport longer Protocol Data Units (PDU) 6662306a36Sopenharmony_ci as needed e.g. for vehicle diagnosis (UDS, ISO 14229) or IP-over-CAN 6762306a36Sopenharmony_ci traffic. 6862306a36Sopenharmony_ci This protocol driver implements data transfers according to 6962306a36Sopenharmony_ci ISO 15765-2:2016 for 'classic' CAN and CAN FD frame types. 7062306a36Sopenharmony_ci If you want to perform automotive vehicle diagnostic services (UDS), 7162306a36Sopenharmony_ci say 'y'. 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ciendif 74