summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-oe/recipes-extended/socketcan/can-utils/0001-lib-snprintf_can_error_frame-don-t-bail-out-if-CAN_E.patch70
-rw-r--r--meta-oe/recipes-extended/socketcan/can-utils_2023.03.bb1
2 files changed, 71 insertions, 0 deletions
diff --git a/meta-oe/recipes-extended/socketcan/can-utils/0001-lib-snprintf_can_error_frame-don-t-bail-out-if-CAN_E.patch b/meta-oe/recipes-extended/socketcan/can-utils/0001-lib-snprintf_can_error_frame-don-t-bail-out-if-CAN_E.patch
new file mode 100644
index 0000000000..f393cce091
--- /dev/null
+++ b/meta-oe/recipes-extended/socketcan/can-utils/0001-lib-snprintf_can_error_frame-don-t-bail-out-if-CAN_E.patch
@@ -0,0 +1,70 @@
1From 7d59157d4d570ba994f7dd07243ac5fb1c541410 Mon Sep 17 00:00:00 2001
2From: Marc Kleine-Budde <mkl@pengutronix.de>
3Date: Wed, 27 Sep 2023 16:15:52 +0200
4Subject: [PATCH] lib: snprintf_can_error_frame(): don't bail out if
5 CAN_ERR_CNT is set
6
7If CAN_ERR_CNT is set, the snprintf_can_error_frame() bails out, as it
8cannot decode CAN_ERR_CNT.
9
10Fixes: 21fb43532e80 ("lib: snprintf_can_error_frame: print counter errors if CAN_ERR_CNT is set")
11
12Upstream-Status: Backport [https://github.com/linux-can/can-utils/commit/7d59157d4d570ba994f7dd07243ac5fb1c541410]
13---
14 lib.c | 23 +++++++++++++++++++----
15 1 file changed, 19 insertions(+), 4 deletions(-)
16
17diff --git a/lib.c b/lib.c
18index d665c69..0201e94 100644
19--- a/lib.c
20+++ b/lib.c
21@@ -499,6 +499,7 @@ static const char *error_classes[] = {
22 "bus-off",
23 "bus-error",
24 "restarted-after-bus-off",
25+ "error-counter-tx-rx",
26 };
27
28 static const char *controller_problems[] = {
29@@ -636,6 +637,19 @@ static int snprintf_error_prot(char *buf, size_t len, const struct canfd_frame *
30 return n;
31 }
32
33+static int snprintf_error_cnt(char *buf, size_t len, const struct canfd_frame *cf)
34+{
35+ int n = 0;
36+
37+ if (len <= 0)
38+ return 0;
39+
40+ n += snprintf(buf + n, len - n, "{{%d}{%d}}",
41+ cf->data[6], cf->data[7]);
42+
43+ return n;
44+}
45+
46 void snprintf_can_error_frame(char *buf, size_t len, const struct canfd_frame *cf,
47 const char* sep)
48 {
49@@ -679,13 +693,14 @@ void snprintf_can_error_frame(char *buf, size_t len, const struct canfd_frame *c
50 n += snprintf_error_ctrl(buf + n, len - n, cf);
51 if (mask == CAN_ERR_PROT)
52 n += snprintf_error_prot(buf + n, len - n, cf);
53+ if (mask == CAN_ERR_CNT)
54+ n += snprintf_error_cnt(buf + n, len - n, cf);
55 classes++;
56 }
57 }
58
59- if (cf->can_id & CAN_ERR_CNT || cf->data[6] || cf->data[7]) {
60- n += snprintf(buf + n, len - n, "%s", sep);
61- n += snprintf(buf + n, len - n, "error-counter-tx-rx{{%d}{%d}}",
62- cf->data[6], cf->data[7]);
63+ if (!(cf->can_id & CAN_ERR_CNT) && (cf->data[6] || cf->data[7])) {
64+ n += snprintf(buf + n, len - n, "%serror-counter-tx-rx", sep);
65+ n += snprintf_error_cnt(buf + n, len - n, cf);
66 }
67 }
68--
692.43.0
70
diff --git a/meta-oe/recipes-extended/socketcan/can-utils_2023.03.bb b/meta-oe/recipes-extended/socketcan/can-utils_2023.03.bb
index 5a7beb978a..0804b514a9 100644
--- a/meta-oe/recipes-extended/socketcan/can-utils_2023.03.bb
+++ b/meta-oe/recipes-extended/socketcan/can-utils_2023.03.bb
@@ -6,6 +6,7 @@ DEPENDS = "libsocketcan"
6 6
7SRC_URI = "git://github.com/linux-can/${BPN}.git;protocol=https;branch=master \ 7SRC_URI = "git://github.com/linux-can/${BPN}.git;protocol=https;branch=master \
8 file://0001-timestamp-formatting-always-use-64-bit-for-timestamp.patch \ 8 file://0001-timestamp-formatting-always-use-64-bit-for-timestamp.patch \
9 file://0001-lib-snprintf_can_error_frame-don-t-bail-out-if-CAN_E.patch \
9" 10"
10 11
11SRCREV = "cfe41963f3425e9adb01a70cfaddedf5e5982720" 12SRCREV = "cfe41963f3425e9adb01a70cfaddedf5e5982720"