]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
can: Add support for CAN FD non-ISO feature
authorOliver Hartkopp <socketcan@hartkopp.net>
Thu, 22 Jan 2015 18:04:33 +0000 (19:04 +0100)
committerStephen Hemminger <shemming@brocade.com>
Thu, 5 Feb 2015 18:35:24 +0000 (10:35 -0800)
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: Oliver Hartkopp <socketcan@hartkopp.net>
ip/iplink_can.c

index fb5033218cff456fa33f1f0a15dee109d61fc065..f1b089dfa87061ca83dd5dfbf39dff8c8bd946ee 100644 (file)
@@ -37,6 +37,7 @@ static void print_usage(FILE *f)
                "\t[ one-shot { on | off } ]\n"
                "\t[ berr-reporting { on | off } ]\n"
                "\t[ fd { on | off } ]\n"
+               "\t[ fd-non-iso { on | off } ]\n"
                "\t[ presume-ack { on | off } ]\n"
                "\n"
                "\t[ restart-ms TIME-MS ]\n"
@@ -100,6 +101,7 @@ static void print_ctrlmode(FILE *f, __u32 cm)
        _PF(CAN_CTRLMODE_ONE_SHOT, "ONE-SHOT");
        _PF(CAN_CTRLMODE_BERR_REPORTING, "BERR-REPORTING");
        _PF(CAN_CTRLMODE_FD, "FD");
+       _PF(CAN_CTRLMODE_FD_NON_ISO, "FD-NON-ISO");
        _PF(CAN_CTRLMODE_PRESUME_ACK, "PRESUME-ACK");
 #undef _PF
        if (cm)
@@ -203,6 +205,10 @@ static int can_parse_opt(struct link_util *lu, int argc, char **argv,
                        NEXT_ARG();
                        set_ctrlmode("fd", *argv, &cm,
                                     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) {
                        NEXT_ARG();
                        set_ctrlmode("presume-ack", *argv, &cm,