Skip to contentSkip to conversation

can: isotp: remove ISO 15675-2 specification version where possible

PATCH Applied Oliver Hartkopp 4 participants 6 messages Apr 20, 2024 – Apr 29, 2024

Subsystems (2)
lore
Share & tools
lore

Oliver Hartkopp

author maintainer
#0 lore raw

PATCH 1/1 can: isotp: remove ISO 15675-2 specification version where possible

With the new ISO 15765-2:2024 release the former documentation and comments have to be reworked. This patch removes the ISO specification version/date where possible.

---
 include/uapi/linux/can/isotp.h |  2 +-
 net/can/Kconfig                | 11 +++++------
 net/can/isotp.c                | 11 ++++++-----
 3 files changed, 12 insertions(+), 12 deletions(-)
include/uapi/linux/can/isotp.h +1 -1
index 6cde62371b6f..bd990917f7c4 100644
@@ -1,10 +1,10 @@
 /* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */
 /*
  * linux/can/isotp.h
  *
- * Definitions for isotp CAN sockets (ISO 15765-2:2016)
+ * Definitions for ISO 15765-2 CAN transport protocol sockets
  *
  * Copyright (c) 2020 Volkswagen Group Electronic Research
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
net/can/Kconfig +5 -6
index cb56be8e3862..af64a6f76458 100644
@@ -54,20 +54,19 @@ config CAN_GW
 	  by the netlink configuration interface known e.g. from iptables.
 
 source "net/can/j1939/Kconfig"
 
 config CAN_ISOTP
-	tristate "ISO 15765-2:2016 CAN transport protocol"
+	tristate "ISO 15765-2 CAN transport protocol"
 	help
 	  CAN Transport Protocols offer support for segmented Point-to-Point
 	  communication between CAN nodes via two defined CAN Identifiers.
+	  This protocol driver implements segmented data transfers for CAN CC
+	  (aka Classical CAN, CAN 2.0B) and CAN FD frame types which were
+	  introduced with ISO 15765-2:2016.
 	  As CAN frames can only transport a small amount of data bytes
-	  (max. 8 bytes for 'classic' CAN and max. 64 bytes for CAN FD) this
+	  (max. 8 bytes for CAN CC and max. 64 bytes for CAN FD) this
 	  segmentation is needed to transport longer Protocol Data Units (PDU)
 	  as needed e.g. for vehicle diagnosis (UDS, ISO 14229) or IP-over-CAN
 	  traffic.
-	  This protocol driver implements data transfers according to
-	  ISO 15765-2:2016 for 'classic' CAN and CAN FD frame types.
-	  If you want to perform automotive vehicle diagnostic services (UDS),
-	  say 'y'.
 
 endif
net/can/isotp.c +6 -5
index 25bac0fafc83..16046931542a 100644
@@ -70,25 +70,26 @@
 #include <linux/can/isotp.h>
 #include <linux/slab.h>
 #include <net/sock.h>
 #include <net/net_namespace.h>
 
-MODULE_DESCRIPTION("PF_CAN isotp 15765-2:2016 protocol");
+MODULE_DESCRIPTION("PF_CAN ISO 15765-2 transport protocol");
 MODULE_LICENSE("Dual BSD/GPL");
 MODULE_AUTHOR("Oliver Hartkopp <[email protected]>");
 MODULE_ALIAS("can-proto-6");
 
 #define ISOTP_MIN_NAMELEN CAN_REQUIRED_SIZE(struct sockaddr_can, can_addr.tp)
 
 #define SINGLE_MASK(id) (((id) & CAN_EFF_FLAG) ? \
 			 (CAN_EFF_MASK | CAN_EFF_FLAG | CAN_RTR_FLAG) : \
 			 (CAN_SFF_MASK | CAN_EFF_FLAG | CAN_RTR_FLAG))
 
-/* ISO 15765-2:2016 supports more than 4095 byte per ISO PDU as the FF_DL can
- * take full 32 bit values (4 Gbyte). We would need some good concept to handle
- * this between user space and kernel space. For now set the static buffer to
- * something about 8 kbyte to be able to test this new functionality.
+/* Since ISO 15765-2:2016 the CAN isotp protocol supports more than 4095
+ * byte per ISO PDU as the FF_DL can take full 32 bit values (4 Gbyte).
+ * We would need some good concept to handle this between user space and
+ * kernel space. For now set the static buffer to something about 8 kbyte
+ * to be able to test this new functionality.
  */
 #define DEFAULT_MAX_PDU_SIZE 8300
 
 /* maximum PDU size before ISO 15765-2:2016 extension was 4095 */
 #define MAX_12BIT_PDU_SIZE 4095
Signature · 1 line
2.39.2
Acked-by on v1 1/1
#1 lore raw
Quoted 3 lines · Oliver Hartkopp

With the new ISO 15765-2:2024 release the former documentation and comments have to be reworked. This patch removes the ISO specification version/date where possible.

The patch also renames "classical CAN" into "CAN CC", which is fine but maybe add one sentence in the patch description for that.

Aside from that nitpick, one comment (see below). Meanwhile, I am giving my acknowledgement in advance:

Thank you.

Quoted 41 lines
---
 include/uapi/linux/can/isotp.h |  2 +-
 net/can/Kconfig                | 11 +++++------
 net/can/isotp.c                | 11 ++++++-----
 3 files changed, 12 insertions(+), 12 deletions(-)
include/uapi/linux/can/isotp.h +1 -1
index 6cde62371b6f..bd990917f7c4 100644
@@ -1,10 +1,10 @@
 /* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */
 /*
  * linux/can/isotp.h
  *
- * Definitions for isotp CAN sockets (ISO 15765-2:2016)
+ * Definitions for ISO 15765-2 CAN transport protocol sockets
  *
  * Copyright (c) 2020 Volkswagen Group Electronic Research
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
net/can/Kconfig +4 -1
index cb56be8e3862..af64a6f76458 100644
@@ -54,20 +54,19 @@ config CAN_GW
          by the netlink configuration interface known e.g. from iptables.
 
 source "net/can/j1939/Kconfig"
 
 config CAN_ISOTP
-       tristate "ISO 15765-2:2016 CAN transport protocol"
+       tristate "ISO 15765-2 CAN transport protocol"
        help
          CAN Transport Protocols offer support for segmented Point-to-Point
          communication between CAN nodes via two defined CAN Identifiers.
+         This protocol driver implements segmented data transfers for CAN CC
+         (aka Classical CAN, CAN 2.0B) and CAN FD frame types which were
+         introduced with ISO 15765-2:2016.

net/can/Kconfig config CAN_GW · line 71

Quoted 10 lines
net/can/Kconfig +1 -5
          As CAN frames can only transport a small amount of data bytes
-         (max. 8 bytes for 'classic' CAN and max. 64 bytes for CAN FD) this
+         (max. 8 bytes for CAN CC and max. 64 bytes for CAN FD) this
          segmentation is needed to transport longer Protocol Data Units (PDU)
          as needed e.g. for vehicle diagnosis (UDS, ISO 14229) or IP-over-CAN
          traffic.
-         This protocol driver implements data transfers according to
-         ISO 15765-2:2016 for 'classic' CAN and CAN FD frame types.
-         If you want to perform automotive vehicle diagnostic services (UDS),
-         say 'y'.

Not sure why that last sentence was removed. This is out of scope from this patch and I think this can be helpful for the audience not aware that UDS relies on ISO-TP. I suggest keeping that one.

Quoted 42 lines
net/can/Kconfig +0 -0
 endif
net/can/isotp.c +6 -6
index 25bac0fafc83..16046931542a 100644
@@ -70,25 +70,26 @@
 #include <linux/can/isotp.h>
 #include <linux/slab.h>
 #include <net/sock.h>
 #include <net/net_namespace.h>
 
-MODULE_DESCRIPTION("PF_CAN isotp 15765-2:2016 protocol");
+MODULE_DESCRIPTION("PF_CAN ISO 15765-2 transport protocol");
 MODULE_LICENSE("Dual BSD/GPL");
 MODULE_AUTHOR("Oliver Hartkopp <[email protected]>");
 MODULE_ALIAS("can-proto-6");
 
 #define ISOTP_MIN_NAMELEN CAN_REQUIRED_SIZE(struct sockaddr_can, can_addr.tp)
 
 #define SINGLE_MASK(id) (((id) & CAN_EFF_FLAG) ? \
                         (CAN_EFF_MASK | CAN_EFF_FLAG | CAN_RTR_FLAG) : \
                         (CAN_SFF_MASK | CAN_EFF_FLAG | CAN_RTR_FLAG))
 
-/* ISO 15765-2:2016 supports more than 4095 byte per ISO PDU as the FF_DL can
- * take full 32 bit values (4 Gbyte). We would need some good concept to handle
- * this between user space and kernel space. For now set the static buffer to
- * something about 8 kbyte to be able to test this new functionality.
+/* Since ISO 15765-2:2016 the CAN isotp protocol supports more than 4095
+ * byte per ISO PDU as the FF_DL can take full 32 bit values (4 Gbyte).
+ * We would need some good concept to handle this between user space and
+ * kernel space. For now set the static buffer to something about 8 kbyte
+ * to be able to test this new functionality.
  */
 #define DEFAULT_MAX_PDU_SIZE 8300
 
 /* maximum PDU size before ISO 15765-2:2016 extension was 4095 */
 #define MAX_12BIT_PDU_SIZE 4095
--

2.39.2

author maintainer
#2 lore raw
Quoted 7 lines · Vincent Mailhol
Quoted 3 lines · Oliver Hartkopp

With the new ISO 15765-2:2024 release the former documentation and comments have to be reworked. This patch removes the ISO specification version/date where possible.

The patch also renames "classical CAN" into "CAN CC", which is fine but maybe add one sentence in the patch description for that.

Hm, IMO this is an editorial update without any new information.

Quoted 54 lines

Aside from that nitpick, one comment (see below). Meanwhile, I am giving my acknowledgement in advance:

Thank you.

Quoted 47 lines
---
  include/uapi/linux/can/isotp.h |  2 +-
  net/can/Kconfig                | 11 +++++------
  net/can/isotp.c                | 11 ++++++-----
  3 files changed, 12 insertions(+), 12 deletions(-)
include/uapi/linux/can/isotp.h +1 -1
index 6cde62371b6f..bd990917f7c4 100644
@@ -1,10 +1,10 @@
  /* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */
  /*
   * linux/can/isotp.h
   *
- * Definitions for isotp CAN sockets (ISO 15765-2:2016)
+ * Definitions for ISO 15765-2 CAN transport protocol sockets
   *
   * Copyright (c) 2020 Volkswagen Group Electronic Research
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
net/can/Kconfig +5 -2
index cb56be8e3862..af64a6f76458 100644
@@ -54,20 +54,19 @@ config CAN_GW
           by the netlink configuration interface known e.g. from iptables.
 
  source "net/can/j1939/Kconfig"
 
  config CAN_ISOTP
-       tristate "ISO 15765-2:2016 CAN transport protocol"
+       tristate "ISO 15765-2 CAN transport protocol"
         help
           CAN Transport Protocols offer support for segmented Point-to-Point
           communication between CAN nodes via two defined CAN Identifiers.
+         This protocol driver implements segmented data transfers for CAN CC
+         (aka Classical CAN, CAN 2.0B) and CAN FD frame types which were
+         introduced with ISO 15765-2:2016.
           As CAN frames can only transport a small amount of data bytes
-         (max. 8 bytes for 'classic' CAN and max. 64 bytes for CAN FD) this
+         (max. 8 bytes for CAN CC and max. 64 bytes for CAN FD) this
           segmentation is needed to transport longer Protocol Data Units (PDU)
           as needed e.g. for vehicle diagnosis (UDS, ISO 14229) or IP-over-CAN
           traffic.
Quoted 8 lines

net/can/Kconfig config CAN_GW · line 71

Quoted 4 lines
net/can/Kconfig +0 -4
-         This protocol driver implements data transfers according to
-         ISO 15765-2:2016 for 'classic' CAN and CAN FD frame types.
-         If you want to perform automotive vehicle diagnostic services (UDS),
-         say 'y'.

Not sure why that last sentence was removed. This is out of scope from this patch and I think this can be helpful for the audience not aware that UDS relies on ISO-TP. I suggest keeping that one.

This is a repetition of ...

"segmentation is needed to transport longer Protocol Data Units (PDU) as needed e.g. for vehicle diagnosis (UDS, ISO 14229) or IP-over-CAN traffic."

... one sentence before.

Therefore I thought it could be removed.

Best regards,
Oliver

#3 lore raw
Quoted 10 lines · Oliver Hartkopp
Quoted 7 lines · Vincent Mailhol
Quoted 3 lines · Oliver Hartkopp

With the new ISO 15765-2:2024 release the former documentation and comments have to be reworked. This patch removes the ISO specification version/date where possible.

The patch also renames "classical CAN" into "CAN CC", which is fine but maybe add one sentence in the patch description for that.

Hm, IMO this is an editorial update without any new information.

OK. That was a nitpick. See this as notwithstanding, I am fine for the patch to be picked as-is.

Quoted 63 lines
Quoted 54 lines

Aside from that nitpick, one comment (see below). Meanwhile, I am giving my acknowledgement in advance:

Thank you.

Quoted 47 lines
---
  include/uapi/linux/can/isotp.h |  2 +-
  net/can/Kconfig                | 11 +++++------
  net/can/isotp.c                | 11 ++++++-----
  3 files changed, 12 insertions(+), 12 deletions(-)
include/uapi/linux/can/isotp.h +1 -1
index 6cde62371b6f..bd990917f7c4 100644
@@ -1,10 +1,10 @@
  /* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */
  /*
   * linux/can/isotp.h
   *
- * Definitions for isotp CAN sockets (ISO 15765-2:2016)
+ * Definitions for ISO 15765-2 CAN transport protocol sockets
   *
   * Copyright (c) 2020 Volkswagen Group Electronic Research
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
net/can/Kconfig +5 -2
index cb56be8e3862..af64a6f76458 100644
@@ -54,20 +54,19 @@ config CAN_GW
           by the netlink configuration interface known e.g. from iptables.
 
  source "net/can/j1939/Kconfig"
 
  config CAN_ISOTP
-       tristate "ISO 15765-2:2016 CAN transport protocol"
+       tristate "ISO 15765-2 CAN transport protocol"
         help
           CAN Transport Protocols offer support for segmented Point-to-Point
           communication between CAN nodes via two defined CAN Identifiers.
+         This protocol driver implements segmented data transfers for CAN CC
+         (aka Classical CAN, CAN 2.0B) and CAN FD frame types which were
+         introduced with ISO 15765-2:2016.
           As CAN frames can only transport a small amount of data bytes
-         (max. 8 bytes for 'classic' CAN and max. 64 bytes for CAN FD) this
+         (max. 8 bytes for CAN CC and max. 64 bytes for CAN FD) this
           segmentation is needed to transport longer Protocol Data Units (PDU)
           as needed e.g. for vehicle diagnosis (UDS, ISO 14229) or IP-over-CAN
           traffic.
Quoted 8 lines

net/can/Kconfig config CAN_GW · line 71

Quoted 4 lines
net/can/Kconfig +0 -4
-         This protocol driver implements data transfers according to
-         ISO 15765-2:2016 for 'classic' CAN and CAN FD frame types.
-         If you want to perform automotive vehicle diagnostic services (UDS),
-         say 'y'.

Not sure why that last sentence was removed. This is out of scope from this patch and I think this can be helpful for the audience not aware that UDS relies on ISO-TP. I suggest keeping that one.

Quoted 8 lines

This is a repetition of ...

"segmentation is needed to transport longer Protocol Data Units (PDU) as needed e.g. for vehicle diagnosis (UDS, ISO 14229) or IP-over-CAN traffic."

... one sentence before.

Therefore I thought it could be removed.

Oupsy, my deepest apologies, something did not click right in my head.

Sorry for the noise. Just in case, I am reiterating my previous message:

Yours sincerely,
Vincent Mailhol

Acked-by on v1 1/1
#4 lore raw
In reply to Oliver Hartkopp

Hello,

just one small observation below. Other that that (FWIW):

Quoted 35 lines · Oliver Hartkopp

With the new ISO 15765-2:2024 release the former documentation and comments have to be reworked. This patch removes the ISO specification version/date where possible.

---
 include/uapi/linux/can/isotp.h |  2 +-
 net/can/Kconfig                | 11 +++++------
 net/can/isotp.c                | 11 ++++++-----
 3 files changed, 12 insertions(+), 12 deletions(-)
include/uapi/linux/can/isotp.h +1 -1
index 6cde62371b6f..bd990917f7c4 100644
@@ -1,10 +1,10 @@
 /* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */
 /*
  * linux/can/isotp.h
  *
- * Definitions for isotp CAN sockets (ISO 15765-2:2016)
+ * Definitions for ISO 15765-2 CAN transport protocol sockets
  *
  * Copyright (c) 2020 Volkswagen Group Electronic Research
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
net/can/Kconfig +0 -0
index cb56be8e3862..af64a6f76458 100644
@@ -54,20 +54,19 @@ config CAN_GW
 	  by the netlink configuration interface known e.g. from iptables.
 
 source "net/can/j1939/Kconfig"

net/can/Kconfig config CAN_GW · line 65

Quoted 10 lines
net/can/Kconfig +4 -1
 
 config CAN_ISOTP
-	tristate "ISO 15765-2:2016 CAN transport protocol"
+	tristate "ISO 15765-2 CAN transport protocol"
 	help
 	  CAN Transport Protocols offer support for segmented Point-to-Point
 	  communication between CAN nodes via two defined CAN Identifiers.
+	  This protocol driver implements segmented data transfers for CAN CC
+	  (aka Classical CAN, CAN 2.0B) and CAN FD frame types which were
+	  introduced with ISO 15765-2:2016.

ISO 15765-2 also supports CAN2.0A networks, so I'd drop CAN 2.0B here.

Quoted 51 lines
net/can/Kconfig +1 -5
 	  As CAN frames can only transport a small amount of data bytes
-	  (max. 8 bytes for 'classic' CAN and max. 64 bytes for CAN FD) this
+	  (max. 8 bytes for CAN CC and max. 64 bytes for CAN FD) this
 	  segmentation is needed to transport longer Protocol Data Units (PDU)
 	  as needed e.g. for vehicle diagnosis (UDS, ISO 14229) or IP-over-CAN
 	  traffic.
-	  This protocol driver implements data transfers according to
-	  ISO 15765-2:2016 for 'classic' CAN and CAN FD frame types.
-	  If you want to perform automotive vehicle diagnostic services (UDS),
-	  say 'y'.
 
 endif
net/can/isotp.c +6 -5
index 25bac0fafc83..16046931542a 100644
@@ -70,25 +70,26 @@
 #include <linux/can/isotp.h>
 #include <linux/slab.h>
 #include <net/sock.h>
 #include <net/net_namespace.h>
 
-MODULE_DESCRIPTION("PF_CAN isotp 15765-2:2016 protocol");
+MODULE_DESCRIPTION("PF_CAN ISO 15765-2 transport protocol");
 MODULE_LICENSE("Dual BSD/GPL");
 MODULE_AUTHOR("Oliver Hartkopp <[email protected]>");
 MODULE_ALIAS("can-proto-6");
 
 #define ISOTP_MIN_NAMELEN CAN_REQUIRED_SIZE(struct sockaddr_can, can_addr.tp)
 
 #define SINGLE_MASK(id) (((id) & CAN_EFF_FLAG) ? \
 			 (CAN_EFF_MASK | CAN_EFF_FLAG | CAN_RTR_FLAG) : \
 			 (CAN_SFF_MASK | CAN_EFF_FLAG | CAN_RTR_FLAG))
 
-/* ISO 15765-2:2016 supports more than 4095 byte per ISO PDU as the FF_DL can
- * take full 32 bit values (4 Gbyte). We would need some good concept to handle
- * this between user space and kernel space. For now set the static buffer to
- * something about 8 kbyte to be able to test this new functionality.
+/* Since ISO 15765-2:2016 the CAN isotp protocol supports more than 4095
+ * byte per ISO PDU as the FF_DL can take full 32 bit values (4 Gbyte).
+ * We would need some good concept to handle this between user space and
+ * kernel space. For now set the static buffer to something about 8 kbyte
+ * to be able to test this new functionality.
  */
 #define DEFAULT_MAX_PDU_SIZE 8300
 
 /* maximum PDU size before ISO 15765-2:2016 extension was 4095 */
 #define MAX_12BIT_PDU_SIZE 4095
Signature · 1 line
2.39.2
maintainer Applied
#5 lore raw
In reply to Oliver Hartkopp
Quoted 5 lines · Oliver Hartkopp

With the new ISO 15765-2:2024 release the former documentation and comments have to be reworked. This patch removes the ISO specification version/date where possible.

Applied to linux-can-next.

regards,
Marc

Signature · 4 lines
Pengutronix e.K.                 | Marc Kleine-Budde          |
Embedded Linux                   | https://www.pengutronix.de |
Vertretung Nürnberg              | Phone: +49-5121-206917-129 |
Amtsgericht Hildesheim, HRA 2686 | Fax:   +49-5121-206917-9   |