1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyun# 3*4882a593Smuzhiyun# Controller Area Network (CAN) network layer core configuration 4*4882a593Smuzhiyun# 5*4882a593Smuzhiyun 6*4882a593Smuzhiyunmenuconfig CAN 7*4882a593Smuzhiyun depends on NET 8*4882a593Smuzhiyun tristate "CAN bus subsystem support" 9*4882a593Smuzhiyun help 10*4882a593Smuzhiyun Controller Area Network (CAN) is a slow (up to 1Mbit/s) serial 11*4882a593Smuzhiyun communications protocol. Development of the CAN bus started in 12*4882a593Smuzhiyun 1983 at Robert Bosch GmbH, and the protocol was officially 13*4882a593Smuzhiyun released in 1986. The CAN bus was originally mainly for automotive, 14*4882a593Smuzhiyun but is now widely used in marine (NMEA2000), industrial, and medical 15*4882a593Smuzhiyun applications. More information on the CAN network protocol family 16*4882a593Smuzhiyun PF_CAN is contained in <Documentation/networking/can.rst>. 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun If you want CAN support you should say Y here and also to the 19*4882a593Smuzhiyun specific driver for your controller(s) below. 20*4882a593Smuzhiyun 21*4882a593Smuzhiyunif CAN 22*4882a593Smuzhiyun 23*4882a593Smuzhiyunconfig CAN_RAW 24*4882a593Smuzhiyun tristate "Raw CAN Protocol (raw access with CAN-ID filtering)" 25*4882a593Smuzhiyun default y 26*4882a593Smuzhiyun help 27*4882a593Smuzhiyun The raw CAN protocol option offers access to the CAN bus via 28*4882a593Smuzhiyun the BSD socket API. You probably want to use the raw socket in 29*4882a593Smuzhiyun most cases where no higher level protocol is being used. The raw 30*4882a593Smuzhiyun socket has several filter options e.g. ID masking / error frames. 31*4882a593Smuzhiyun To receive/send raw CAN messages, use AF_CAN with protocol CAN_RAW. 32*4882a593Smuzhiyun 33*4882a593Smuzhiyunconfig CAN_BCM 34*4882a593Smuzhiyun tristate "Broadcast Manager CAN Protocol (with content filtering)" 35*4882a593Smuzhiyun default y 36*4882a593Smuzhiyun help 37*4882a593Smuzhiyun The Broadcast Manager offers content filtering, timeout monitoring, 38*4882a593Smuzhiyun sending of RTR frames, and cyclic CAN messages without permanent user 39*4882a593Smuzhiyun interaction. The BCM can be 'programmed' via the BSD socket API and 40*4882a593Smuzhiyun informs you on demand e.g. only on content updates / timeouts. 41*4882a593Smuzhiyun You probably want to use the bcm socket in most cases where cyclic 42*4882a593Smuzhiyun CAN messages are used on the bus (e.g. in automotive environments). 43*4882a593Smuzhiyun To use the Broadcast Manager, use AF_CAN with protocol CAN_BCM. 44*4882a593Smuzhiyun 45*4882a593Smuzhiyunconfig CAN_GW 46*4882a593Smuzhiyun tristate "CAN Gateway/Router (with netlink configuration)" 47*4882a593Smuzhiyun default y 48*4882a593Smuzhiyun help 49*4882a593Smuzhiyun The CAN Gateway/Router is used to route (and modify) CAN frames. 50*4882a593Smuzhiyun It is based on the PF_CAN core infrastructure for msg filtering and 51*4882a593Smuzhiyun msg sending and can optionally modify routed CAN frames on the fly. 52*4882a593Smuzhiyun CAN frames can be routed between CAN network interfaces (one hop). 53*4882a593Smuzhiyun They can be modified with AND/OR/XOR/SET operations as configured 54*4882a593Smuzhiyun by the netlink configuration interface known e.g. from iptables. 55*4882a593Smuzhiyun 56*4882a593Smuzhiyunsource "net/can/j1939/Kconfig" 57*4882a593Smuzhiyun 58*4882a593Smuzhiyunconfig CAN_ISOTP 59*4882a593Smuzhiyun tristate "ISO 15765-2:2016 CAN transport protocol" 60*4882a593Smuzhiyun help 61*4882a593Smuzhiyun CAN Transport Protocols offer support for segmented Point-to-Point 62*4882a593Smuzhiyun communication between CAN nodes via two defined CAN Identifiers. 63*4882a593Smuzhiyun As CAN frames can only transport a small amount of data bytes 64*4882a593Smuzhiyun (max. 8 bytes for 'classic' CAN and max. 64 bytes for CAN FD) this 65*4882a593Smuzhiyun segmentation is needed to transport longer Protocol Data Units (PDU) 66*4882a593Smuzhiyun as needed e.g. for vehicle diagnosis (UDS, ISO 14229) or IP-over-CAN 67*4882a593Smuzhiyun traffic. 68*4882a593Smuzhiyun This protocol driver implements data transfers according to 69*4882a593Smuzhiyun ISO 15765-2:2016 for 'classic' CAN and CAN FD frame types. 70*4882a593Smuzhiyun If you want to perform automotive vehicle diagnostic services (UDS), 71*4882a593Smuzhiyun say 'y'. 72*4882a593Smuzhiyun 73*4882a593Smuzhiyunsource "drivers/net/can/Kconfig" 74*4882a593Smuzhiyun 75*4882a593Smuzhiyunendif 76