18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci# 38c2ecf20Sopenharmony_ci# Controller Area Network (CAN) network layer core configuration 48c2ecf20Sopenharmony_ci# 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_cimenuconfig CAN 78c2ecf20Sopenharmony_ci depends on NET 88c2ecf20Sopenharmony_ci tristate "CAN bus subsystem support" 98c2ecf20Sopenharmony_ci help 108c2ecf20Sopenharmony_ci Controller Area Network (CAN) is a slow (up to 1Mbit/s) serial 118c2ecf20Sopenharmony_ci communications protocol. Development of the CAN bus started in 128c2ecf20Sopenharmony_ci 1983 at Robert Bosch GmbH, and the protocol was officially 138c2ecf20Sopenharmony_ci released in 1986. The CAN bus was originally mainly for automotive, 148c2ecf20Sopenharmony_ci but is now widely used in marine (NMEA2000), industrial, and medical 158c2ecf20Sopenharmony_ci applications. More information on the CAN network protocol family 168c2ecf20Sopenharmony_ci PF_CAN is contained in <Documentation/networking/can.rst>. 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci If you want CAN support you should say Y here and also to the 198c2ecf20Sopenharmony_ci specific driver for your controller(s) below. 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ciif CAN 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ciconfig CAN_RAW 248c2ecf20Sopenharmony_ci tristate "Raw CAN Protocol (raw access with CAN-ID filtering)" 258c2ecf20Sopenharmony_ci default y 268c2ecf20Sopenharmony_ci help 278c2ecf20Sopenharmony_ci The raw CAN protocol option offers access to the CAN bus via 288c2ecf20Sopenharmony_ci the BSD socket API. You probably want to use the raw socket in 298c2ecf20Sopenharmony_ci most cases where no higher level protocol is being used. The raw 308c2ecf20Sopenharmony_ci socket has several filter options e.g. ID masking / error frames. 318c2ecf20Sopenharmony_ci To receive/send raw CAN messages, use AF_CAN with protocol CAN_RAW. 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ciconfig CAN_BCM 348c2ecf20Sopenharmony_ci tristate "Broadcast Manager CAN Protocol (with content filtering)" 358c2ecf20Sopenharmony_ci default y 368c2ecf20Sopenharmony_ci help 378c2ecf20Sopenharmony_ci The Broadcast Manager offers content filtering, timeout monitoring, 388c2ecf20Sopenharmony_ci sending of RTR frames, and cyclic CAN messages without permanent user 398c2ecf20Sopenharmony_ci interaction. The BCM can be 'programmed' via the BSD socket API and 408c2ecf20Sopenharmony_ci informs you on demand e.g. only on content updates / timeouts. 418c2ecf20Sopenharmony_ci You probably want to use the bcm socket in most cases where cyclic 428c2ecf20Sopenharmony_ci CAN messages are used on the bus (e.g. in automotive environments). 438c2ecf20Sopenharmony_ci To use the Broadcast Manager, use AF_CAN with protocol CAN_BCM. 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ciconfig CAN_GW 468c2ecf20Sopenharmony_ci tristate "CAN Gateway/Router (with netlink configuration)" 478c2ecf20Sopenharmony_ci default y 488c2ecf20Sopenharmony_ci help 498c2ecf20Sopenharmony_ci The CAN Gateway/Router is used to route (and modify) CAN frames. 508c2ecf20Sopenharmony_ci It is based on the PF_CAN core infrastructure for msg filtering and 518c2ecf20Sopenharmony_ci msg sending and can optionally modify routed CAN frames on the fly. 528c2ecf20Sopenharmony_ci CAN frames can be routed between CAN network interfaces (one hop). 538c2ecf20Sopenharmony_ci They can be modified with AND/OR/XOR/SET operations as configured 548c2ecf20Sopenharmony_ci by the netlink configuration interface known e.g. from iptables. 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_cisource "net/can/j1939/Kconfig" 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ciconfig CAN_ISOTP 598c2ecf20Sopenharmony_ci tristate "ISO 15765-2:2016 CAN transport protocol" 608c2ecf20Sopenharmony_ci help 618c2ecf20Sopenharmony_ci CAN Transport Protocols offer support for segmented Point-to-Point 628c2ecf20Sopenharmony_ci communication between CAN nodes via two defined CAN Identifiers. 638c2ecf20Sopenharmony_ci As CAN frames can only transport a small amount of data bytes 648c2ecf20Sopenharmony_ci (max. 8 bytes for 'classic' CAN and max. 64 bytes for CAN FD) this 658c2ecf20Sopenharmony_ci segmentation is needed to transport longer Protocol Data Units (PDU) 668c2ecf20Sopenharmony_ci as needed e.g. for vehicle diagnosis (UDS, ISO 14229) or IP-over-CAN 678c2ecf20Sopenharmony_ci traffic. 688c2ecf20Sopenharmony_ci This protocol driver implements data transfers according to 698c2ecf20Sopenharmony_ci ISO 15765-2:2016 for 'classic' CAN and CAN FD frame types. 708c2ecf20Sopenharmony_ci If you want to perform automotive vehicle diagnostic services (UDS), 718c2ecf20Sopenharmony_ci say 'y'. 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_cisource "drivers/net/can/Kconfig" 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_ciendif 76