summaryrefslogtreecommitdiffstats
path: root/src/plugins/canbus/socketcan/socketcanbackend.h
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@qt.io>2020-06-12 09:42:48 +0200
committerAlex Blasche <alexander.blasche@qt.io>2020-06-12 09:42:48 +0200
commita733079f1e618ec4a3411e39ebdaeac10614b0ff (patch)
tree4b3158be4d47408987cdec6b3ca53e2e143c91f7 /src/plugins/canbus/socketcan/socketcanbackend.h
parent74f2537d56f7e957a9462247f634c5288a39e985 (diff)
parentc12af8832389785b8be7ffcdddcdb8480c1e124d (diff)
Merge remote-tracking branch 'gerrit/5.15' into dev
Diffstat (limited to 'src/plugins/canbus/socketcan/socketcanbackend.h')
-rw-r--r--src/plugins/canbus/socketcan/socketcanbackend.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/plugins/canbus/socketcan/socketcanbackend.h b/src/plugins/canbus/socketcan/socketcanbackend.h
index 0497244..b6cb5ef 100644
--- a/src/plugins/canbus/socketcan/socketcanbackend.h
+++ b/src/plugins/canbus/socketcan/socketcanbackend.h
@@ -54,6 +54,30 @@
#include <memory>
+#ifndef CANFD_MTU
+// CAN FD support was added by Linux kernel 3.6
+// For prior kernels we redefine the missing defines here
+// they are taken from linux/can/raw.h & linux/can.h
+
+enum {
+ CAN_RAW_FD_FRAMES = 5
+};
+
+#define CAN_MAX_DLEN 8
+#define CANFD_MAX_DLEN 64
+struct canfd_frame {
+ canid_t can_id; /* 32 bit CAN_ID + EFF/RTR/ERR flags */
+ __u8 len; /* frame payload length in byte */
+ __u8 flags; /* additional flags for CAN FD */
+ __u8 __res0; /* reserved / padding */
+ __u8 __res1; /* reserved / padding */
+ __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
+};
+#define CAN_MTU (sizeof(struct can_frame))
+#define CANFD_MTU (sizeof(struct canfd_frame))
+
+#endif
+
QT_BEGIN_NAMESPACE
class LibSocketCan;