1224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 2224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * linux/can.h 3224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 4224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Definitions for CAN network layer (socket addr / CAN frame / CAN filter) 5224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 6224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Authors: Oliver Hartkopp <oliver.hartkopp@volkswagen.de> 7224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Urs Thuermann <urs.thuermann@volkswagen.de> 8224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Copyright (c) 2002-2007 Volkswagen Group Electronic Research 9224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * All rights reserved. 10224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 11314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * Redistribution and use in source and binary forms, with or without 12314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * modification, are permitted provided that the following conditions 13314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * are met: 14314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * 1. Redistributions of source code must retain the above copyright 15314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * notice, this list of conditions and the following disclaimer. 16314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * 2. Redistributions in binary form must reproduce the above copyright 17314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * notice, this list of conditions and the following disclaimer in the 18314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * documentation and/or other materials provided with the distribution. 19314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * 3. Neither the name of Volkswagen nor the names of its contributors 20314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * may be used to endorse or promote products derived from this software 21314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * without specific prior written permission. 22314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * 23314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * Alternatively, provided that this notice is retained in full, this 24314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * software may be distributed under the terms of the GNU General 25314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * Public License ("GPL") version 2, in which case the provisions of the 26314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * GPL apply INSTEAD OF those given above. 27314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * 28314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * The provided data structures and external interfaces from this code 29314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * are not restricted to be used by modules with a GPL compatible license. 30314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * 31314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 34314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 36314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 37314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 38314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 39314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 40314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 41314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 42314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris * DAMAGE. 43224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 44224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 45314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#ifndef _UAPI_CAN_H 46314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#define _UAPI_CAN_H 47224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 48224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <linux/types.h> 49224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#include <linux/socket.h> 50224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 51224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* controller area network (CAN) kernel definitions */ 52224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 53224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* special address description flags for the CAN_ID */ 54224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_EFF_FLAG 0x80000000U /* EFF/SFF is set in the MSB */ 55224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_RTR_FLAG 0x40000000U /* remote transmission request */ 56224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_ERR_FLAG 0x20000000U /* error message frame */ 57224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 58224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* valid bits in CAN ID for frame formats */ 59224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_SFF_MASK 0x000007FFU /* standard frame format (SFF) */ 60224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_EFF_MASK 0x1FFFFFFFU /* extended frame format (EFF) */ 61224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_ERR_MASK 0x1FFFFFFFU /* omit EFF, RTR, ERR flags */ 62224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 63224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 64224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Controller Area Network Identifier structure 65224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 66224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * bit 0-28 : CAN identifier (11/29 bit) 67224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * bit 29 : error message frame flag (0 = data frame, 1 = error message) 68224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * bit 30 : remote transmission request flag (1 = rtr frame) 69224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * bit 31 : frame format flag (0 = standard 11 bit, 1 = extended 29 bit) 70224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 71224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengtypedef __u32 canid_t; 72224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 73224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_SFF_ID_BITS 11 74224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_EFF_ID_BITS 29 75224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 76224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 77224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Controller Area Network Error Message Frame Mask structure 78224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 79224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * bit 0-28 : error class mask (see include/linux/can/error.h) 80224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * bit 29-31 : set to zero 81224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 82224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengtypedef __u32 can_err_mask_t; 83224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 84224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* CAN payload length and DLC definitions according to ISO 11898-1 */ 85224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_MAX_DLC 8 86224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_MAX_DLEN 8 87224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 88224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* CAN FD payload length and DLC definitions according to ISO 11898-7 */ 89224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CANFD_MAX_DLC 15 90224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CANFD_MAX_DLEN 64 91224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 92224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/** 93224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * struct can_frame - basic CAN frame structure 94224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @can_id: CAN ID of the frame and CAN_*_FLAG flags, see canid_t definition 95224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @can_dlc: frame payload length in byte (0 .. 8) aka data length code 96224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * N.B. the DLC field from ISO 11898-1 Chapter 8.4.2.3 has a 1:1 97224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * mapping of the 'data length code' to the real payload length 9812e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris * @__pad: padding 9912e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris * @__res0: reserved / padding 10012e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris * @__res1: reserved / padding 101224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @data: CAN frame payload (up to 8 byte) 102224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 103224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct can_frame { 104224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng canid_t can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */ 105224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 can_dlc; /* frame payload length in byte (0 .. CAN_MAX_DLEN) */ 10612e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris __u8 __pad; /* padding */ 10712e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris __u8 __res0; /* reserved / padding */ 10812e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris __u8 __res1; /* reserved / padding */ 109224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 data[CAN_MAX_DLEN] __attribute__((aligned(8))); 110224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 111224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 112224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* 113224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * defined bits for canfd_frame.flags 114224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 115224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * The use of struct canfd_frame implies the Extended Data Length (EDL) bit to 116224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * be set in the CAN frame bitstream on the wire. The EDL bit switch turns 117224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * the CAN controllers bitstream processor into the CAN FD mode which creates 118224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * two new options within the CAN FD frame specification: 119224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 120224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Bit Rate Switch - to indicate a second bitrate is/was used for the payload 121224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Error State Indicator - represents the error state of the transmitting node 122224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 123224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * As the CANFD_ESI bit is internally generated by the transmitting CAN 124224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * controller only the CANFD_BRS bit is relevant for real CAN controllers when 125224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * building a CAN FD frame for transmission. Setting the CANFD_ESI bit can make 126224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * sense for virtual CAN interfaces to test applications with echoed frames. 127224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 128224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CANFD_BRS 0x01 /* bit rate switch (second bitrate for payload data) */ 129224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CANFD_ESI 0x02 /* error state indicator of the transmitting node */ 130224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 131224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/** 132224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * struct canfd_frame - CAN flexible data rate frame structure 133224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @can_id: CAN ID of the frame and CAN_*_FLAG flags, see canid_t definition 134224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @len: frame payload length in byte (0 .. CANFD_MAX_DLEN) 135224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @flags: additional flags for CAN FD 136224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @__res0: reserved / padding 137224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @__res1: reserved / padding 138224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @data: CAN FD frame payload (up to CANFD_MAX_DLEN byte) 139224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 140224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct canfd_frame { 141224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng canid_t can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */ 142224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 len; /* frame payload length in byte */ 143224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 flags; /* additional flags for CAN FD */ 144224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 __res0; /* reserved / padding */ 145224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 __res1; /* reserved / padding */ 146224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8))); 147224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 148224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 149224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_MTU (sizeof(struct can_frame)) 150224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CANFD_MTU (sizeof(struct canfd_frame)) 151224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 152224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/* particular protocols of the protocol family PF_CAN */ 153224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_RAW 1 /* RAW sockets */ 154224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_BCM 2 /* Broadcast Manager */ 155224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_TP16 3 /* VAG Transport Protocol v1.6 */ 156224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_TP20 4 /* VAG Transport Protocol v2.0 */ 157224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_MCNET 5 /* Bosch MCNet */ 158224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_ISOTP 6 /* ISO 15765-2 Transport Protocol */ 159224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_NPROTO 7 160224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 161224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define SOL_CAN_BASE 100 162224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 163224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/** 164224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * struct sockaddr_can - the sockaddr structure for CAN sockets 165224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @can_family: address family number AF_CAN. 166224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @can_ifindex: CAN network interface index. 167224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @can_addr: protocol specific address information 168224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 169224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct sockaddr_can { 170224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng __kernel_sa_family_t can_family; 171224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng int can_ifindex; 172224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng union { 173224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* transport protocol class address information (e.g. ISOTP) */ 174224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng struct { canid_t rx_id, tx_id; } tp; 175224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 176224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng /* reserved for future CAN protocols address information */ 177224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng } can_addr; 178224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 179224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 180224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng/** 181224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * struct can_filter - CAN ID based filter in can_register(). 182224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @can_id: relevant bits of CAN ID which are not masked out. 183224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * @can_mask: CAN mask (see description) 184224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 185224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * Description: 186224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * A filter matches, when 187224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 188224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * <received_can_id> & mask == can_id & mask 189224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * 190224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * The filter can be inverted (CAN_INV_FILTER bit set in can_id) or it can 191224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng * filter for error message frames (CAN_ERR_FLAG bit set in mask). 192224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng */ 193224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Chengstruct can_filter { 194224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng canid_t can_id; 195224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng canid_t can_mask; 196224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng}; 197224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 198224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng#define CAN_INV_FILTER 0x20000000U /* to be set in can_filter.can_id */ 199224b54f69543a5c0ec18f99bd717d2b724582eb6Ben Cheng 200314752488cb92b9f86028836d0b8eabd8acb6a7cChristopher Ferris#endif /* !_UAPI_CAN_H */ 201