Commit 82a307e8 authored by Oliver Hartkopp's avatar Oliver Hartkopp Committed by Stephen Hemminger

can: Add support for CAN FD non-ISO feature

This patch makes CAN_CTRLMODE_FD_NON_ISO netlink feature configurable.

During the CAN FD standardization process within the ISO it turned out that
the failure detection capability has to be improved.

The CAN in Automation organization (CiA) defined the already implemented CAN
FD controllers as 'non-ISO' and the upcoming improved CAN FD controllers as
'ISO' compliant. See at http://www.can-cia.com/index.php?id=1937

Starting with the - currently non-ISO - driver for M_CAN v3.0.1 introduced in
Linux 3.18 this bit needs to be propagated to userspace. In future drivers this
bit will become configurable depending on the CAN FD controllers capabilities.
Signed-off-by: default avatarOliver Hartkopp <socketcan@hartkopp.net>
parent 5e5055bc
...@@ -37,6 +37,7 @@ static void print_usage(FILE *f) ...@@ -37,6 +37,7 @@ static void print_usage(FILE *f)
"\t[ one-shot { on | off } ]\n" "\t[ one-shot { on | off } ]\n"
"\t[ berr-reporting { on | off } ]\n" "\t[ berr-reporting { on | off } ]\n"
"\t[ fd { on | off } ]\n" "\t[ fd { on | off } ]\n"
"\t[ fd-non-iso { on | off } ]\n"
"\t[ presume-ack { on | off } ]\n" "\t[ presume-ack { on | off } ]\n"
"\n" "\n"
"\t[ restart-ms TIME-MS ]\n" "\t[ restart-ms TIME-MS ]\n"
...@@ -100,6 +101,7 @@ static void print_ctrlmode(FILE *f, __u32 cm) ...@@ -100,6 +101,7 @@ static void print_ctrlmode(FILE *f, __u32 cm)
_PF(CAN_CTRLMODE_ONE_SHOT, "ONE-SHOT"); _PF(CAN_CTRLMODE_ONE_SHOT, "ONE-SHOT");
_PF(CAN_CTRLMODE_BERR_REPORTING, "BERR-REPORTING"); _PF(CAN_CTRLMODE_BERR_REPORTING, "BERR-REPORTING");
_PF(CAN_CTRLMODE_FD, "FD"); _PF(CAN_CTRLMODE_FD, "FD");
_PF(CAN_CTRLMODE_FD_NON_ISO, "FD-NON-ISO");
_PF(CAN_CTRLMODE_PRESUME_ACK, "PRESUME-ACK"); _PF(CAN_CTRLMODE_PRESUME_ACK, "PRESUME-ACK");
#undef _PF #undef _PF
if (cm) if (cm)
...@@ -203,6 +205,10 @@ static int can_parse_opt(struct link_util *lu, int argc, char **argv, ...@@ -203,6 +205,10 @@ static int can_parse_opt(struct link_util *lu, int argc, char **argv,
NEXT_ARG(); NEXT_ARG();
set_ctrlmode("fd", *argv, &cm, set_ctrlmode("fd", *argv, &cm,
CAN_CTRLMODE_FD); CAN_CTRLMODE_FD);
} else if (matches(*argv, "fd-non-iso") == 0) {
NEXT_ARG();
set_ctrlmode("fd-non-iso", *argv, &cm,
CAN_CTRLMODE_FD_NON_ISO);
} else if (matches(*argv, "presume-ack") == 0) { } else if (matches(*argv, "presume-ack") == 0) {
NEXT_ARG(); NEXT_ARG();
set_ctrlmode("presume-ack", *argv, &cm, set_ctrlmode("presume-ack", *argv, &cm,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment