[RFC PATCH 0/6] This series originates from some tests I ran on a CAN communication for

From: Dario Binacchi
Date: Mon Oct 14 2024 - 11:25:52 EST


one of my clients that reports sporadic errors. After enabling BERR
reporting, I was surprised that the command:

ip -details -statistics link show can0

did not display the occurrence of different types of errors, but only the
generic ones for reception and transmission. In trying to export this
information, I felt that the code related to managing statistics and handling
CAN errors (CRC, STUF, BIT, ACK, and FORM) was quite duplicated in the
implementation of various drivers, and there wasn't a generic function like
in the case of state changes (i. e. can_change_state). This led to the idea
of adding can_update_bus_error_stats() and the helpers for setting up the
CAN error frame.

Regarding patch 5/6 ("can: netlink: extend stats to the error types (ack,
CRC, form, ..."), I ran

./scripts/check-uapi.sh

which found

"error - 1/934 UAPI headers compatible with x86 appear _not_ to be backwards
compatible."

I included it in the series because I am currently interested in understanding
whether the idea behind each of the submitted patches makes sense, and I can
adjust them later if the response is positive, following your suggestions.


Dario Binacchi (6):
can: dev: add generic function can_update_bus_error_stats()
can: flexcan: use can_update_bus_error_stats()
can: dev: add helper macros to setup an error frame
can: flexcan: use helper macros to setup the error frame
can: netlink: extend stats to the error types (ack, CRC, form, ...)
can: dev: update the error types stats (ack, CRC, form, ...)

drivers/net/can/dev/dev.c | 45 ++++++++++++++++++++++++++
drivers/net/can/flexcan/flexcan-core.c | 29 +++++------------
include/linux/can/dev.h | 28 ++++++++++++++++
include/uapi/linux/can/netlink.h | 6 ++++
4 files changed, 87 insertions(+), 21 deletions(-)

--
2.43.0